一 數據控制語言(DCL)
1.GRANT語句
使用 GRANT 語句可以向單個用戶或組顯式授予權限和特權,授權對象包括數據庫、 表空間、表、視圖、索引、包和模式。
GRANT 的語法如下:
GRANT privilege ON object-type object-name TO {USER|GROUP|PUBLIC} authorization-name WITH GRANT OPTION
PUBLIC 關鍵字表示將特權授予所有用戶。 WITH GRANT OPTION 允許被授權的對象進一步將權限授予其他用戶。
2.REVOKE語句
使用 REVOKE 語句可以顯式撤銷單個用戶或組的權限和特權,撤銷權限的對象包括數 據庫、表空間、表、視圖、索引、包和模式。
REVOKE 的語法如下:
REVOKE privilege ON object-type object-name FROM {USER|GROUP|PUBLIC} authorization-name
PUBLIC 關鍵字表示將撤銷所有用戶的特權。
二 數據定義語言(DDL)
1.CREATE語句
CREATE 語句用于創建數據庫對象,包括:
-
數據庫(DATABASE)
-
表(Table)
-
表空間(Table Space)
-
觸發器(Trigger)
-
視圖(View)
-
別名(Alias)
-
緩沖池(Buffer Pool)
-
函數(Function)
-
索引(Index) ......
每當用戶創建數據庫對象時,都會更新系統目錄。如下所示是一個 CREATE 語句的示例,建立一張表:
CREATE TABLE org( depnum SMALLINT NOT NULL, depname VARCHAR(14), manager SMALLINT, division VARCHAR(10), location VARCHAR(13))
這條語句創建了一個 5 列的表,表名為 org。粗體小寫字部分表示每個列的列名,非粗 體大寫字部分表示對應的數據類型。
2.DECLARE語句
DECLARE 語句和 CREATE 語句是一樣的,只有一點例外,用它所創建的是只能在數 據庫連接期間存在的臨時表。當要用到中間結果時,臨時表是十分有用的。同任何其他表 一樣,聲明過的表可以被引用,也可以被修改或刪除。表是唯一可以被聲明的對象。當用 戶聲明臨時表時,系統目錄不會被更新。可以使用 DECLARE GLOBAL TEMPORARY TABLE 語句來聲明臨時表,如:
DECLARE GLOBAL TEMPORARY TABLE session.temp1LIKE employeeON COMMIT PRESERVE ROWSNOT LOGGED IN mytempspace
在這個示例中,DECLARE GLOBAL TEMPORARY TABLE 語句用來聲明一個臨時表, 表名為 temp1,位于用戶現有的一個名為 mytempspace 的臨時表空間中。這張表的列名和 定義同 employee 一樣。每當處理 COMMIT 語句時,臨時表中的行就會被保留下來(不會 被刪除)。最后,對臨時表所做的更改不會記入日志。
3.ALTER語句
ALTER 語句可以用來改變現有數據庫對象的一些特性,包括:
-
數據庫(DATABASE)
-
表(Table)
-
表空間(Table Space)
-
觸發器(Trigger)
-
視圖(View)
-
別名(Alias)
-
緩沖池(Buffer Pool)
-
函數(Function)
-
索引(Index) ......
注意:不可以修改索引,如想要修改索引,就必須刪除它然后用不同的定義創建新的索引。
4.DROP語句
DROP 語句可刪除任何 CREATE 或 DECLARE 語句所創建的對象。DROP 語句將在刪 除數據庫對象的同時也刪除系統目錄中關于該對象的定義。由于數據庫對象之間可能存在 某些依賴關系,所以刪除對象可能會使有關的對象變成無效的狀態。
DECLARE GLOBAL TEMPORARY TABLE session.temp1LIKE employeeON COMMIT PRESERVE ROWSNOT LOGGED IN mytempspace
Buffer pool
Buffer pool 也稱為虛擬 Buffer pools(緩沖池),是 Table Space 或 Index 的 pages 的臨時 虛擬存儲區域,實際位于 DBM1 地址空間的 2G 線上區域。DB2 通過定義 Buffer pool 來降 低 I/O 成本的。DB2 在 Buffer pool 中存放最近訪問過的表和索引頁面,當應用程序需要訪 問數據時,如果該數據行對應的頁面存放在 Buffer pool 中就可以避免從磁盤上讀取,減少 了物理 I/O 的次數,能夠顯著提高性能。
DB2 提供下列緩沖池:
- 50 個 4KB 頁面的緩沖池(命名從 BP0 到 BP49)。
- 10 個 8KB 頁面的緩沖池(命名從 BP8K0 到 BP8K9)。
- 10 個 16KB 頁面的緩沖池(命名從 BP16K0 到 BP16K9)。
- 10 個 32KB 頁面的緩沖池(命名從 BP32K0 到 BP32K9)。 緩沖池的大小是按照頁為單位指定的。
用戶定義表空間時指定對應的 Buffer pool,在訪問該表空間時 DB2 系統就會按照定義將表空間的記錄裝載到定義的 Buffer pool 中。
DSNZPARM
DB2 子系統各項環境參數和系統配置,都是通過在 DB2 系統啟動時指定的一系列系統 參數設置的。這些系統參數通常被稱為 DSNZPARM 或簡稱為 ZPARM。
DSNZPARM 中定義了許多 DB2 的關鍵參數,它是由一系列 DSN6XXX 的宏參數組成 的,通過執行 DSNTIUZ 這個 CLIST,實現編譯鏈接,生成一個模塊,用于在 DB2 啟動時裝載。
在 DB2 6 版本以前,絕大部分系統參數的修改只能通過重新編譯 DSNZPARM,并重 新啟動 DB2,讓編譯后的 ZPARM 重新 LOAD 到 DB2 系統內存中才能生效。這種做法影 響了 DB2 系統的連續運行,降低了系統可用性。在 DB2 7版本后,可以支持部分系統參數的聯機生效,通過引入一個 SET SYSPARM 的命令,實現將新編譯生成DSNZAPRM 模 塊聯機裝載到正在運行的DB2系統中,大大提高了DB2的可用性.
DB2 系統的地址空間
為了能夠正常運行,DB2 系統需要運行以下幾個地址空間:ssnmMSTR、ssnmDBM1、
ssnmIRLM、ssnmDIST。
1. ssnmMSTR
這個地址空間是必需的,它的主要功能是提供子系統服務。
它主要控制如下的操作:
- 控制訪問 DB2 的用戶數量。
- 管理 DB2 監控和啟停的組件和 DB2 命令處理。
- 記錄數據改變前后的日志。
- 保護輸入和輸出日志緩存。
2. ssnmDBM1
這個地址空間是必需的,它的主要功能是提供數據庫服務管理。
這個地址空間的主要部件包括:
Relational Data Services(RDS)Stage 2 SQL 的處理。 Data Manager(DM)Stage 1 SQL 的處理。
Buffer Pool Manager。
Buffer Pool Areas。
RID Pool Area。
Sort Spaces。
Work Space。
EDM Pool(Environmental Descriptor Manager)。
3 ssnmIRLM
這個地址空間也是必需的,它的主要功能為鎖管理:鎖的建立和釋放及死鎖的檢測。 每個 DB2 系統都有一個自己的鎖資源管理器,不能在多個 DB2 系統之間共享 IRLM。IRLM 和 DB2 一起對數據的訪問進行串行化,當應用、命令、工具程序等都試圖訪問一份同樣的 數據時,DB2 向 IRLM 申請鎖以確保數據的一致性。
4 ssnmDIST
這個地址空間不是必需的,它的功能是控制與 VTAM 之間的接口,管理分布式的數據 訪問。當有分布式數據訪問需求時啟動。