📅  最后修改于: 2020-11-28 13:19:19             🧑  作者: Mango
本章介绍使用关联的语法创建,激活和停用数据库。
数据库是表,模式,缓冲池,日志,存储组和表空间的集合,它们共同工作以有效地处理数据库操作。
数据库目录是数据库的有组织的存储库。创建数据库时,有关数据库的所有详细信息都存储在数据库目录中,例如默认存储设备,配置文件和临时表列表的详细信息等。
在实例文件夹中创建分区全局目录。该目录包含与数据库有关的所有全局信息。此分区的全局目录名为NODExxxx / SQLyyy,其中xxxx是数据分区号,而yyy是数据库令牌。
在partition-global目录中,将创建一个特定于成员的目录。此目录包含本地数据库信息。特定于成员的目录名为MEMBERxxxx,其中xxxx是成员编号。 DB2 Enterprise Server Edition环境在单个成员上运行,并且只有一个成员特定目录。该成员特定的目录唯一地命名为MEMBER0000。
目录位置:
全局分区目录包含与数据库相关的文件,如下所示。
目录位置:/ NODExxxx / SQLxxxx / MEMBER0000
该目录包含:
您可以使用“ CREATE DATABASE”命令在实例中创建数据库。使用默认存储组“ IBMSTOGROUP”创建所有数据库,该存储组是在创建实例时创建的。在DB2中,所有数据库表都存储在“表空间”中,它们使用它们各自的存储组。
数据库的特权将自动设置为PUBLIC [CREATETAB,BINDADD,CONNECT,IMPLICIT_SCHEMA和SELECT],但是,如果存在RESTRICTIVE选项,则不会将特权授予PUBLIC。
此命令用于创建非限制性数据库。
语法:[创建一个新的数据库。 “ database_name”表示您要创建的新数据库名称。
db2 create database
示例:[创建一个名称为“ one”的新非限制性数据库]
db2 create database one
输出:
DB20000I The CREATE DATABASE command completed successfully.
在调用此命令时将创建限制性数据库。
语法:[在以下语法中,“ db_name”表示数据库名称。]
db2 create database restrictive
示例:[创建名称为“ two”的新限制性数据库]
db2 create database two restrictive
创建一个在不同路径上具有缺省存储组“ IBMSTOGROUP”的数据库。之前,您在没有任何用户定义位置的情况下调用了“创建数据库”命令,以在特定位置存储或创建数据库。要使用用户定义的数据库位置创建数据库,请遵循以下过程:
语法:[在下面的语法中,“ db_name”指示“数据库名称”,“ data_location”指示必须在文件夹中存储数据的位置,“ db_path_location”指示“ data_location”的驱动程序位置。]
db2 create database '' on '' dbpath on ''
示例:[要创建名为“ 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
示例:[激活数据库“一个”]
db2 activate db one
使用此命令,可以停止数据库服务。
句法:
db2 deactivate db
示例:[停用数据库“一个”]
db2 deactivate db one
创建数据库后,要使用它,需要连接或启动数据库。
句法:
db2 connect to
示例:[将数据库一连接到当前的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 | grep -i restrict
示例:[检查“一个”数据库是否受到限制]
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授予了哪些数据库权限。
步骤1 :使用身份验证用户ID和实例密码连接到数据库。
语法:[使用用户名和密码连接到数据库]
db2 connect to user using
示例:[使用用户标识“ 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
示例:[从实例中删除“六个”数据库]
db2 drop database six
输出:
DB20000I The DROP DATABASE command completed successfully