Db2 简明教程
DB2 - Databases
本章介绍如何使用相关语法创建、激活和停用数据库。
Database directory
数据库目录是数据库的有序存储库。创建数据库时,数据库的所有详细信息都存储在数据库目录中,例如默认存储设备、配置文件和临时表列表等的详细信息。
分区全局目录在实例文件夹中创建。此目录包含与数据库相关的所有全局信息。此分区全局目录命名为 NODExxxx/SQLyyy,其中 xxxx 为数据分区号,yyy 为数据库令牌。
在分区全局目录中,会创建一个面向成员的目录。此目录包含本地数据库信息。面向成员的目录命名为 MEMBERxxxx,其中 xxxx 是成员号。DB2 Enterprise Server Edition 环境在单个成员上运行,并且仅有一个面向成员的目录。此面向成员的目录被唯一命名为 MEMBER0000。
Partitioned global directory
目录位置:<实例>/NODExxx/SQLxxx
分区全局目录包含如下列出的与数据库相关联的文件。
-
全局死锁写入文件事件监视文件
-
表空间信息文件 [SQLSPCS.1、SQLSPCS.2]
-
存储组控制文件 [SQLSGF.1、SQLSGF.2]
-
临时表空间容器文件。[/storage path//T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
-
Global Configuration file [SQLDBCONF]
-
历史文件 [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
-
Logging-related files [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
-
Locking files [SQLINSLK, SQLTMPLK]
-
Automatic Storage containers
Member specific directory
目录位置:/NODExxxx/SQLxxxx/MEMBER0000
此目录包含:
-
Objects associated with databases
-
缓冲池信息文件 [SQLBP.1, SQLBP.2]
-
Local event monitoring files
-
与日志记录相关联的文件 [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH]
-
Local configuration files
-
死锁事件监视文件。在 ESE 和分区数据库环境中,详细死锁事件监视文件存储在目录节点的数据库目录中。
Creating database
您可以使用 CREATE DATABASE 命令在实例中创建数据库。所有数据库均使用在创建实例时创建的“IBMSTOGROUP”默认存储组创建。在 DB2 中,所有数据库表都存储在“表空间”中,后者使用各自的存储组。
数据库权限被自动设置为 PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA 和 SELECT],但是,如果存在 RESTRICTIVE 选项,则不会以 PUBLIC 授予权限。
Creating non-restrictive database
此命令用于创建非限制性数据库。
Syntax : [要在创建新数据库。'database_name' 表示要创建的新数据库名称。]
db2 create database <database name>
Example : [要创建名为 ‘one’ 的新非限制性数据库]
db2 create database one
Output:
DB20000I The CREATE DATABASE command completed successfully.
Creating restrictive database
调用此命令后将创建限制性数据库。
Syntax : [在下面的语法中,“db_name” 表示数据库名称。]
db2 create database <db_name> restrictive
Example : [要创建名为 “two” 的新限制性数据库]
db2 create database two restrictive
Creating database with different user defined location
在不同路径上使用“IBMSTOGROUP”默认存储组创建数据库。先前,您调用“create database”命令时没有指定用户定义的位置来存储或创建特定位置的数据库。若要使用用户定义的数据库位置创建数据库,请按照以下步骤操作:
Syntax : [在以下语法中,“db_name” 表示“database name” , “data_location” 表示必须将数据存储在哪些文件夹中, “db_path_location” 表示 “data_location” 的驱动程序位置。]
db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'
Example : [要创建名为 “four” 的数据库,其中数据存储在 “data1” 中,并且此文件夹存储在 “dbpath1” 中]
db2 create database four on '/data1' dbpath on '/dbpath1'
Viewing local or system database directory files
执行此命令以查看当前实例中提供目录列表。
Syntax:
db2 list database directory
Example:
db2 list database directory
Output:
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 =
Activating database
此命令启动特定数据库所需的所有服务,这样应用程序才可使用此数据库。
Syntax :[“db_name” 表示数据库名称]
db2 activate db <db_name>
Example : [激活数据库“one”]
db2 activate db one
Deactivating database
使用此命令,您可以停止数据库服务。
Syntax:
db2 deactivate db <db_name>
Example : [停用数据库“one”]
db2 deactivate db one
Connecting to database
创建数据库后,要投入使用,需要连接或启动数据库。
Syntax:
db2 connect to <database name>
Example : [将数据库 one 连接到当前 CLI]
db2 connect to one
Output:
Database Connection Information
Database server = DB2/LINUXX8664 10.1.0
SQL authorization ID = DB2INST4
Local database alias = ONE
Verifying if database is restrictive
要检查此数据库是否有限制,以下是语法:
Syntax : [在以下语法中,“db” 表示数据库,“cfg” 表示配置,“db_name” 表示数据库名]
db2 get db cfg for <db_name> | grep -i restrict
Example : [要检查数据库“one”是否有限制]
db2 get db cfg for one | grep -i restrict
Output:
Restrict access = NO
Configuring the database manager and the database
实例配置(Database Manager 配置)存储在名为“db2system”的文件中,而数据库相关配置则存储在名为“SQLDBCON”的文件中。这些文件无法直接编辑。您可以使用调用 API 的工具编辑这些文件。使用命令行处理器,您可以使用这些命令。
Database Manager Configuration Parameters
Syntax : [获取实例数据库管理程序的信息]
db2 get database manager configuration
db2 get dbm cfg
Syntax : [更新实例数据库管理程序]
db2 update database manager configuration
db2 update dbm cfg
Syntax : [重置先前的配置]
db2 reset database manager configuration
db2 reset dbm cfg
Database Configuration Parameters
Syntax : [获取数据库的信息]
db2 get database configuration
db2 get db cfg
Syntax : [更新数据库配置]
db2 update database configuration
db2 update db cfg
Syntax : [重置数据库配置中先前配置的值]
db2 reset database configuration
db2 reset db cfg
Syntax : [检查当前活动数据库的大小]
db2 "call get_dbsize_info(?,?,?,-1)"
Example : [确认当前激活数据库的大小]
db2 "call get_dbsize_info(?,?,?,-1)"
Output:
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
Estimating space required for database
要估计数据库的大小,必须考虑以下因素的贡献:
-
System Catalog Tables
-
User Table Data
-
Long Field Data
-
Large Object (LOB) Data
-
Index Space
-
Temporary Work Space
-
XML data
-
Log file space
-
Local database directory
-
System files
Checking database authorities
可以使用以下语法来检查授予公共用户非限制性数据库的哪些数据库权限。
Step 1 :使用认证用户 Id 和实例密码连接到数据库。
Syntax :[使用用户名和密码连接到数据库]
db2 connect to <db_name> user <userid> using <password>
Example :[使用用户 Id“db2inst4”和密码“db2inst4”连接“one”数据库]
db2 connect to one user db2inst4 using db2inst4
Output:
Database Connection Information
Database server = DB2/LINUXX8664 10.1.0
SQL authorization ID = DB2INST4
Local database alias = ONE
Step2 :验证数据库的权限。
Syntax :[下面的语法显示了当前数据库的权限服务的结果]
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"
Example:
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"
Output:
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.