【发布时间】:2014-03-24 07:39:26
【问题描述】:
我有一个 DB2 9.7 数据库。我已经定义了任何特定的表空间,所以所有表都转到 USERSPACE1。
现在我创建了两个新表空间,并使用 IN 子句为这两个新表空间中的每一个分配了两个表。但是,现在所有其他表也都进入了两个新表空间之一,即使我没有为其余的表指定它!
如何在不为每个表显式定义的情况下让其余表转到前一个 USERSPACE1 表空间?谢谢。
【问题讨论】:
标签: db2 tablespace db2-luw
我有一个 DB2 9.7 数据库。我已经定义了任何特定的表空间,所以所有表都转到 USERSPACE1。
现在我创建了两个新表空间,并使用 IN 子句为这两个新表空间中的每一个分配了两个表。但是,现在所有其他表也都进入了两个新表空间之一,即使我没有为其余的表指定它!
如何在不为每个表显式定义的情况下让其余表转到前一个 USERSPACE1 表空间?谢谢。
【问题讨论】:
标签: db2 tablespace db2-luw
当没有指定表空间子句时,DB2 会根据下一个算法选择表空间:
如果未指定此子句,则数据库管理器选择一个表 空间(来自数据库中现有表空间的集合)与 最小的足够页面大小并且行大小在行内 页面大小限制,授权ID所在的页面大小 语句具有 USE 权限。
如果有多个表空间符合条件, 按照以下优先顺序选择表空间,具体取决于 语句的授权 ID 如何被授予 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 可以选择也可以不选择,具体取决于许多参数。最好是标明表空间,或者不允许大家在其他表空间创建表。
【讨论】: