跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

DB2 V9 数据库管理:数据放置与模式详解

综述由AI生成DB2 V9 数据库管理涵盖数据放置、自动存储及模式应用。内容包含数据库创建流程、系统目录结构、默认表空间说明,以及自动存储路径的配置方法。同时解析了模式(Schema)的定义、系统预置模式及使用方式,并提供查看表空间状态的命令示例,适合数据库管理员构建基础架构时参考。

魔尊发布于 2025/1/19更新于 2026/6/1022 浏览
DB2 V9 数据库管理:数据放置与模式详解

一、创建数据库

1. 数据库目录

对于数据库管理器的每个实例,都存在一个系统数据库目录文件。在该文件中,每个编目到该实例的数据库都对应着一个条目。当发出 CREATE DATABASE 命令时,数据库会自动进行编目,也可以通过 CATALOG DATABASE 命令手动编目。

此外,在定义了数据库的每个驱动器或路径中,都有一个本地数据库目录文件。在这个文件中,对于可从这个位置访问的每个数据库,都有一个条目。

2. 创建数据库

创建一个数据库时,DB2 会执行以下任务:

  • 设置数据库所需的所有系统编目表
  • 为数据库恢复日志分配空间
  • 创建数据库配置文件和默认的值集
  • 将数据库实用程序绑定到数据库

可以使用 CREATE DATABASE 命令来创建数据库。创建时可指定如下参数:

  • 存储路径
  • 用于编目分区的数据库分区号
  • 用于创建数据库的驱动器或路径
  • 代码集和国家
  • 排序序列
  • 默认的盘区大小
  • 是否应该自动配置数据库
  • CATALOG、TEMPORARY 和 USERSPACE1 表空间的表空间定义

CREATE DATABASE 命令会创建三个默认的表空间:

  • SYSCATSPACE:用于系统编目表。该表空间不能被删除。
  • TEMPSPACE1:用于系统创建的临时表。当创建了另一个临时表空间时,可删除此表空间。
  • USERSPACE1:用于用户创建对象的默认表空间。当创建了另一个用户创建的表空间时,可删除此表空间。

3. 目录结构

取决于操作系统,CREATE DATABASE 命令允许指定用于在其中创建数据库的驱动器或目录。如果没有指定驱动器或目录,那么数据库就创建在 DFTDBPATH 实例(数据库管理器)配置参数所指定的路径中。如果该参数也未设定,则数据库创建在执行命令时所在的驱动器或目录上。

CREATE DATABASE 命令会创建一系列的子目录。第一个子目录按被创建数据库所在实例的实例所有者来命名。在这个子目录下,DB2 创建一个目录,以表明该数据库被创建在哪个数据库分区上。

对于非分区数据库,该目录为 NODE0000。对于分区数据库,该目录将被命名为 NODExxxx,其中 xxxx 是一个四位数的数据库实例的分区号,这个分区号在 db2nodes.cfg 文件中指定。例如,如果分区号为 43,那么该目录就是 NODE0043。

在 Windows 中,实例并没有真正的实例所有者,所以这里将使用实例的名称(例如 DB2)代替实例所有者的 ID。

由于在同一个驱动器或目录中可以创建不止一个数据库,因此每个数据库必须有其惟一的子目录。在 NODExxxx 目录下,对于在该驱动器或目录中创建的每个数据库,都有一个 SQLxxxxx 目录。

默认情况下:

  • 系统编目表空间(SYSCATSPACE)将使用目录 SQLT0000.0
  • 系统临时表空间(TEMPSPACE1)将使用目录 SQLT0001.0
  • 默认用户表空间(USERSPACE1)将使用目录 SQLT0002.0

列出默认实例下的所有数据库可使用以下命令:

db2 list db directory

二、自动存储

1. 概述

自动存储(Automatic Storage)是 DB2 V9 中的新特性,它允许为一个数据库指定一个或多个存储路径。当您创建表空间时,DB2 自动将表空间放在指定的存储路径上。在创建数据库时,可以为之启用或配置自动存储。

启用自动存储的命令如下:

CREATE DATABASE db_name AUTOMATIC STORAGE YES

或者指定路径:

CREATE DATABASE db_name ON db_path1, db_path2

还可以使用 ADD STORAGE 参数为设置了自动存储的数据库添加附加的存储路径:

ALTER DATABASE db_name ADD STORAGE ON db_path3

2. 使用自动存储

一旦为数据库设置了自动存储,就可以使用这种机制来创建表空间。您可以在数据库中创建一个表空间(在连接到数据库之后),如下所示:

CREATE TABLESPACE ts_name

或者,您可以创建一个表空间,并指定它的初始大小和增长特征:

CREATE TABLESPACE ts_name
    INITIALSIZE 10M
    INCREASESIZE 10M
    MAXSIZE 100M

在这个例子中,表空间初始大小为 10MB,当表空间接近大小限制时,DB2 每次自动将表空间扩大 10MB,直到表空间达到 100MB 的最大值。

如果数据库没有设置自动存储,那么,如果您创建一个表空间并指定它的存储,则仍然可以为之使用自动存储:

CREATE TABLESPACE ts_name
    MANAGED BY AUTOMATIC STORAGE

三、使用模式

1. 什么是模式?

模式(Schema)是用于在数据库中创建的数据库对象的一个高级限定符。它是数据库对象,例如表、视图、索引或触发器的一个集合。它提供了数据库对象的一个逻辑分类。

除了将数据组织到表中外,将表和其他相关对象组织在一起同样能带来好处。为此,可以使用 CREATE SCHEMA 命令来定义一个模式。关于模式的信息存储在您所连接的数据库的系统编目表中。当创建其他对象时,可以将它们放在这个模式中。

2. 系统模式

对于每个数据库,都会创建一组系统模式,并将它们放在 SYSCATSPACE 表空间中:

  • SYSIBM:基本系统编目。不建议直接访问它。
  • SYSCAT:这种模式上的 SELECT 权限被授给 PUBLIC。只读编目视图。建议通过它来获得编目信息。
  • SYSSTAT:可更新编目视图——会影响优化器。
  • SYSFUN:用户定义函数。

3. DB2 中如何使用模式?

使用模式来完全限定一个表或其他对象名,如下所示:

schemaname.tablename

您可以有多个具有相同名称、不同模式名称的表。因而,表 user1.staff 与表 user2.staff 是不同的。因此,您可以使用模式在 DB2 数据库中创建逻辑数据库。

为创建一个模式,可使用 CREATE SCHEMA 命令。

4. 谁可以使用模式?

当您可以创建一个模式时,就可以使用 AUTHORIZATION 关键字指定模式的所有者;否则,执行 CREATE SCHEMA 语句的授权 ID 将成为模式的所有者。同时,还可以将模式上的特权授给用户或组。

当有了一个模式时,模式的所有者可以将模式上的 CREATE_IN 特权授给其他用户或组。

5. 在创建对象时指定模式

可以像下面这样显式地为一个对象指定模式名:

CREATE TABLE DWAINE.table1 (c1 INT, c2 INT)

如果用户 DWAINE 连接到数据库 SAMPLE,并发出以下语句:

CREATE TABLE t2 (c1 INT)

这样将创建模式 DWAINE(只要用户 DWAINE 不撤销 IMPLICIT_SCHEMA),同时还在数据库中创建表 t2。

用于连接到数据库的 ID 被称作授权 ID。

6. 使用 DML 命令时指定模式

当在数据库对象上使用 DML 命令(例如 SELECT、INSERT、UPDATE、DELETE)时:

  • 可以在对象名上显式地指定对象的模式,例如 schema1.table1
  • 可以使用 SET CURRENT SCHEMA 或 SET CURRENT SQLID 命令指定对象的模式
  • 如果没有显式地指定对象的模式,那么对象的模式将被设为当前的授权 ID

例如,如果用户 DWAINE 连接到数据库 SAMPLE 并发出以下语句:

SELECT * FROM t2

如果这个表存在的话,则该语句将选择 DWAINE.T2。如果这个表不存在,那么将返回一个错误。

四、表空间状态

1. 确定一个表空间的状态

为发现一个数据库中的表空间的状态,可以使用命令:

LIST TABLESPACES SHOW DETAIL

2. 表空间状态

一个表空间可以有多种不同的状态,具体表现视数据库运行情况而定。通常可以通过上述命令查看详细的状态信息,以便进行维护和管理。

目录

  1. 一、创建数据库
  2. 1. 数据库目录
  3. 2. 创建数据库
  4. 3. 目录结构
  5. 二、自动存储
  6. 1. 概述
  7. 2. 使用自动存储
  8. 三、使用模式
  9. 1. 什么是模式?
  10. 2. 系统模式
  11. 3. DB2 中如何使用模式?
  12. 4. 谁可以使用模式?
  13. 5. 在创建对象时指定模式
  14. 6. 使用 DML 命令时指定模式
  15. 四、表空间状态
  16. 1. 确定一个表空间的状态
  17. 2. 表空间状态
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 【论文阅读 | CVPR 2024 | Fusion-Mamba :用于跨模态目标检测】
  • ROS2 无人机全栈技术解析:从飞控集成到场景落地
  • CVPR2025 DEIM 目标检测模型实战:从环境配置到训练推理全流程
  • Spring Boot 控制层参数绑定 @RequestPart 注解详解
  • 华为昇腾 910B 使用 LLaMA-Factory 微调 Qwen3.5-32B 模型指南
  • Linux diff 与 patch 命令实战指南
  • Python-Chess 实战指南:构建专业级象棋编程环境
  • Mac mini M4 本地部署 OpenClaw + Ollama 接入飞书机器人实战
  • 字节开源 Hyper-SD:Stable Diffusion 1 步高清加速模型详解
  • GitHub 教育优惠申请及 Copilot Pro 开通指南
  • 基于 PSO 与 DWA 融合的无人机三维动态避障路径规划及 Matlab 实现
  • 开源大模型文件后缀含义与量化选型指南
  • 企业微信 CLI 开源:集成 AI Agent 实现消息、日程与文档自动化
  • FPGA 调试:PCIe XDMA 链路不通使用 LTSSM 定位问题
  • AI 时代重读《人人都是产品经理》:核心内核与落地实践
  • Vue 核心语法与原理实战指南
  • Spring Boot RESTful 接口开发实战指南
  • AI 大模型应用数据中心建设与运维管理
  • 使用 JuiceSSH 和 cpolar 实现无公网 IP 远程连接 Linux
  • Linux 内核设备内存迁移机制:SVM 核心基础设施

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online