- DB2 教程
- 首页
- DB2 - 简介
- DB2 - 服务器安装
- DB2 - 实例
- DB2 - 数据库
- DB2 - 缓冲池
- DB2 - 表空间
- DB2 - 存储组
- DB2 - 模式
- DB2 - 数据类型
- DB2 - 表
- DB2 - 别名
- DB2 - 约束
- DB2 - 索引
- DB2 - 触发器
- DB2 - 序列
- DB2 - 视图
- DB2 与 XML
- DB2 - 备份和恢复
- DB2 - 数据库安全
- DB2 - 角色
- DB2 - LDAP
- DB2 有用资源
- DB2 - 问答
- DB2 - 快速指南
- DB2 - 有用资源
- DB2 - 讨论
DB2 - 数据库
本章描述了创建、激活和停用数据库以及相关的语法。
数据库架构
数据库是由表、模式、缓冲池、日志、存储组和表空间共同工作以高效处理数据库操作的集合。
数据库目录
数据库目录是数据库的有组织的存储库。创建数据库时,所有关于数据库的详细信息都存储在数据库目录中,例如默认存储设备的详细信息、配置文件和临时表列表等。
分区全局目录在实例文件夹中创建。此目录包含与数据库相关的所有全局信息。此分区全局目录命名为 NODExxxx/SQLyyy,其中 xxxx 是数据分区号,yyy 是数据库令牌。
在分区全局目录中,创建成员特定目录。此目录包含本地数据库信息。成员特定目录命名为 MEMBERxxxx,其中 xxxx 是成员编号。DB2 Enterprise Server Edition 环境运行在单个成员上,并且只有一个成员特定目录。此成员特定目录唯一命名为 MEMBER0000。
分区全局目录
目录位置:<实例>/NODExxx/SQLxxx
分区全局目录包含如下列出的与数据库相关的文件。
- 全局死锁写入文件事件监控文件
- 表空间信息文件 [SQLSPCS.1, SQLSPCS.2]
- 存储组控制文件 [SQLSGF.1, SQLSGF.2]
- 临时表空间容器文件。[/存储路径/
/T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA] - 全局配置文件 [SQLDBCONF]
- 历史文件 [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
- 与日志记录相关的文件 [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
- 锁定文件 [SQLINSLK, SQLTMPLK]
- 自动存储容器
成员特定目录
目录位置:/NODExxxx/SQLxxxx/MEMBER0000
此目录包含
- 与数据库关联的对象
- 缓冲池信息文件 [SQLBP.1, SQLBP.2]
- 本地事件监控文件
- 与日志记录相关的文件 [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH]。
- 本地配置文件
- 死锁事件监控文件。对于 ESE 和分区数据库环境,详细的死锁事件监控文件存储在目录节点的数据库目录中。
创建数据库
您可以使用“CREATE DATABASE”命令在实例中创建数据库。所有数据库都是使用在创建实例时创建的默认存储组“IBMSTOGROUP”创建的。在 DB2 中,所有数据库表都存储在“表空间”中,表空间使用各自的存储组。
数据库的权限会自动设置为 PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA 和 SELECT],但是,如果存在 RESTRICTIVE 选项,则不会将权限授予 PUBLIC。
创建非限制性数据库
此命令用于创建非限制性数据库。
语法:[创建新数据库。‘database_name’表示要创建的新数据库名称。]
db2 create database <database name>
示例:[创建名为‘one’的新非限制性数据库]
db2 create database one
输出
DB20000I The CREATE DATABASE command completed successfully.
创建限制性数据库
调用此命令创建限制性数据库。
语法:[在下面的语法中,“db_name”表示数据库名称。]
db2 create database <db_name> restrictive
示例:[创建名为‘two’的新限制性数据库]
db2 create database two restrictive
使用不同的用户定义位置创建数据库
在不同的路径上使用默认存储组“IBMSTOGROUP”创建一个数据库。之前,您调用“create database”命令没有任何用户定义的位置来在特定位置存储或创建数据库。要使用用户定义的数据库位置创建数据库,请按照以下步骤操作
语法:[在下面的语法中,‘db_name’表示‘数据库名称’,‘data_location’表示必须在文件夹中存储数据的位置,‘db_path_location’表示‘data_location’的驱动器位置。]
db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'
示例:[创建名为‘four’的数据库,其中数据存储在‘data1’中,此文件夹存储在‘dbpath1’中]
db2 create database four on '/data1' dbpath on '/dbpath1'
查看本地或系统数据库目录文件
执行此命令以查看当前实例中可用的目录列表。
语法
db2 list database directory
示例
db2 list database directory
输出
System Database Directory Number of entries in the directory = 6 Database 1 entry: Database alias = FOUR Database name = FOUR Local database directory = /home/db2inst4/Desktop/dbpath Database release level = f.00 Comment = Directory entry type = Indirect Catalog database partition number = 0 Alternate server hostname = Alternate server port number = Database 2 entry: Database alias = SIX Database name = SIX Local database directory = /home/db2inst4 Database release level = f.00 Comment = Directory entry type = Indirect Catalog database partition number = 0 Alternate server hostname = Alternate server port number =
激活数据库
此命令启动特定数据库所需的所有服务,以便数据库可供应用程序使用。
语法:[‘db_name’表示数据库名称]
db2 activate db <db_name>
示例:[激活数据库‘one’]
db2 activate db one
停用数据库
使用此命令,您可以停止数据库服务。
语法
db2 deactivate db <db_name>
示例:[停用数据库‘one’]
db2 deactivate db one
连接到数据库
创建数据库后,要使用它,需要连接或启动数据库。
语法
db2 connect to <database name>
示例:[将数据库 one 连接到当前 CLI]
db2 connect to one
输出
Database Connection Information Database server = DB2/LINUXX8664 10.1.0 SQL authorization ID = DB2INST4 Local database alias = ONE
验证数据库是否为限制性数据库
要检查此数据库是否为限制性数据库,请使用以下语法
语法:[在以下语法中,‘db’表示数据库,‘cfg’表示配置,‘db_name’表示数据库名称]
db2 get db cfg for <db_name> | grep -i restrict
示例:[检查数据库‘one’是否受限]
db2 get db cfg for one | grep -i restrict
输出
Restrict access = NO
配置数据库管理器和数据库
实例配置(数据库管理器配置)存储在名为“db2system”的文件中,数据库相关配置存储在名为“SQLDBCON”的文件中。这些文件不能直接编辑。您可以使用调用 API 的工具编辑这些文件。使用命令行处理器,您可以使用这些命令。
数据库管理器配置参数
语法:[获取实例数据库管理器的信息]
db2 get database manager configuration或
db2 get dbm cfg
语法:[更新实例数据库管理器]
db2 update database manager configuration或
db2 update dbm cfg
语法:[重置以前的配置]
db2 reset database manager configuration或
db2 reset dbm cfg
数据库配置参数
语法:[获取数据库的信息]
db2 get database configuration或
db2 get db cfg
语法:[更新数据库配置]
db2 update database configuration或
db2 update db cfg
语法:[重置数据库配置中先前配置的值]
db2 reset database configuration或
db2 reset db cfg
语法:[检查当前活动数据库的大小]
db2 "call get_dbsize_info(?,?,?,-1)"
示例:[验证当前激活数据库的大小]
db2 "call get_dbsize_info(?,?,?,-1)"
输出
Value of output parameters -------------------------- Parameter Name : SNAPSHOTTIMESTAMP Parameter Value : 2014-07-02-10.27.15.556775 Parameter Name : DATABASESIZE Parameter Value : 105795584 Parameter Name : DATABASECAPACITY Parameter Value : 396784705536 Return Status = 0
估算数据库所需空间
要估算数据库的大小,必须考虑以下因素的贡献
- 系统目录表
- 用户表数据
- 长字段数据
- 大型对象 (LOB) 数据
- 索引空间
- 临时工作空间
- XML 数据
- 日志文件空间
- 本地数据库目录
- 系统文件
检查数据库权限
您可以使用以下语法检查在非限制性数据库上授予 PUBLIC 的数据库权限。
步骤 1:使用实例的认证用户 ID 和密码连接到数据库。
语法:[使用用户名和密码连接到数据库]
db2 connect to <db_name> user <userid> using <password>
示例:[使用用户 ID ‘db2inst4’ 和密码 ‘db2inst4’ 连接“one”数据库]
db2 connect to one user db2inst4 using db2inst4
输出
Database Connection Information Database server = DB2/LINUXX8664 10.1.0 SQL authorization ID = DB2INST4 Local database alias = ONE
步骤 2:验证数据库的权限。
语法:[以下语法显示当前数据库的权限服务结果]
db2 "select substr(authority,1,25) as authority, d_user, d_group, d_public, role_user, role_group, role_public,d_role from table( sysproc.auth_list_authorities_for_authid ('public','g'))as t order by authority"
示例
db2 "select substr(authority,1,25) as authority, d_user, d_group, d_public, role_user, role_group, role_public,d_role from table( sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t order by authority"
输出
AUTHORITY D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE ------------------------- ------ ------- -------- --------- ---------- ----------- ------ ACCESSCTRL * * N * * N * BINDADD * * Y * * N * CONNECT * * Y * * N * CREATETAB * * Y * * N * CREATE_EXTERNAL_ROUTINE * * N * * N * CREATE_NOT_FENCED_ROUTINE * * N * * N * CREATE_SECURE_OBJECT * * N * * N * DATAACCESS * * N * * N * DBADM * * N * * N * EXPLAIN * * N * * N * IMPLICIT_SCHEMA * * Y * * N * LOAD * * N * * N * QUIESCE_CONNECT * * N * * N * SECADM * * N * * N * SQLADM * * N * * N * SYSADM * * * * * * * SYSCTRL * * * * * * * SYSMAINT * * * * * * * SYSMON * * * * * * * WLMADM * * N * * N * 20 record(s) selected.
删除数据库
使用 Drop 命令,您可以从实例数据库目录中删除数据库。此命令可以删除其所有对象、表、空间、容器和关联文件。
语法:[从实例中删除任何数据库]
db2 drop database <db_name>
示例:[从实例中删除‘six’数据库]
db2 drop database six
输出
DB20000I The DROP DATABASE command completed successfully