DB2 中模式的默认表空间

Posted

技术标签:

【中文标题】DB2 中模式的默认表空间【英文标题】:default tablespace for schema in DB2 【发布时间】:2015-01-20 14:18:47 【问题描述】:

我们的架构有一些 DDL。这些 DDL 在给定的表空间中创建表和索引。比如:

    CREATE TABLE mySchema.myTable
(
    someField1              CHAR(2)  NOT NULL ,
    someField2            VARCHAR(70)  NOT NULL 
)
        IN MY_TBSPC
        INDEX IN MY_TBSPC;

我们想重用这些 DDL 来使用 APACHE DERBY 运行一些集成测试。问题是 DERBY 不接受这样的语法。有没有办法为表和索引定义一种默认的表空间,所以我们可以去掉这个'IN TABLESPACE'语句。

【问题讨论】:

【参考方案1】:

在 DB2 中定义“默认”表空间没有确定的方法(我假设我们在这里处理 DB2 for LUW)。如果CREATE TABLE 语句中未明确指出表空间,则数据库管理器将为表数据选择第一个具有您有权使用的合适页面大小的表空间,并且索引将存储在与数据相同的表空间中。

这意味着如果您只有一个用户表空间,它将始终用于数据和索引,因此在某种程度上它成为默认值。但是,如果您有多个不同页面大小的表空间,您最终可能会在不同的表空间中使用表(及其索引)。

【讨论】:

它选择表空间的方式是www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/… "如果未指定此子句,则数据库管理器(从数据库中现有表空间的集合中)选择具有最小足够页大小且行大小在行内的表空间语句的授权 ID 具有 USE 权限的页面大小限制。" "如果有多个表空间符合条件,请按照以下优先顺序选择表空间,具体取决于语句的授权 ID 如何被授予对表空间的 USE 特权:授权 ID 一个角色授权 ID 被授予的组 授权 ID 所属的组 授权 ID 所属的组被授予的角色 PUBLIC 被授予 PUBLIC 的角色"

以上是关于DB2 中模式的默认表空间的主要内容,如果未能解决你的问题,请参考以下文章

如何在DB2建表空间

DB2 表空间类型

如何查看表空间容量

DB2 表空间监控

DB2 表空间监控

在 Z/OS 上的 db2 的 JDBC URL 中设置默认表空间?