啓動Command Line Processor,CLP
db2cmd db2
CREATE DATABASE MY1STDB
* 數據庫名稱可以由以下字符組成:a-z、A-Z、0-9、@、# 和 $。
* 名稱中的第一個字符必需是字母表字符、@、# 或 $;不能是數字或字母序列 SYS、DBM 或 IBM。
* 數據庫名稱或數據庫別名是一個惟一的字符串,包含前面描述的一個到八個字母、數字或鍵盤字符。
(是說一個INSTANCE下,要唯一吧,而且好象不能超出八位)
db2 => CREATE DATABASE MY1STDB1;
SQL1001N "MY1STDB1;" is not a valid database name. SQLSTATE=2E000 ---來以爲是ORACLE。
db2 => CREATE DATABASE MY1STDB1
DB20000I The CREATE DATABASE command completed successfully. ---成功。
db2 => CREATE DATABASE MY1STDB11
SQL1001N "MY1STDB11" is not a valid database name. SQLSTATE=2E000 ---9位,失敗。
db2 => CREATE DATABASE MY1STDB21
SQL1001N "MY1STDB21" is not a valid database name. SQLSTATE=2E000 ---9位,失敗。
db2 => CREATE DATABASE MY1STDB2
DB20000I The CREATE DATABASE command completed successfully. ---成功。
db2 => CREATE DATABASE MY1STDB2
SQL1005N The database alias "MY1STDB2" already exists in either the local ---同名,失敗。
database directory or system database directory.
DB2 創建,包括日誌文件、配置信息、歷史文件和三個表空間。這些表空間是:
* SYSCATSPACE:這是保存 DB2 系統編目的地方,系統編目跟蹤與 DB2 對象相關聯的所有元數據。
* TEMPSPACE1:DB2 用來放置中間結果的臨時工作區域。
* USERSPACE1:默認情況下存放所有用戶對象(表、索引)的地方。
所有這些文件都放在默認驅動器上的 DB2 目錄中。默認驅動器通常是安裝 DB2 產品的卷。
在 DB2 9 之前,CREATE DATABASE 命令會爲上面列出的所有對象創建 SMS 表空間。
在 DB2 9 中,所有表空間都將定義爲自動存儲(DMS)表空間。
如果不要的話,可以
CREATE TABLESPACE TEST MANAGED BY AUTOMATIC STORAGE NO看看創建的DB目錄:
E:/db2/NODE0000/MY1STDB1>dir /s
Volume in drive E is Application
Volume Serial Number is 08BD-EF8E
Directory of E:/db2/NODE0000/MY1STDB1
03/20/2008 09:33 AM 0 SQLCRT.FLG
03/20/2008 09:33 AM <DIR> T0000000 --估計對應SYSCATSPACE tablespace
03/20/2008 09:34 AM 67,108,864 C0000000.CAT
03/20/2008 09:33 AM 0 SQLCRT.FLG
03/20/2008 09:34 AM <DIR> T0000001 --估計對應TEMPSPACE1 tablespace
03/20/2008 09:34 AM <DIR> C0000000.TMP
03/20/2008 09:34 AM 512 SQLTAG.NAM
03/20/2008 09:34 AM 0 SQLCRT.FLG
03/20/2008 09:33 AM <DIR> T0000002 --估計對應USERSPACE1 tablespace
03/20/2008 09:33 AM 33,554,432 C0000000.LRG
03/20/2008 09:33 AM 0 SQLCRT.FLG
還有一個目錄,應該是放日誌文件、配置信息等的:
E:/db2/NODE0000/SQL00008
如果沒有指定路徑,會在數據庫管理程序設置(DFTDBPATH 參數)中指定的默認數據庫路徑上創建數據庫:
Default database path (DFTDBPATH) = E:
這兩個命令都沒有成功,估計和路徑有關
CREATE DATABASE MYDB ON D:/TEST
CREATE DATABASE MYDB
AUTOMATIC STORAGE ON
/db2/storagepath001,
/db2/storagepath002,
/db2/storagepath003
AUTORESIZE YES ---當表空間用光空間時,系統將自動地擴展容器的大小。
INITIALSIZE 300 M ---沒有定義初始大小的默認爲300 MB,每個容器是100 MB(有三個存儲路徑)。
INCREASESIZE 75 M ---當表空間用光時,總空間增加 75 MB;可以指定百分數,增長當前大小的百分數。
MAXSIZE NONE ---表空間的最大大小沒有限制,可以限制表空間最大值。
還發現真的要在CPL下,跑的話,要加/,續行,才能跑,繁人。
CREATE TABLESPACE TEST MANAGED BY AUTOMATIC STORAGE;
在這個命令中,可以提供與表空間相關聯的任何參數;
但是,使用自動存儲可以大大簡化日常的表空間維護。
與重要的大型生產表相關聯的表空間可能需要 DBA 更多地干預。
在沒有啓用自動存儲的數據庫中創建表空間時,
必須指定 MANAGED BY SYSTEM 或 MANAGED BY DATABASE 子句。
使用這些子句會分別創建 SMS 表空間和 DMS 表空間。
在這兩種情況下,都必須提供容器的顯式列表。
SYSTEM USING ('container string')
DATABASE USING ( FILE/DEVICE 'container string' number of pages )
重要提示:所有容器必須是在所有數據庫上惟一的;一個容器只能屬於一個表空間。
字符代碼
db2都有一個相關聯的字符代碼頁,可以認爲代碼頁是一個對照表,用來將字母數字數據轉換爲數據庫中存儲的二進制數據。一個 DB2 數據庫只能使用一個代碼頁。
代碼頁是在 CREATE DATABASE 命令中使用 CODESET 和 TERRITORY 選項設置的。
對於需要使用 XML 數據的應用程序,
當前,DB2 只在定義爲 Unicode(UTF-8)的數據庫中支持 XML 列。
如果數據庫在創建時沒有啓用 Unicode 支持,就不能在其中創建 XML 列。
另外:
db2 => CREATE DATABASE DB2TEST4 AUTOMATIC STORAGE YES
SQL1047N The application is already connected to another database. --遇到這個,要connect reset
db2 => connect reset
DB20000I The SQL command completed successfully.
db2 => CREATE DATABASE DB2TEST4 AUTOMATIC STORAGE YES
db2 => CREATE DATABASE MYDB
SQL1032N No start database manager command was issued. --db service沒起來。
--也可能DB沒有起來.
SQL30081N 檢測到通信錯誤。正在使用的通信協議:"TCP/IP"。正在使用的通信
API:"SOCKETS"。檢測到錯誤的位置:"10.89.59.203"。檢測到錯誤的通信功能:
"connect"。特定於協議的錯誤代碼:"10061"、"*" 和 "*"。 SQLSTATE=08001
最後的例子
( 1) CREATE DATABASE MY1STDB自己琢磨琢磨吧!
( 2) DFT_EXTENT_SZ 4
( 3) CATALOG TABLESPACE MANAGED BY DATABASE USING
( 4) (FILE 'C:/CAT/CATALOG.DAT' 2000, FILE 'D:/CAT/CATALOG.DAT' 2000)
( 5) EXTENTSIZE 8
( 6) PREFETCHSIZE 16
( 7) TEMPORARY TABLESPACE MANAGED BY SYSTEM USING
( 8) ('C:/TEMPTS','D:/TEMPTS')
( 9) USER TABLESPACE MANAGED BY DATABASE USING
(10) (FILE 'C:/TS/USERTS.DAT' 121)
(11) EXTENTSIZE 24
(12) PREFETCHSIZE 48
後加的,
-
EXTENTSIZE:區段(extent) 是表空間的容器中的一個空間單元。數據庫對象(除了 LOB 和 long varchar 之外)都存儲在 DB2 中的頁面 中。這些頁面組合成區段。區段大小是在表空間級定義的。一旦爲表空間指定了區段大小,就不能改變了。數據庫配置參數 DFT_EXTENT_SZ 指定數據庫中所有表空間的默認區段大小。這個值的範圍是 2 到 256 個頁面;因此,絕對大小是從 8 KB 到 1024 KB(對於 4 KB 頁面),或者從 16 KB 到 2048 KB(對於 8 KB 頁面)。可以在 CREATE TABLESPACE 語句中使用 EXTENTSIZE 參數覆蓋這個數字。
如果打算在表的設計中使用多維聚簇(MDC),區段就是一個重要的設計決定。MDC 表將爲創建的每個新的維集分配一個區段。如果區段太大,那麼區段的很大一部分有可能是空的(對於包含很少記錄的維集)。關於 MDC 及其對 EXTENTSIZE 的影響的更多信息,請參考 DB2 Administration Guide。
-
PREFETCHSIZE:連續的預獲取是指數據庫管理程序能夠提前預測查詢,在實際引用頁面之前讀取這些頁面。這種異步的檢索可以顯著減少執行時間。可 以通過修改 CREATE TABLESPACE 語句中的 PREFETCHSIZE 參數來控制執行預獲取的積極程度。在默認情況下,這個值設置爲 DFT_PREFETCH_SZ 數據庫配置參數。這個值代表在 DB2 觸發預獲取請求時每次讀取多少個頁面。通過將這個值設置爲區段大小的倍數,可以並行地讀取多個區段。當表空間的容器在不同的硬盤上時,這個功能甚至效率更 高。
這些參數的默認值對於許多應用程序是合適的,但是對於執行許多查詢或分析大量數據的應用程序,可以考慮設置更高的 PREFETCHSIZE。
用Control Center的嚮導來創建DB,好處是最後可以得到對應的SQL。