0

我有一个 DB2 9.7 数据库。我已经定义了任何特定的表空间,所以所有表都转到 USERSPACE1。

现在,我创建了两个新表空间,并使用 IN 子句为这两个新表空间中的每一个分配了两个表。但是,现在所有其他表也都进入了两个新表空间之一,即使我没有为其余的表指定它!

我怎样才能让其余的表转到以前的 USERSPACE1 表空间,而不为每个表显式定义它?谢谢。

4

1 回答 1

0

当没有指定表空间子句时,DB2 根据下一个算法选择表空间:

如果未指定此子句,则数据库管理器选择一个表空间(从数据库中现有表空间的集合中)具有最小的足够页大小并且行大小在其所在页大小的行大小限制之内。语句的授权 ID 具有 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 可以选择也可以不选择。最好是标明表空间,或者不允许大家在其他表空间中创建表。

于 2014-03-24T10:52:14.407 回答