
- 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