CREATE DATABASE
CREATE DATABASE 陳述式會對 IMS定義新的資料庫。
呼叫
此陳述式可以從 Java™ 應用程式提交,並透過 IMS Universal JDBC 驅動程式建立與 IMS 的連線。 它是無法動態準備的可執行陳述式。PHIDAM 語法
- 1 如果未指定 ACCESS 關鍵字,則 PHIDAM OSAM 是預設資料庫存取類型。 如果需要特定的資料庫存取類型,使用者必須指定 ACCESS 關鍵字,後面接著存取類型。
HDAM 語法
HIDAM 語法
PHDAM 語法
GSAM 語法
HISAM 語法
SHISAM 語法
DEDB 語法
HSAM 語法
SHSAM 語法
邏輯語法
INDEX 語法
PSINDEX 語法
資料擷取變更語法
exit_attributes 語法
- 1 BEFORE、NOBEFORE、DLET、NODLET、SSPCMD、NOSSPCMD、FLD 及 NOFLD 僅適用於 DEDB。
說明
下列是針對 CREATE DATABASE 陳述式所定義的關鍵字參數:- database_name
- 存取
- CCSID 'encoding'
- 1 到 25 個字元的選用欄位,指定此資料庫中所有字元資料的預設編碼。
預設的字碼頁為 Cp1047(指定 EBCDIC 編碼)。
此值不能包含下列字元:- 單引號或雙引號
- 空白
- Less than (< ) and greater than ( >) symbols
- &符號
在個別表格或直欄中可以置換此值。
- DATA CAPTURE
- 在 CREATE DATABASE 陳述式上指定 DATA CAPTURE 時,這些選項會套用至實體資料庫內的所有表格。 如果您在 CREATE 或 ALTER TABLE 陳述式中指定此參數,它會置換此陳述式的規格。
下列實體資料庫支援 DATA CAPTURE:
- HISAM
- SHISAM
- HDAM
- PHDAM
- HIDAM
- PHIDAM
- DEDB
- 無
- 指示無資料擷取選項。
- 變更
- 您可以指定任意數目的結束常式,每一個都有自己的一組變更選項。 如果您未提供結束常式,則它們只能指定 1 組變更選項來進行記載。 此方法相當於在 DBD 巨集陳述式中的 EXIT = 參數上指定星號 (*) 來取代結束常式名稱。 每一個集合都以逗點區隔。 NOCASCADE 與 C* (例如, CKEY) 選項的任何組合互斥。
下列選項適用於 DATA CAPTURE CHANGES:
- NOPREVER | 之前
- 在 REPL 呼叫的 X' 99 ' 日誌記錄中包含資料之前。 NOPREVITER 是預設值。 此屬性僅適用於 DEDB。
- CDATA | CNODATA
- 將區段資料傳遞至結束常式以進行連鎖刪除。 當實體連結索引鍵無法執行此動作時, CDATA 也會識別要刪除的區段。 此屬性與 NOCASCADE 互斥。
- CKEY | CNOKEY
- 將實體連結索引鍵傳遞至結束程式。 此索引鍵可識別連鎖刪除正在刪除的區段。 此屬性與 NOCASCADE 互斥。
- CNOPATH | CPATH
- 指出結束常式不需要實體根階層式路徑中的區段資料。 使用 CNODATA 來刪除連鎖刪除所需的大量路徑資料。 此屬性與 NOCASCADE 互斥。
- 資料 | NODATA
- DATA 指定將實體表格資料傳遞至結束常式以進行更新。 當指定 DATA 且在表格上也使用 EDITPROC 結束常式時,所傳遞的資料會是擴充資料。 DATA 是預設值。
- 諾德萊特 | DLET
- 針對 DLET 呼叫寫入 X' 99 ' 日誌記錄。 諾德萊特是預設值。 此屬性僅適用於 DEDB。
- 結束名稱
- 指定處理資料的結束常式名稱。 此名稱必須符合使用者定義的「資料擷取」結束常式名稱 IMS。 最多容許使用 8 個英數字元。
- 索引鍵 | NOKEY
- KEY 指定將實體連結索引鍵傳遞到結束常式。 這個索引鍵可識別應用程式所更新的實體表格。 KEY 是預設值。
- NOCASCADE
- 指出 DL/I 刪除此區段時不會呼叫結束常式。 當刪除不含相依項的區段時,不需要進行連鎖刪除。
- NOFLD | FLD
- FLD 選項要求擷取 DEDB FLD 呼叫所做的更新。 此選項僅適用於 DEDB ,且如果指定選項日誌,則此資訊僅會記載在 X' 9904 ' 日誌記錄中。 此資訊不會傳遞至資料擷取結束程式。 此屬性僅適用於 DEDB。
- NOINPOS | INPOS
- 當使用 HERE 插入規則,且未使用 F 或 L 指令碼時, INPOS 選項會要求對非索引鍵或非唯一索引鍵區段執行 ISRT 時傳遞成對資料。 在擷取 ISRT 之前,對應項資料 IMS 位於上。
- NOLOG | 日誌
- LOG 選項要求將資料擷取控制區塊及資料寫入 IMS 系統日誌。
- NOPATH | PATH
- NOPATH 指出結束常式不需要來自實體根階層式路徑中表格的資料。 NOPATH 是一種有效的方法,可避免擷取路徑資料所需的處理時間。 NOPATH 是預設值。
當來自實體根階層式路徑中每一個區段的資料必須傳遞至已更新區段的結束常式時,可以指定 PATH。 使用 PATH 可容許應用程式個別存取數個區段,以進行插入、取代或刪除。
當需要路徑中表格的資訊來撰寫 DB2® for z/OS 主要索引鍵時,您可以使用 PATH 選項。 然後會在相依表格更新的傳播要求中使用 DB2 for z/OS 主要索引鍵。 一般而言,當母項包含索引鍵資訊,而相依項包含不適合母項表格的其他資料時,您需要這類表格資訊。
當需要額外處理時,您也可以使用 PATH。 可能是您未使用一個呼叫來存取數個表格; 例如,您未呼叫 D 指令碼。 在此情況下,如果應用程式要使用個別呼叫來存取每一個表格,則需要額外處理。
- NOSSPCMD | SSPCMD
- SSPCMD 選項會要求擷取 DEDB 子集指標指令碼。 此選項僅適用於 DEDB。
- DATXEXITNO | DATXEXITYES
容許應用程式在處理此資料庫時使用「資料轉換」使用者結束常式 (DFSDBUX1)。 預設值為 DATXEXITNO。
如果指定 DATXEXITYES ,則會在每一個資料庫呼叫開始及結束時呼叫使用者結束程式 DFSDBUX1 。 如果未載入 DFSDBUX1 ,則會呼叫 IMMODULE 來載入它。
如果指定 DATXEXITNO ,則可以呼叫 DFSDBUX1 使用者結束常式,前提是 DFSDBUX1 位於 SDFSRESL 中。 如果不需要針對資料庫定義再次呼叫 DFSDBUX1 ,則會在 JCB 的 SRCHFLAG 欄位中傳回 X'FF ' ,且 DFSDLA00 會動態將資料庫定義標示為不需要結束程式。 在此情況下,除非從 DMB 儲存區清除 DMB ,否則在 IMS 階段作業期間不會針對該資料庫定義再次呼叫使用者結束程式。
- DOSCOMPNO | DOSCOMPYES
- 指出這是否為 DLI/DOS 索引資料庫。 如果資料庫是索引,且是使用 DLI/DOS 建立的,則必須指定。 DLI/DOS 索引資料庫包含區段碼作為字首的一部分。 指定資料庫是 DLI/DOS 索引資料庫會導致 IMS 預期此程式碼會出現在已定義的資料庫中,並以保留此程式碼的方式處理。 這包括為要插入的新區段提供區段代碼。 DLI/DOS 資料庫必須使用 VSAM ,且不能是 PHDAM、PHIDAM 或 PSINDEX 資料庫。
- FPINDEXNO | FPINDEXYES
- 指定索引資料庫是否為主要「捷徑」DEDB 資料庫的次要索引。 依預設,索引資料庫不是次要索引。
- LIKE resource_name
- 指定作為新資源基礎的模型資源名稱。
- PASSWORDNO | PASSWORDYES
- 指定 PASSWORDYES 會導致 DL/I 在開啟此資料庫的任何資料集時使用資料庫名稱作為 VSAM 密碼。 此參數僅適用於使用 VSAM 作為存取方法的資料庫。 您無法使用資料庫名稱作為邏輯或 DEDB 資料庫類型的密碼。 當使用者使用 z/OS® Access Method Services 的 DEFINE 陳述式定義此資料庫的 VSAM 資料集時,控制層次 (CONTROLPW) 或主要層次 (MASTERPW) 密碼必須與此 DBD 的 DBDNAME 相同。 與此 DBD 相關聯的所有資料集都必須使用相同的密碼。
對於 IMS DB/DC 系統,所有 VSAM OPEN 都會略過密碼檢查,從而避免操作員密碼提示。 對於 IMS DB 系統,會執行 VSAM 密碼檢查。 在批次環境中,如果未指定自動密碼保護,且資料集在控制層次 (CONTROLPW) 上受到密碼保護,且密碼不等於資料庫名稱,則會出現操作員密碼提示。
- PROTYES | PROTNO
指定次要索引資料庫是否使用索引指標保護。 此選用參數可確保 IMS所使用之索引指標區段中所有欄位的完整性。 使用此參數可防止應用程式對索引指標區段中的任何欄位執行置換作業,但索引指標區段的使用者資料部分中的欄位除外。 索引指標區段仍會啟用刪除作業。 如果對索引指標區段發出刪除,則會刪除索引指標區段中的索引目標區段指標。 然而,不會刪除導致最初建立索引指標區段的索引來源區段。
如果未使用索引指標保護,則應用程式可以取代索引指標區段中除了常數、搜尋及子序列欄位之外的所有欄位。 在所有情況下,對索引資料庫的插入都無效。
依預設,次要索引資料庫會使用索引指標保護。
- PSNAME psname
- 指定為 PSINDEX、PHDAM 或 PHIDAM 資料庫選取 HALDB 分割區的模組。 參數是 HALDB 分割區選擇結束常式模組名稱。 只有在資料庫的存取類型為 PSINDEX、PHDAM 或 PHIDAM 時,此參數才有效。異常狀況: 如果根索引鍵範圍定義 HALDB 分割區成員資格,則不需要使用者提供的 HALDB 分割區選取常式。
- RMNAME 修改
- 指定模組名稱,用來管理儲存在 HDAM 或 PHDAM 資料庫的 DEDB 或主要資料集群組中的資料。 只有在資料庫存取類型為 HDAM、PHDAM 或 DEDB 時,此參數才有效。 隨機化模組可控制 DEDB、HDAM 或 PHDAM 資料庫中的根區段放置或擷取。 在 IMS 系統中,您可以使用一個以上稱為隨機化模組的模組。 一個特定的資料庫只有一個隨機化模組與其相關聯。 一般化模組 (使用使用者提供的參數對特定資料庫執行隨機化) 可以寫入服務數個資料庫。 隨機化模組的目的是將應用程式針對 DEDB、HDAM 或 PHDAM 資料庫中的根區段放置或擷取所提供的值轉換成相對區塊號碼及錨點號碼。 您可以透過選取兩階段隨機程式,在區域內進行隨機化。 當您選取兩階段隨機程式時,可以變更區域中的根錨點數目,而不需要使用 /DBRECOVERY 指令停止 DEDB 中的所有區域。
對於 PHDAM 資料庫,隨機程式模組名稱和值會變成每一個分割區的預設值。 在 HALDB 分割區定義期間,您可以為每一個分割區設定不同的隨機程式名稱及值。 HALDB 分割區選擇在呼叫隨機化模組之前完成。 隨機化模組只會選取分割區內的位置。
- RMANCH 安奇
- anch 值的用途不同,視您是定義「捷徑」DEDB 資料庫還是完整功能 HDAM 或 PHDAM 資料庫而定。
此參數必須是不帶正負號的十進位整數。 此參數的預設值為 1。
若為 DEDB 資料庫, 安奇 值會指定隨機程式的類型。 值 1 表示單一階段隨機程式。 值 2 表示兩階段隨機程式。 任何其他值都無效。
若為 HDAM 及 PHDAM 資料庫, 安奇 值會指定 HDAM 或 PHDAM 資料庫的根可定址區域中每一個控制間隔或區塊中所需的根錨點數目。 一般值是從 1 到 5 ,且值不能超過 255。
存取 HDAM 或 PHDAM 資料庫時,如果使用者隨機化常式所產生的錨點數目大於對此參數指定的數目,則會使用控制間隔或區塊中最高編號的錨點。 當隨機化常式產生 IMS 錨點號碼零時, IMS 會在控制間隔或區塊中使用錨點 1。
- RMRBN rbn
- 指定您要容許隨機化模組為此資料庫產生的相對區塊數值上限。 此參數僅適用於 HDAM 或 PHDAM 資料庫。 此值決定 HDAM 或 PHDAM 資料庫的根可定址區域中控制間隔或區塊的數目。 此參數必須是不帶正負號的十進位整數,其值不超過 224-1。 如果省略此參數,則不會對隨機化模組所建立的相對區塊號碼執行上限檢查。 如果指定此參數,但指定的隨機化模組產生大於此參數的相對區塊數,則 IMS會使用根可定址區域中的最高控制間隔或區塊。 如果使用者隨機化模組產生的區塊數為零,則 IMS會使用控制間隔或區塊 1。
在 HDAM 或 PHDAM 資料集中,第一個點陣圖位於資料集第一個延伸範圍的第一個區塊中。 在 HDAM 或 PHDAM 資料庫中,針對每個資料集群組指定之資料集第一個延伸範圍的第一個控制間隔或區塊用於位元對映。 在 VSAM 資料集中,第二個控制間隔用於點陣圖,並保留第一個控制間隔。 IMS 會將一個新增至隨機程式所計算的區塊。
- RMBYTES 位元組
- 指定在對另一個資料庫記錄的呼叫未中斷的一連串插入中,可以儲存至根可定址區域的資料庫記錄位元組數上限。 此參數僅適用於 HDAM 及 PHDAM 資料庫。 如果省略此參數,則不會限制可插入此資料庫根區段可定址區域的資料庫記錄位元組數上限。 位元組參數必須是不帶正負號的十進位整數,其值不超過 224-1。 當省略最大相對區塊數參數時,會忽略此參數。 在此情況下,可插入根可定址區域的資料庫記錄位元組數沒有限制。
如果對 HDAM 或 PHDAM 資料庫指定此參數,且資料庫記錄的長度較大,則會將記錄的其餘部分插入現行檔案結尾 (EOF) 之後的溢位區域中。 此作業需要在現行 EOF 之後有足夠的可用空間,以包含超出此參數值的所有資料庫記錄的其餘部分。 如果在現行 EOF 之後的溢位區域中沒有足夠的可用空間,則會在資料庫中隨機插入資料庫記錄。
- XCINO | XCIYES
- 指定此 DEDB 在呼叫隨機程式時是否使用「延伸呼叫介面」。 此選項容許以三種不同的方式來呼叫隨機程式。 在起始設定 IMS 時,或在 /START DB 指令期間, IMS 會先載入隨機程式,然後對隨機程式發出 INIT 呼叫,以呼叫其起始設定常式。 在 /DBR DB 指令期間, IMS 會對隨機程式發出 TERM 呼叫,以在卸載隨機程式之前呼叫終止常式。 當應用程式對根區段發出 GU 或 ISRT 呼叫時,會對隨機程式進行一般隨機化呼叫。 XCI 選項僅適用於 DEDB。
- 版本 'version_identifier'
- 指定識別字串。 您可以使用此作為資料庫變更的註解描述子。
使用注意事項
使用預設選項 (使用 CREATE DATABASE database_name 陳述式且沒有其他參數) 定義資料庫會建立具有 OSAM 資料集存取類型的 PHIDAM 資料庫。 您也可以在 CREATE 陳述式中併入關鍵字,以明確指定 PHIDAM 資料庫使用 VSAM 或 OSAM 資料集存取類型: CREATE DATABASE database_name ACCESS
PHIDAM OSAM 或 CREATE DATABASE database_name ACCESS
PHIDAM VSAM
資料版本化注意事項
在 CREATE DATABASE 陳述式上,資料庫版本號碼 (DBVER) 一律為 0。 CREATE 會對 IMS定義新的資料庫,而 0 一律是基本版本。 相同 DDL 串流下的所有 CREATE 及 ALTER 陳述式 (在啟動指令之前) 將使用第 0 版。依預設自動產生的所有虛擬 PSB 都會參照現行版本,即版本 0。 您可以選擇性地發出 CREATE SENSEGVIER 來手動建立 PSB ,並在 PCB 上指定 "DBVER 0" 以鎖定它們 0 版。 您無法指定較高的版本號碼,因為此串流中只會存在版本 0。 您也可以選擇性地指定 "DBLEVEL CURR | BASE" 設定。 請注意,如果已啟動參照第 0 版的 PSB ,但未啟用資料庫版本化,則 IMS 會拒絕來自該 PSB 的應用程式呼叫。
範例: 完整功能資料庫
下列輸入可用於在沒有資料擷取結束程式的情況下指定 DATA CAPTURE CHANGES 關鍵字。 這會向 IMS 指出使用者只想要記載。
DBD NAME=DHVNTZ02,ACCESS=(PHIDAM,OSAM), X
EXIT=((*,KEY,DATA,NOPATH,(CASCADE,KEY,DATA,NOPATH), X
LOG))
CREATE DATABASE DHVNTZ02
DATA CAPTURE CHANGES(
LOG KEY DATA NOPATH CKEY CDATA CNOPATH
)下列輸入可用來指定具有多個資料擷取結束程式的 DATA CAPTURE CHANGES 關鍵字。
DBD NAME=DHVNTZ02,ACCESS=(PHIDAM,OSAM), X
EXIT=((EXIT1A,(CASCADE,KEY,DATA,PATH), X
KEY,DATA,PATH,NOLOG), X
(EXIT1B,NOKEY,NOPATH,NOLOG,(CASCADE,NOKEY,DATA,NOPATH)),X
(EXIT1C,(CASCADE,NOKEY,NODATA,NOPATH), X
NOKEY,DATA,PATH,NOLOG), X
(EXIT1D,KEY,NODATA,PATH,NOLOG, X
(CASCADE,NOKEY,NODATA,PATH)))CREATE DATABASE DHVNTZ02
DATA CAPTURE CHANGES(
EXIT1A NOLOG KEY DATA PATH CKEY CDATA CPATH,
EXIT1B NOLOG NOKEY NOPATH CNOKEY CDATA CNOPATH,
EXIT1C NOLOG NOKEY DATA PATH CNOKEY CNODATA CNOPATH,
EXIT1D NOLOG KEY NODATA PATH CNOKEY CNODATA CPATH
)DBD 產生公用程式的下列輸入會建立基本完整函數資料庫:
DBD NAME=COGDBD, C
ENCODING=Cp1047, C
ACCESS=(HDAM,OSAM), C
RMNAME=(DFSHDC40,3,3,25), C
PASSWD=NO, C
VERSION=’Latest version of COGDBD’可以使用下列 CREATE DATABASE 陳述式來建立相同的資料庫:
CREATE DATABASE COGDBD
ACCESS HDAM OSAM
RMNAME(DFSHDC40 RMANCH 3 RMRBN 3 RMBYTES 25)
VERSION ‘Latest version of COGDBD’
CCSID 'Cp1047';範例: 捷徑資料輸入資料庫 (DEDB)
與前一個範例類似,下列輸入可以提交至 DBD 產生公用程式,以建立 DEDB:
DBD NAME=HOSPDBD1, C
ENCODING=Cp1047, C
ACCESS=(DEDB), C
RMNAME=(RMOD3,1,,,XCI) C
PASSWD=NO 可以使用 CREATE DATABASE 陳述式來建立對等資料庫:
CREATE DATABASE HOSPDBD1
ACCESS DEDB
RMNAME( RMOD3 RMANCH 1 XCIYES)
CCSID 'Cp1047'; 