数据库体系结构
数据库是表,模式,缓冲池,日志,存储组和表空间合作有效地处理数据库操作的集合。
数据库目录有组织的存储数据库。当创建一个数据库,所有有关数据库的详细信息存储在一个数据库目录,如默认存储设备,配置文件和临时表清单等详细信息
分区全局目录是在实例文件夹中创建。该目录包含关于数据库中的所有全局信息。这个分区全局目录被命名为NODExxxx/ SQLyyy,其中xxxx是数据分区号,yyy是数据库令牌。
在分区全局目录,成员特定的目录创建。该目录包含本地数据库的信息。会员专用目录被命名为MEMBERxxxx其中xxxx是一个成员号。 DB2企业服务器版环境中运行在单一的成员,只有一个成员的具体目录。这个成员的特定目录唯一命名为MEMBER0000。
目录位置:<instance>/NODExxx/SQLxxx
分区全局目录包含下面列出的数据库相关的文件。
目录位置: /NODExxxx/SQLxxxx/MEMBER0000
该目录包含:
可以创建实例的数据库使用“CREATE DATABASE”命令。所有数据库都使用默认的存储组“IBMSTOGROUP”,这是在创建实例时创建创建。在DB2中,所有的数据库表都存储在“tablespace”,它利用各自的存储组。
该权限的数据库被自动设置为PUBLIC[CREATETAB,BINDADD,CONNECT,IMPLICIT_SCHEMA,并选择],但是,如果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>
示例: [连接数据库到当前的一个 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
以估计数据库的大小,下列因素的贡献必须考虑:
可以使用下面的语法检查的数据库认证对非限制数据库授予PUBLIC。
第一步:验证用户名和实例的密码连接到数据库。
语法:[连接到数据库的用户名和密码]
db2 connect to <db_name> user <userid> using <password>
例如:为了连接“one”数据库,用户ID'db2inst4'和密码'db2inst4']
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
第二步:验证数据库的权限。
语法:[下面的语法显示认证服务,为当前数据库的结果]
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