我有一个DB2 9.7数据库。我已经定义了任何特定的表空间,因此所有表都转到了USERSPACE1。
现在我创建了两个新的表空间,并使用IN子句为两个新表空间中的每一个分配两个表。但是,现在所有其他表也会转到两个新表空间中的一个,即使我没有为其余表指定它!
如何在不为每个表明确定义的情况下,将其余表转到上一个USERSPACE1表空间?感谢。
答案 0 :(得分:0)
当没有指示tablespace子句时,DB2根据下一个算法选择表空间:
如果未指定此子句,数据库管理器将选择一个表 空间(来自数据库中现有表空间的集合)与 最小的页面大小以及行大小在行内的位置 授权标识的页面大小的大小限制 声明具有USE特权。
如果有多个表空间符合条件, 根据以下优先顺序选择表空间 如何为该语句的授权标识授予USE特权 表空间:
1. The authorization ID 2. A role to which the authorization ID is granted 3. A group to which the authorization ID belongs 4. A role to which a group the authorization ID belongs is granted 5. PUBLIC 6. A role to which PUBLIC is granted
如果仍有多个表空间符合条件,则最终选择 由数据库管理员。
如果出现以下情况,表空间的确定可能会改变:
Table spaces are dropped or created USE privileges are granted or revoked
http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0000927.html
如您所见,根据许多参数,可以选择或不能选择表空间USERSPACE1。最好的方法是指示表空间,或者不允许每个人在其他表空间中创建表。