また、RMU Extractコマンドで次の出力を生成するよう指定できます。
RMU Extractコマンドでは情報をデコードし、そのデータベースの定義に相当するコマンドを、Language修飾子で選択した言語で再構築します。定義はファイルまたはSYS$OUTPUTに抽出できます。
RMU Extractコマンドでは、次のキャラクタ・セット情報が抽出されます。
- データベースの場合:
- データベースのデフォルト・キャラクタ・セット
- 各国語キャラクタ・セット
- ドメインの場合:
- 各文字データ型のドメインのキャラクタ・セット
- 各文字データ型のドメインの長さ(文字数)
- 表の場合:
- 各文字データ型の列のキャラクタ・セット
- 各文字データ型の列の長さ(文字数)
RMU Extractコマンドでは、オブジェクト名を二重引用符で囲み、大/小文字、特殊文字の組合せまたは予約語を保持できます。
root-file-spec
定義を抽出するデータベース・ルート・ファイルのファイル指定。ファイル拡張子を指定する必要がないことに注意してください。データベース・ルート・ファイルが見つからない場合、コマンドは"file not found"エラーで終了します。
Defaults[=defaults-list]
この修飾子は、RMU Extractコマンドの出力の変更に使用します。次のデフォルトをDefaults修飾子で変更できます。
- Allocation
Noallocation
RMU Extractコマンドを使用して生成したスクリプトを使用してテスト・データベースを作成した場合、ソース・データベースからの割当ては適切ではない場合があります。Allocationキーワードを使用してすべての記憶領域で使用されるかわりの値を指定するか、Noallocationキーワードを使用してCREATE STORAGE MAP構文から句を省きます。どちらのキーワードも使用しない場合、デフォルトの動作では、データベースに記録されている各記憶領域の割当てが使用されます。Snapshot_Allocationキーワードも参照してください。- Date_Format
Nodate_Format
デフォルトでは、RMU ExtractプロセスでDATE型はSQL標準に準拠している(つまり、DATE ANSI)とみなされ、組込み関数CURRENT_TIMESTAMPではTIMESTAMP(2)値が返されます。DATE VMSのみを使用する環境の場合、DATE_FORMAT=VMSを指定することで、デフォルトを変更できます。有効な値は、『Oracle Rdb SQLリファレンス・マニュアル』の「SET DEFAULT DATE FORMAT文」に記載されています。デフォルトはDate_Format=SQL92です。
スクリプトからこのセッション属性の設定を省くには、Nodate_Formatを使用します。- Dialect
Nodialect
抽出されたSQLスクリプトには、方言の指定が必要なものもあります。Dialectキーワードを使用して、特定の方言をスクリプトに指定できます。このオプションに使用できる値は、『Oracle Rdb SQLリファレンス・マニュアル』の「SET DIALECT文」を参照してください。デフォルトはNodialectです。- Language
Nolanguage
RMU Extractコマンドでは、SET LANGUAGEコマンドにプロセス言語(つまり、SYS$LANGUAGEの値またはENGLISH)が使用されます。しかし、スクリプトが別のシステムで使用される場合、この言語が適切でない場合があります。Languageキーワードを使用して、特定の言語をスクリプトに指定できます。有効な言語名は、OpenVMSのシステム論理名表で定義されています。現在の設定は、論理名SYS$LANGUAGESを確認します。このコマンドをスクリプトから省くには、Nolanguageキーワードを使用します。- Quoting_Rules
Noquoting_Rules
Quoting_Rulesキーワードを使用して、特定の設定をスクリプトに指定できます。このオプションに使用できる値は、『Oracle Rdb SQLリファレンス・マニュアル』の「SET QUOTING RULES文」を参照してください。デフォルトはQuoting_Rules=SQL92です。RMU Extractコマンドでは、非ASCIIキャラクタ・セット値を含むSQLキーワードおよび名前は引用符で囲まれているものとします。- Snapshot_Allocation
Nosnapshot_Allocation
RMU Extractの出力からテスト・データベースを作成した場合、ソース・データベースからのスナップショット・ファイル割当ては適切でない場合があります。Snapshot_Allocationキーワードを使用してすべてのスナップショット領域で使用されるかわりの値を指定するか、Noallocationキーワードを使用して"snapshot allocation is"句を省きます。どちらのキーワードも使用しない場合、デフォルトの動作では、データベースに格納されている各スナップショット領域の割当てが使用されます。Allocationキーワードも参照してください。
Items[=item-list]
選択した定義を抽出および表示できます。各項目名を次のように組み合せて、コマンドラインを短くできることに注意してください。
$ RMU/EXTRACT/NOLOG/ITEMS=(ALL,NODATABASE) MF_PERSONNEL
Items修飾子をコマンドラインで省略した場合、またはオプションを使用せずに指定した場合、デフォルトのアクションはItems=Allです。
次のオプションをItems修飾子に指定できます。
- All
すべてのデータベース項目を抽出するよう指定します。これがデフォルトで、Alter_Database、Forward_References、Import、Load、Protections、Revoke_Entry、Security、Synonyms、Unload、Verify、VolumeおよびWorkloadオプション以外のすべての項目が含まれます。特定の出力を選択する他の項目と組み合せて、AllまたはNoallを使用できます。
次の例では、Items=Allオプションによって、Triggers以外のすべての定義が抽出および表示されます。
$ RMU/EXTRACT/ITEMS=(ALL,NOTRIGGERS) MF_PERSONNEL
次の例では、ドメインおよび表の定義が表示されます。Noallオプションは省略できることに注意してください。
$ RMU/EXTRACT/ITEMS=(NOALL, DOMAIN, TABLE) MF_PERSONNEL
- Alter_Database(またはChange_Database)
Noalter_Database
物理データベース・アフター・イメージ・ジャーナル・オブジェクト定義を表示します。- Catalog
Nocatalog
SQLマルチスキーマ・データベースに対して作成されたカタログのすべての内容を表示します。インタフェースがRDOの場合、この項目は無視されます。- Collating_Sequences
Nocollating_Sequences
選択したデータベースに対して定義されたすべての照合順番を表示します。Oracle Rdbでは、ソースOpenVMS National Character Set(NCS)ライブラリの名前は保存されず、定義された論理名NCS$LIBRARYにデフォルトでなることに注意してください。- Constraints
Noconstraints
デフォルトでは、Items=Table修飾子によって表と列の制約が出力されます。Item=Noconstraintsを指定した場合、表に対する制約の情報は抽出されません。Language=SQL修飾子を指定した場合、表を抽出する際、デフォルトでItem=Constraintsが有効になります。
すべての制約をALTER TABLE文として抽出するには、Item=ConstraintおよびOption=Defer_Constraints修飾子を使用します。表の定義後にすべての制約を定義するようにするには、Item=TablesおよびOption=Defer_Constraints修飾子を使用します。- Database
Nodatabase
データベースの属性と特性を表示します。これには、データベース・ルート・ファイル名、バッファ数、ユーザー数、リポジトリ・パス名、各記憶領域の特性などがあります。
RMU ExtractにOption=Nodictionary_References修飾子を指定した場合、データ・ディクショナリ・パス名は無視されます。- Domains(またはFields)
Nodomains
ドメインの定義を表示します。ドメインがもともとデータ・ディクショナリ・パス名を使用して定義されていた場合、出力定義にはこの名前が示されます。Option=Nodictionary_References修飾子を指定した場合、データ・ディクショナリ・パス名は無視され、システム表から列属性が抽出されます。- Forward_References
Noforward_References
データベースの依存性情報(RDB$INTERRELATIONS)を問い合せ、他のデータベース・オブジェクトから参照されているルーチンに対してのみDECLARE FUNCTIONおよびDECLARE PROCEDURE文を抽出します。デフォルトはNoforward_Referenceです。
Forward_References項目は、/Item=(All,Forward)などの他の項目キーワードと組み合せて使用されます。- Functions
Nofunctions
外部関数定義を表示します。- Import
Noimport
各記憶領域および行キャッシュを定義するRDOまたはSQL IMPORTスクリプトを生成します。Language修飾子によって、Oracle RMUでRDO、SQL IMPORTのいずれのスクリプトを生成するかが決まります。(Language=SQLまたはLanguage=ANSI_SQL修飾子を指定した場合、同じSQL IMPORTスクリプトが生成されます。)RDOインタフェースでは、Oracle Rdbの最新バージョンで追加されたデータベース・オプションの多くを受け付けないため、Language=SQL修飾子を指定する(またはデフォルトを受け入れる)ことをお薦めします。
既存のデータベースと同じか、よく似たデータベースを再作成する場合、Items=Import修飾子は有用です。Oracle RMUで生成されたファイルに対して、割当てパラメータの変更や記憶領域の追加などの編集を行う方が、新規にIMPORTスクリプトを記述するより簡単です。
Oracle RMUでIMPORTスクリプトを生成する際、rmuextract_rbrという交換ファイル名がスクリプトで使用されます。したがって、インポートする交換ファイルを指定するようOracle RMUで生成されたIMPORTスクリプトを編集するか、論理名RMUEXTRACT_RBRを交換ファイル名に割り当てる必要があります。(交換ファイルは、SQLまたはRDO EXPORT文で作成されます。)「例」の例14を参照してください。- Indexes(またはIndices)
Noindexes
記憶域マップ情報を含む索引の定義を表示します。- Load
Unload
データベースの各表に対するRMU LoadまたはRMU Unloadコマンドを含むDCLコマンド・プロシージャを生成します。この項目は明示的に指定する必要があります。Items=All修飾子を使用した場合にデフォルトでは含まれません。
Option=Full修飾子を指定した場合、Oracle RMUでLoadおよびUnloadスクリプトに対してFields修飾子が生成されます。Option=Full修飾子を指定しない場合、Fields修飾子なしでスクリプトが生成されます。
RMU ExtractにItem=Unload修飾子を指定した場合、.COLUMNSタイプのファイルを作成するDCLコマンドがスクリプトに追加されます。このファイルでは、すべてのアンロードされる列が定義されます。.COLUMNSファイルのファイル名は、抽出される表の名前から導出されます。RMU LoadおよびRMU UnloadコマンドのFields修飾子に"@"演算子を使用してファイルを参照できます。
仮想列、AUTOMATICまたはCOMPUTED BY表の列およびVIEWで算出される列は、.COLUMNSファイルではコメントとして示されます。- Module
Nomodule
プロシージャおよびファクションの定義を表示します。この項目は、Language指定がSQLの場合にのみ有効です。Language指定がRDOまたはANSI_SQLの場合は無視されます。- Outlines
Nooutlines
問合せアウトラインの定義を表示します。この項目は、Language指定がSQLの場合にのみ有効です。Language指定がRDOまたはANSI_SQLの場合は無視されます。- Procedures
Noprocedures
外部プロシージャを抽出します。- Profiles
Noprofiles
CREATE PROFILE文での定義どおりプロファイルを表示します。- Protections
Noprotections
保護アクセス制御リスト(ACL)定義を表示します。保護がSQL ANSIセマンティクスを使用して定義されている場合、RDOでは表示されません。この場合、Language=SQL修飾子を使用して保護を抽出する必要があることを示す診断メッセージが返されます。Language=ANSI_SQLを指定した場合、ACL式の保護はANSI形式で抽出できないことを示す診断メッセージが返されます。Protectionsオプションは明示的に指定する必要があります。Items=All修飾子を使用した場合、デフォルトでは含まれません。- Revoke_Entry
Norevoke_Entry
データベースのすべてのアクセス制御リスト(データベース、表、シーケンス、列、モジュール、関数およびプロシージャ)から保護を削除するSQLまたはRDOスクリプトを抽出します。
出力されたスクリプトには、ユーザーおよびすべてのオブジェクトに対するアクセス制御エントリを削除する一連のSQL REVOKE ENTRY文(選択された言語がRDOの場合はDELETE PROTECTION文)が含まれます。- Role
Norole
SQL CREATE ROLE文での定義どおりロールの定義を表示します。また、付与されているロールは、GRANT文として表示されます。デフォルトでは、ロールは抽出されません。Items=All修飾子を指定した場合も含まれません。- Schema
Noschema
SQLマルチスキーマ・データベースに対するスキーマの定義を表示します。インタフェースがRDOの場合、このオプションは無視されます。- Sequence
Nosequence
元はSQL CREATE SEQUENCE文で定義されたデータベースのシーケンスの定義を表示します。- Security
Nosecurity
データベースの情報に基づいたRMU Auditコマンドを表示します。この項目は明示的に指定する必要があります。Items=All修飾子を使用した場合にデフォルトでは含まれません。- Storage_Maps
Nostorage_Maps
リスト(セグメント化された文字列)記憶域マップを含む記憶域マップの定義を表示します。- Synonyms
Nosynonyms
データベースに定義されているすべてのシノニムのレポートを生成します。データベース・オブジェクトのシノニムはすべて(シノニムのシノニムも含め)グループ化されます。RDB$CREATED列で記録された作成順に出力されます。
このレポートは、すべてのシノニムを表示する場合、またはシノニムを他のデータベースに移動する場合に役立ちます。ただし、シノニムは他の多くのデータベース・オブジェクトを参照するため、新規データベースを定義する際、1つの定義セットでは通常十分ではありません。大抵の場合、Option=Synonymを使用することをお薦めします。- Tables(またはRelations)
Notables
データベースに作成された順に表の定義を表示します。
データ・ディクショナリ・パス名を使用して表がもともと定義されていた場合、パス名が定義に使用されます。
Option=Nodictionary_References修飾子を指定した場合、データ・ディクショナリ・パス名は無視され、システム表から表属性が抽出されます。
Item=Noconstraintsを指定した場合、表に対する制約の情報は抽出されません。
Items=Tables修飾子では、ドメインは次のように処理されます。
- この項目に対する出力には、元の定義が反映されます。列が、異なる名前のドメインに基づいている場合、RDOではBASED ON句が使用され、SQLによってドメイン名が参照されます。
- システム表のフィールドに基づいている列は、処理されますが、警告メッセージが返されます。
- RDOを使用してリレーション定義に作成されたドメインの一部は、次の例で示すような簡略法を使用して定義された列が区別できないため、RDOで抽出できません。このケースでは、列FIELD_1はドメインになるか、ドメインとして定義されています。
DEFINE RELATION REL1. FIELD_1 DATATYPE IS TEXT SIZE 10. END.
しかし、SQLでのこの種の定義では、SQL$で始まる特殊なドメインが作成されます。この場合、SQLドメインは、次のデータ型に変換されます。
CREATE TABLE TAB1 (COLUMN_1 CHAR(10));
この項目の出力には、表レベルで適用可能な制約(PRIMARY KEY、FOREIGN KEY、NOT NULL、UNIQUEおよびCHECK)も含まれます。CHECK制約の場合、インタフェースが異なるため、RDOとSQLとの間で式を変換できない場合があります。- Triggers
Notriggers
トリガーの定義を表示します。- User
Nouser
SQL CREATE USER文での定義どおりユーザーの定義を表示します。また、Item修飾子にRoleも指定した場合、ユーザーに付与されているロールがGRANT文として表示されます。デフォルトでは、ユーザーは表示されません。Items=All修飾子を指定した場合も表示されません。- Verify
Noverify
複数のRMU Verifyコマンドを含む最適なDCLコマンド・プロシージャが生成されます。このコマンド・プロシージャを使用することは、データベースに対してフル検証を行う(All修飾子を指定したRMU Verify)ことに相当します。このコマンド・プロシージャを分割して、部分的な検証処理を行う部分コマンド・スクリプトにすることもできます。これらの部分コマンド・スクリプトを異なるバッチ・キューにサブミットし、フル検証処理を並行して行うことができます。また、一度にデータベースの一部ずつを検証することで、何日間かに分けてフル検証を行うこともできます。
パーティション化アルゴリズムは、1つのコマンド・スクリプトで検証するデータベースの部分を決定する方法です。たとえば、相互に関係する領域は、同じ部分コマンド・スクリプトで検証する必要があります。パーティション化アルゴリズムでは、All修飾子を指定したRMU Verifyコマンドに相当するプロシージャから部分コマンド・スクリプトを作成する際、次の点を考慮します。
- 各記憶領域をパーティションに割り当てます。
- 表がパーティション化されていない場合、データベースの各表を、その記憶領域に対応する部分コマンド・スクリプトに入れます。表が複数の記憶領域にパーティション化されている場合、すべての記憶領域に対応するパーティションを1つの部分コマンド・スクリプトにマージし、表はこの部分コマンド・スクリプトに追加されます。
- データベースの索引ごとに、手順2で示す処理を行います。
- 表の索引の場合、索引と表は1つの部分コマンド・スクリプトにマージされます。
部分RMU Verifyコマンドのスクリプトは、コマンド・プロシージャ形式で記述されます。各部分コマンド・プロシージャの先頭には、STREAM_nという形式のラベルが付きます。nは、1より大きい整数です。たとえば、ラベルSTREAM_3のコマンドを実行するには、次の構文を使用してコマンド・プロシージャを起動します。
$ @<command-procedure-name> STREAM_3
結果のコマンド・プロシージャは、表1-9に示すとおり、P1、P2、P3、P4の4つのパラメータを受け付けるよう設定されます。
表1-9 生成されたコマンド・ファイルのパラメータ パラメータ オプション 説明 P1 Stream_n 実行するコマンド・ストリームを指定する。変数nは、実行するRMU Verifyコマンド・ストリームの番号である。省略した場合、すべてのコマンド・ストリームが実行される。 P2 [No]Log RMU VerifyコマンドラインにLog修飾子を使用するかどうかを指定する。省略した場合、DCL検証スイッチの値が使用される。 P3 Read_Only | Protected | Exclusive RMU Verify Transaction_Type
の値を指定する。省略した場合、Transaction_Type = Protectedが使用される。P4 RMU Verify Output修飾子の出力ファイルの名前を指定する。省略した場合、Output = SYS$OUTPUTが使用される。
- Views
Noviews
ビューの定義を表示します。データベースがSQLを使用して定義されていた場合、ビューはRDOでは表示できない可能性があります。この場合、ビュー定義は無視され、ユーザーはLANGUAGE=SQLを使用してビューを抽出する必要があることを示す診断メッセージが返されます。RMU ExtractコマンドでSQLソース・コードを正確に再現できない場合、次の変換が行われることに注意してください。
- RMU Extractコマンドで、選択式に対し、導出された表の列名または相関名を正確に再現できません。
RMU Extractコマンドで、新しい名前が相関名(Cに数値が続く)および導出された表の列名(Fに数値が続く)に対して生成されます。
たとえば、次のようにビューを作成したとします。
SQL> ATTACH 'FILENAME mf_personnel'; SQL> CREATE VIEW DERIVED_1 cont> (F1) AS cont> SELECT CAST(AVG(JOB_COUNT) AS INTEGER(2)) cont> FROM (SELECT EMPLOYEE_ID, COUNT (*) cont> FROM JOB_HISTORY cont> GROUP BY EMPLOYEE_ID) AS EMP_JOBS (EMPLOYEE_ID, JOB_COUNT); SQL> COMMIT;
次のRMU Extractコマンドを発行すると、次の出力が返されます。
$ rmu/extract/item=view/option=(match:DERIVED_1%,noheader,filename_only) - mf_personnel set verify; set language ENGLISH; set default date format 'SQL92'; set quoting rules 'SQL92'; set date format DATE 001, TIME 001; attach 'filename MF_PERSONNEL'; create view DERIVED_1 (F1) as (select CAST(avg(C2.F2) AS INTEGER(2)) from (select C4.EMPLOYEE_ID, count(*) from JOB_HISTORY C4 group by C4.EMPLOYEE_ID) as C2 (F1, F2)); commit work;
- RMU Extractで、ユーザーが指定したAS句の名前では、元のSQLソース・コードを生成できません。これは、名前が変更された選択式がORDER BY句で参照されている場合は、特に顕著です。このような場合、RMU ExtractコマンドでRMU$EXT_n(nは数値)という形式で相関名が生成されます。
たとえば、次のようにビューを作成したとします。
SQL> SET QUOTING RULES 'SQL92'; SQL> CREATE DATA FILE xyz; SQL> CREATE TABLE DOCUMENT cont> (REPORT CHAR(10)); SQL> CREATE TABLE REPORTING cont> (NAME CHAR(5)); SQL> CREATE TABLE "TABLES" cont> (CODTAB CHAR(5)); SQL> CREATE VIEW VIEW_TEST cont> (CREDIT, cont> CODTAB, cont> CODMON) AS cont> SELECT cont> C1.NAME, cont> C2.CODTAB, cont> (SELECT C7.REPORT FROM DOCUMENT C7) AS COM cont> FROM REPORTING C1, "TABLES" C2 cont> ORDER BY C1.NAME ASC, C2.CODTAB ASC, COM ASC; SQL>
次のRMU Extractコマンドを発行すると、次の出力が返されます。
$ RMU/EXTRACT/ITEM=VIEW MF_PERSONNEL.RDB
. . . create view VIEW_TEST (CREDIT, CODTAB, CODMON) as select C1.NAME, C2.CODTAB, (select DOCUMENT.REPORT from DOCUMENT) AS RMU$EXT_1 from REPORTING C1, "TABLES" C2 order by C1."NAME" asc, C2.CODTAB asc, RMU$EXT_1 asc;
- Volume
Novolume
Oracle Expert for Rdbで使用するPDL形式のファイルにカーディナリティ情報を出力します。この項目は明示的に指定する必要があります。Items=All修飾子を使用した場合にデフォルトでは含まれません。- Workload
Noworkload
DCLコマンド言語スクリプトを生成します。スクリプトはRMU Insert Optimizer_Statisticsコマンドと組み合せて使用され、RDB$WORKLOAD表に格納されている作業負荷統計を抽出します。アンロードした情報を、SQL EXPORTおよびIMPORT文を使用して新規データベースを作成した後に適用できます。また、RMU Collect Optimizer_Statistics/Statistic=Workloadコマンドで使用する同様のデータベースに適用することもできます。
この項目は明示的に指定する必要があります。Items=All修飾子を使用した場合にデフォルトでは含まれません。デフォルトはNoworkloadです。
Option修飾子に次のキーワードを指定することで、Item=Workload修飾子の出力を変更できます。
- Audit_Comment
各RMU Insert Optimizer_Statistics文の前に、作業負荷エントリの作成および変更の日付が付けられます。デフォルトはNoaudit_commentです。- Filename_Only
RMU Insert Optimizer_Statistics文に対するデータベース・ファイル指定の出力が、ファイル名のみに略されます。- Match
ワイルドカード・ファイル名に基づく作業負荷エントリのサブセットが選択されます。
Language=lang-name
次のいずれかのインタフェースを選択できます。
- SQL
Language=SQL修飾子を指定した場合、Oracle RMUでOracle Rdb SQL方言が生成されます。Oracle Rdb SQL方言は、IntermediateおよびFull SQL92レベルの言語要素を持つSQL92 Entryレベルのスーパーセットです。SQL:1999からの言語要素およびOracle Rdbに固有の拡張機能も含まれます。- ANSI_SQL
Language=ANSI_SQL修飾子を指定し、Option=Normal修飾子を指定した場合、Oracle RMUでANSI X3.135-1989 SQL標準に準拠したANSI SQL文を生成するよう試みます。
Language=ANSI_SQL修飾子を指定し、Option=Full修飾子を指定した場合、Oracle RMUで現在のANSIおよびISO SQLデータベース言語標準に準拠したSQL文を生成するよう試みます。詳細は、『Oracle Rdb SQLリファレンス・マニュアル』を参照してください。
Optionパラメータの指定にかかわらず、Oracle Rdb固有の機能(DATATRIEVEサポート句や記憶域マップなど)は省かれます。- RDO
RDO言語オプションを指定した場合、Oracle RMUでRDO文が生成されます。
デフォルトはLanguage=SQLです。
Language修飾子は、Items=Load、Items=UnloadおよびItems=Verify修飾子によって生成される出力には影響しません。これらの修飾子では、Oracle RMUコマンドのみを含むスクリプトが生成されるためです。
Log[=log-file]
Nolog
RMU Extractコマンドの実行時のログ出力を有効または無効にします。ログには、Oracle Rdbの現在のバージョンおよびパラメータと修飾子の値が含まれます。デフォルトはNologです。デフォルトのファイル拡張子は.logです。ファイル名を指定せずにLogを指定した場合、出力先はSYS$OUTPUTです。Options=options-list
この修飾子は、RMU Extractコマンドの出力の変更に使用します。この修飾子は、Items=Unload、Items=Load、Items=SecurityまたはItems=Verify修飾子で作成される出力には適用されません。次のオプションをOptions修飾子に指定できます。
- Audit_Comment
Noaudit_Comment
抽出したオブジェクトに、作成と最終変更のタイムスタンプおよび作成したユーザーの名前がコメントとして付けられます。日付および時間の値は、SYS$LANGUAGEおよびLIB$DT_FORMATの設定を使用して表示されます。Noaudit_Commentがデフォルトです。- Cdd_Constraints
Nocdd_Constraints
パス名によって抽出される表にすべての制約を含めるよう指定します。パス名を持つ表の場合、Option=Nocdd_Constraints修飾子はOption=Defer_Constraints修飾子に相当します。Item=Noconstraintsが指定された場合、このオプションは無視されます。
Cdd_ConstraintsオプションおよびDictionary_Referencesオプションを指定した場合、RMU Extractで、制約を追加するALTER TABLE文は生成されません。かわりに、データ・ディクショナリから継承されるとみなされます。
Nocdd_ConstraintsオプションおよびDictionary_Referencesオプションを使用した場合、すべての実表の作成後、RMU ExtractコマンドでFOREIGN KEYおよびCHECK制約を追加するALTER TABLE文が生成されます。- Cdd_References
Nocdd_References
このオプションは、Dictionary_Referencesの別称です。- Column_Volume
Nocolumn_Volume
RMU Extractコマンドで、ソート索引に基づいた表、列および列セグメント文字列のカーディナリティを出力するよう指示します。この修飾子は、Items=Volume修飾子と組み合せて使用する必要があることに注意してください。Items=Volume修飾子が省略された場合、カーディナリティは表示されません。
RMU Extractで次のようなデータが生成されます。
Volume for schema MF_PERSONNEL Default volatility is 5; Table WORK_STATUS all is 3; Table EMPLOYEES all is 100; Column EMPLOYEE_ID all is 100; Column LAST_NAME all is 83; . . . Table RESUMES all is 3; List RESUME Cardinality IS 3 Number of segments is 3 Average length of segments is 24;
- Debug
Nodebug
処理時にAUTOMATIC AS、VALID IF、COMPUTED BY、MISSING_VALUE、DEFAULT_VALUE、CONSTRAINTS、SQL DEFAULT、TRIGGERS、VIEWS、STORAGE MAPSなどのSQL句の内部表現がダンプされます。キーワードDebugは、1つのOptions修飾子リストでキーワードNormalまたはFullと一緒には指定できません。- Defer_Constraints
Nodefer_Constraints
すべての表の抽出後、すべての制約をALTER TABLE文を使用して定義します。Item=Noconstraintsが指定された場合、このオプションは無視されます。
Option=Nodefer_Constraintsが指定された場合、すべての制約はCREATE TABLE文を使用して生成されます。Option=Defer_ConstraintsもOption=Nodefer_Constraintsも指定されない場合、デフォルトの動作では、NOT NULL、UNIQUEおよびPRIMARY KEY制約がCREATE TABLE文で生成され、これに続くALTER TABLE文でCHECKおよびFOREIGN KEY制約が生成されます。- Dictionary_References
Nodictionary_References
RMU Extractコマンドで、Oracle Rdbのシステム表に含まれている情報を使用するのではなく、データ・ディクショナリ・パス名を参照するドメイン(フィールド)および表(リレーション)の定義を出力するよう指示します。このオプションでは、データベースの文以外に、データベースに格納されているデータ・ディクショナリ・パス名も表示されます。このオプションの使用例は、「例」の例8を参照してください。
Option=Dictionary_References修飾子もOption=Nodictionary_References修飾子も指定しない場合、Oracle RMUでRDB$RELATIONSおよびRDB$FIELDSシステム表を調べ、ドメインまたは表でデータ・ディクショナリを参照していないかを確認します。データ・ディクショナリへの参照がある場合、Option=Dictionary_References修飾子がデフォルトです。そうでない場合、データ・ディクショナリは使用されていないものとみなされ、デフォルトはOption=Nodictionary_Referencesになります。
Nodictionary_Referencesキーワードを使用すると、データ・ディクショナリへのすべての参照が出力から省略されます。これは、データベース定義がデータ・ディクショナリのないシステムまたはテスト環境で使用される場合に適しています。
Items=DatabaseおよびOption=Nodictionary_References修飾子が選択された場合、システム表に格納されているデータ・ディクショナリ・パス名は無視されます。SQLの場合、NO PATHNAME句が生成され、RDOの場合、DICTIONARY IS NOT USED句が生成されます。
Items修飾子にDomainまたはTableを指定し、Option修飾子にNodictionary_Referencesを指定した場合、システム表に格納されているすべての属性が出力定義に含まれます。- Disable_Objects
Nodisable_Objects
すべての無効なオブジェクトを無効としてRMU Extract出力ファイルに書き込むよう要求します。(Omit_Disabledオプションの説明を参照してください)。Disable_Objectsがデフォルトです。
Nodisable_Objectsオプションでは、オブジェクトは表示されますが、無効という構文は省略されます。- Domains
Nodomains
Nodomainsオプションを使用して、メタデータ・オブジェクト内からドメイン名を除外します。ドメイン名は、基となるデータ型で置き換えられます。このオプションは、SQL:1999のSQL言語の機能を認識しないツールと組み合せて使用するためのものです。
Language=SQLの出力で有効デフォルトはOption=Domainsです。
Option=Nodomainsを指定して生成したSQLスクリプトには、CREATE TABLEでの列定義、CREATE FUNCTIONまたはCREATE PROCEDUREでのパラメータ定義またはCAST関数を使用して式をドメイン・データ型に変換する値式(CREATE VIEWおよびCREATE TRIGGER文など)にドメイン名は含まれません。
RMU Extractコマンドで編集されないルーチン本体については元のソースSQLに基づくため、RMU ExtractコマンドでCREATE MODULE文内の関数およびプロシージャに対して生成される出力は、Option=Nodomainsオプションの影響を受けません。
Language=ANSI_SQLの出力で有効Option=Normal修飾子が指定された場合またはデフォルトの場合、デフォルトはOption=Nodomainsです。Items=DomainsまたはItems=All修飾子が使用された場合でも、RMU Extractコマンドでドメイン定義のリストは生成されません。生成するスクリプトにドメイン定義のリストを含める場合は、Options=Domains修飾子を使用します。
$RMU/EXTRACT/LANGUAGE=ANSI_SQL/OPTION=DOMAINS databasename
ドメインをSQL:1999用に生成される構文に含める必要がある場合は、Option=Full修飾子を使用します。- Filename_Only
Nofilename_Only
データベースから抽出されるすべてのファイル指定がファイル名のみに切り捨てられます。この修飾子を使用すると、作成したプロシージャの実行時、新規データベースの移動が簡単になります。- Full
Nofull
メタデータを、データベースを定義した言語から、Language修飾子で指定した言語の同等の構文に変換できない場合(デフォルトがSQLで、選択した言語がRDOの場合など)、メタデータをコメントで表示するか、Oracle RMUで元の構文に最も類似した構文を作成するかを指定します。
NofullはNormalオプションと同じです。- Group_Table
Nogroup_Table
索引および記憶域マップを抽出し、表ごとにまとめるよう指定します。PLACEMENT VIA索引よりも先にまず表が抽出され、次に記憶域マップ、最後にすべての索引が抽出されます。
Group_Table修飾子をOption=Match修飾子と組み合せて使用すると、表とこれに関連する記憶域および索引を選択できます。
デフォルトの動作はNogroup_Tableで、項目が抽出され、タイプごとにまとめられます。- Header
Noheader
スクリプト・ヘッダーおよびセクション・ヘッダーを抽出に含めるよう指定します。これがデフォルトです。ヘッダーには日付が含まれるため、OpenVMS DIFFERENCESコマンドを使用して他のデータベースの抽出と比較する場合、Noheaderを指定してヘッダーを表示しない方が簡単です。- Limit_Volume=nn
Nolimit_Volume
セグメント化フィールドについてスキャンするデータの最大量を指定します。nnの制限に達すると、RMU Extractコマンドはスキャンを停止します。セグメント数およびセグメントの平均長は、スキャンしたデータから計算されます。Limit_Volume=1000がデフォルトです。
Nolimit_Volumeは、セグメント化された文字列をフル・スキャンするよう指定します。- Match:match-string
Matchオプションでは、ワイルドカードのオブジェクト名でデータベースから選択できます。マッチング文字列には、SQLの標準ワイルドカード文字(任意の数の文字にはパーセント(%)、1文字にはアンダースコア(_))を含めることができます。また、これらのワイルドカードの前にバックスラッシュ(\)を使用すると、ワイルドカードがマッチングに使用されません。リテラルのバックスラッシュをマッチングする場合、次の例に示すようにバックスラッシュを2回使用します。
Option=Match:"A1\\A2%"
マッチング文字列のデフォルトはパーセント記号(%)で、すべてのオブジェクトが選択されます。JOBで始まるオブジェクトを選択するには、修飾子Option=Match:"JOB%"を使用します。
このコマンドによって、ドメインJOB_CODE_DOMとJOB_TITLE_DOM、表JOBSとJOB_HISTORY、索引JOB_HISTORY_HASHおよび記憶域マップJOBS_MAPとJOB_HISTORY_MAPの定義がmf_personnelデータベースから表示されます。
マッチング文字列に空白、またはDCLや他のコマンド言語インタフェースで使用される句読点文字が含まれる場合、文字列を例のように引用符で囲みます。大抵のオブジェクト名は空白埋めされています。このため、すべての後続の空白に一致するようマッチング文字列の後にパーセント記号(%)を使用します。
MatchオプションはItem修飾子と組み合せて使用し、名前とタイプに基づいて、特定の表や索引などを抽出できます。
Group_Tableが指定された場合、マッチング名は表名と突き合わせるものとされます。Items=Index修飾子が指定された場合、その表のすべての索引が抽出されます。- Multischema
Nomultischema
データベース・オブジェクトのSQLマルチスキーマ名を表示します。Relational Database Operator(RDO)では無視されます。
Nomultischemaオプションでは、データベース・オブジェクトのSQLシングルスキーマ名のみが表示されます。- Normal
Nonormal
データベースの定義に使用されている特定のソース言語コードのみを含めます。これがデフォルトです。
また、このオプションでは、言語指定がSQLまたはANSI_SQLの場合、RDO VALID IF句が属性NOT DEFERRABLEのCHECK列制約として反映されます。RDO VALID IF句が変換されるとき、Oracle RMUでログ・ファイルに次のようなエラー・メッセージが示されます。
%RMU-W-UNSVALIDIF, VALID IF clause not supported in SQL - ignored for DEGREE. %RMU-I-COLVALIDIF, changed VALID IF clause on domain DEGREE to column check constraint for DEGREES.DEGREE
最初のメッセージは、VALID IF句がSQLでサポートされていないため、VALID IF句をドメイン定義に追加できないことを示す警告です。2番目のメッセージは、VALID IF句が列チェック制約に変更されたことを示す情報メッセージです。- Omit_Disabled
Noomit_Disabled
すべての無効なオブジェクトがRMU Extractコマンドの出力から省かれます。これには、MAINTENANCE IS DISABLEDの索引、ACCOUNT LOCKのユーザー、無効化されたトリガーや制約があります。
Noomit_Disabledオプションでは、すべての無効なオブジェクトがRMU Extractコマンドからの出力に含められます。Noomit_Disabledがデフォルトです。- Order_By_Name
Noorder_By_Name
Order_by_Nameでは、項目Database、Alter_Database(Change_Databaseとも呼ばれる)およびImportに対する記憶領域、キャッシュおよびジャーナル名が、アルファベット順にASCII照合順序で表示されます。
Noorder_By_Nameでは、項目Database、Alter_DatabaseおよびImportに対する記憶領域、キャッシュおよびジャーナル名が、おおよその定義順に表示されます。DROP STORAGE AREA、DROP CACHEまたはDROP JOURNAL文によってスロットが解放されて再利用され、順序が変わるため、デフォルトの順序はおおよそです。Noorder_By_Nameがデフォルトです。
論理名RDMS$BIND_SORT_WORKFILESを使用して、必要に応じてワーク・ファイルを割り当てられます。
注意
データベースの識別子キャラクタ・セットはMCSでもASCIIでもないため、このオプションは無視されます。他のキャラクタ・セットからの文字は、ASCII照合順序で適切にソートされません。
- Synonyms
Nosynonyms
Item=Table修飾子を使用して作成された出力ファイルからの次の抜粋に示すとおり、参照されているオブジェクトの直後にシノニムが抽出されます。
create table HISTORICAL_JOB_INFORMATION ( EMPLOYEE_ID INTEGER, USER_ID CHAR (15), JOB_TITLE TITLE, START_DATE DATE, CURRENT_SALARY MONEY_IN_DOLLARS default NULL); create synonym JOBHIST for table HISTORICAL_JOB_INFORMATION;
シノニムはほぼすべてのデータベース・オブジェクトから参照可能なため、定義をターゲット・オブジェクトの近くに置くことで、スクリプトの実行時に未定義のシンボルの発生をなくすことができます。デフォルトはOption=Synonymsです。
Option=Nosynonyms修飾子を使用すると、CREATE SYNONYM文が表示されません。モジュール、プロシージャ、トリガーおよび表定義などのデータベース・オブジェクトで参照されているシノニムは抽出されます。- Volume_Scan
Novolume_scan
Items=VolumeとOptions=Volume_Scanの両方の修飾子が指定された場合、RMU Extractコマンドで各表のカーディナリティを算出する問合せを実行するよう指示します。デフォルトはOptions=Novolume_Scanです。この場合、RDB$RELATIONSシステム表から、おおよそのカーディナリティが読み取られます。Items=Volume修飾子が選択されていない場合、Options=Volume_Scanオプションは無視されます。- Width=n
出力ファイルの幅を指定します。60〜512文字から値を選択できます。大半のアプリケーションでデフォルトの80文字が適切です。
Output=[out-file]
Nooutput
RMU Extractコマンドでデータ定義言語(DDL)文を書き込むファイルの名前を指定します。ファイル拡張子のデフォルトは、Language=RDO修飾子を指定した場合は.rdoで、Language=SQLまたはLanguage=ANSI_SQL修飾子を指定した場合は.sqlです。Volumeオプションのみを指定した場合、出力ファイル・タイプのデフォルトは.pdlです。Load、Security、VerifyまたはUnloadのみを指定した場合、出力ファイル・タイプのデフォルトは.comです。デフォルトはSYS$OUTPUTです。Nooutput修飾子を使用して出力を無効にした場合、コマンド・スクリプトは出力ファイルに書き込まれません。ログ出力は、データベースで使用されている機能のうち、SQLに変換できないものの確認に使用できます。表1-10に、LanguageおよびOptions修飾子の各組合せの結果を示します。
表1-10 出力内容を決める修飾子の使用 言語 オプション 出力結果 RDO Normal RDO構文の生成。 Full RDO構文の生成。 Dictionary_
Referencesリポジトリへのパス名参照の出力。 Nodictionary_
Referencesリポジトリへのパス名参照のRDO構文への変換。 Multischema RDOでは無視。 SQL Normal SQL構文の生成。 Full RDO固有の機能(VALID IF句など)のSQLへの変換。 Dictionary_
Referencesデータ・ディクショナリへのパス名参照の出力。 Nodictionary_
Referencesデータ・ディクショナリへのパス名参照のSQL構文への変換。 Multischema オブジェクトのSQLマルチスキーマ名の選択。 ANSI_SQL Normal ANSI/ISO構文の生成。 Full SQLでサポートされているANSI/ISO SQL92の生成。 Dictionary_
ReferencesANSI_SQLでは無視。 Nodictionary_
Referencesデータ・ディクショナリへのパス名参照のSQL構文への変換。これがANSI_SQLのデフォルト。 Multischema オブジェクトのSQLマルチスキーマ名の選択。 任意 Audit_Comment 各定義の前にコメントを追加。 Debug 可能な箇所にコメントを出力。 Domains CAST式と、列およびパラメータの定義に対するドメイン名を置き換え、SQLデータ型の句を返す。 Filename_Only データベースから抽出されたすべてのファイル指定をファイル名のみに切捨て。 Volume_Scan 表の実際のカウント。Items=Volumeにのみ有効。
Transaction_Type[=(transaction_mode,options,...)]
トランザクション・モード、分離レベルおよびトランザクション待機の動作を指定できます。トランザクション・モードの制御には、次のキーワードを使用します。
- Automatic
Transaction_Type=Automaticが指定された場合、トランザクション・タイプは、スナップショットの現在のデータベース設定(有効、遅延または無効)、プロセスで使用できるトランザクション・モードおよびデータベースのスタンバイ状態によって変わります。Automaticモードがデフォルトです。- Read_Only
読取り専用トランザクションを開始します。- Write
読取り/書込みトランザクションを開始します。
トランザクション分離レベルの指定には、キーワードIsolation_Level=[level]に次のオプションを使用します。
- Read_Committed
- Repeatable_Read
- Serializable。Serializableがデフォルトの設定です。
トランザクション分離レベルの詳細は、『Oracle Rdb SQLリファレンス・マニュアル』のSET TRANSACTION文を参照してください。
次のキーワードのいずれかを使用して待機設定を指定します。
- Wait
ロックされているリソースが使用可能になるまで無期限に待ちます。Waitがデフォルトの動作です。- Wait=n
nに指定する値は、トランザクション・ロック・タイムアウト間隔です。この値を指定した場合、Oracle Rdbで待機とRMU Extractセッションを強制終了するまでn秒待ちます。待機タイムアウト間隔にゼロを指定することは、Nowaitの指定に相当します。- Nowait
ロックされているリソースが使用可能になるのを待ちません。
- データベースに対してRMU Extractコマンドを使用するには、データベースのルート・ファイル・アクセス制御リスト(ACL)にRMU$UNLOAD権限を持っているか、OpenVMSのSYSPRVまたはBYPASS権限を持っている必要があります。
- RMU Extractコマンドからの出力を使用してデータベースをロードまたはアンロードするチュートリアル情報は、『Oracle Rdb Guide to Database Design and Definition』を参照してください。
- RMU Extractコマンドからの出力には、SQL SET DEFAULT DATE FORMAT文が含まれます。このSQL文によって、DATEデータ型またはCURRENT_TIMESTAMP組込み関数を持つ列をOpenVMS形式と解釈するかSQL92形式と解釈するかが決まります。RMU Extractでは、デフォルトは常にSQL92に設定されます。SQL92形式のDATEおよびCURRENT_TIMESTAMPには、YEARからDAYまでのフィールドのみが含まれます。OpenVMS形式のDATEおよびCURRENT_TIMESTAMPには、YEARからSECONDまでのフィールドが含まれます。
データベースがOpenVMS形式のDATEおよびCURRENT_TIMESTAMPで定義されていた場合にその出力を実行すると、RMU Extractの出力のデフォルトSQL SET DEFAULT DATE FORMAT 'SQL92'ではエラーになります。たとえば、トリガーを定義するとします。
SQL> CREATE TRIGGER SALARY_HISTORY_CASCADE_UPDATE cont> AFTER UPDATE OF JOB_CODE ON JOB_HISTORY cont> (UPDATE SALARY_HISTORY SH cont> SET SALARY_START = CURRENT_TIMESTAMP cont> WHERE (SH.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) cont> ) for each row; %SQL-F-UNSDATASS, Unsupported date/time assignment from <Source> to SALARY_START
これらのエラーは、RMU Extractコマンドからの出力を編集することで回避できます。SET DEFAULT DATE FORMAT 'SQL92'文をSET DEFAULT DATE FORMAT 'VMS'に置き換えます。トリガー定義で問題が起きた場合、かわりにCAST関数を使用できます。CURRENT_TIMESTAMPを参照する各トリガー定義にCAST(CURRENT_TIMESTAMP AS DATE VMS)を指定します。(CAST関数は、SQL CREATE文のDEFAULT句内には使用できません)。- 次のリストに、特定のRDO文があった場合にRMU Extractコマンドで出力する内容について説明します。
- RDOとデータ・ディクショナリには、ドメイン・レベルの検証句という概念があります。ANSI/ISO SQL92標準では、ドメインにCHECK制約を定義できます。ANSI/ISOのCHECK制約のアクションはVALID IFといくつかの点で異なりますが、Language=SQLおよびOption=Full修飾子を指定した場合、RMU Extractでは、VALID IF句をドメインのCHECK制約として抽出します。
- RDOの複数行説明
RDOインタフェースでは、複数行の説明の空白行が削除されるため、メタデータに保存される説明は、データベース定義で入力されたものと同一ではありません。したがって、RMU Extractコマンドで元の説明を完全には再現できません。- いくつかのRDOのトリガー定義
複数の表の結合内にトリガー・アクションが含まれるRDOのトリガー定義によって、無効なSQL構文が生成されます。たとえば、次のRDOトリガー定義には、ERASE文が組み込まれた結合が含まれています。RMU Extractコマンドでこの文が検出されると、Oracle RMUで、次のような無効なSQLトリガー定義が生成されます。
DEFINE TRIGGER EXAMPLE AFTER ERASE FOR C1 IN EMPLOYEES EXECUTE FOR C2 IN JOB_HISTORY CROSS C3 IN EMPLOYEES WITH (((C2.EMPLOYEE_ID = C3.EMPLOYEE_ID) AND (C2.JOB_END MISSING)) AND (C3.EMPLOYEE_ID = C2.EMPLOYEE_ID)) ERASE C2 END_FOR FOR EACH RECORD. CREATE TRIGGER EXAMPLE AFTER DELETE ON EMPLOYEES (DELETE FROM JOB_HISTORY C2, EMPLOYEES C3 WHERE (((C2.EMPLOYEE_ID = C3.EMPLOYEE_ID) AND (C2.JOB_END IS NULL)) AND (C3.EMPLOYEE_ID = C2.EMPLOYEE_ID)) ) FOR EACH ROW;
バージョン4.1以降のOracle Rdbでは、複数の表の結合内にトリガー・アクションを含めることは、RDO構文として無効なことに注意してください。このRDOの制限の詳細は、RDOのヘルプのERASEおよびMODIFYのエントリを参照してください。
- バージョン5.3以降のOracle CDD/Repositoryでは、CDOを使用した表および列の制約定義および管理がサポートされます。RMU Extractコマンドでは、デフォルトで、すべての制約の管理はSQLで行われ、各CREATE TABLEにALTER TABLE FROM pathnameを続けて、制約が追加されるものとみなされます。しかし、新しいバージョンのOracle CDD/Repositoryを使用している場合、これは必要ありません。制約を追加するSQL ALTER TABLE文の出力を無効にするには、Option=Cdd_Constraint修飾子を使用します。
- Transaction_Type修飾子がRMU Extractコマンドラインから省略された場合、データベースに対する読取り専用トランザクションが開始されます。この動作によって、Oracle Rdbの以前のリリースとの下位互換性がもたらされます。トランザクション・モードを指定せずにTransaction_Type修飾子が指定された場合、デフォルト値のAutomaticが使用されます。
- データベース・スナップショットが無効でTransaction_Type修飾子が省略された場合、トランザクションがREAD WRITE ISOLATION LEVEL READ COMMITTEDとして再開され、Option=Volume_Scan修飾子を有効にして行われた処理によってロックされている行の数が少なくなります。
- Transaction_Type=Writeが指定された場合、RMU Extractプロセスでは、データベース表への書込みは試行されません。
- 以前のバージョンのOracle Rdbでは、F1、F2などの位置に基づいて導出された列名が使用されていました。リリース7.0.6.4以降、Oracle Rdbで実表からの列名が導出された列名リストで使用されます。この結果、ビューまたはトリガーの定義の表現が、よりわかりやすくなりました。
次の例では、列名EMPLOYEE_IDが導出された表全体で使用されます。以前のリリースでは、汎用ラベルのF1を使用して、これに名前が付けられました。
create view SAMPLE_V (EMPLOYEE_ID, COUNTS) as select C1.EMPLOYEE_ID, C1.F2 from (select C2.EMPLOYEE_ID, (select count(*) from SALARY_HISTORY C3 where (C3.EMPLOYEE_ID = C2.EMPLOYEE_ID)) from JOB_HISTORY C2) as C1 ( EMPLOYEE_ID, F2 ) order by C1.F2 asc;
- 次のリストに、RMU Extractプロセスでマッチングされる式に相当するSQLを示します。
- NULLIF (a, b)は次に相当します。
CASE WHEN a = b THEN NULL ELSE a END
- NVL (a, ..., b)またはCOALESCE (a, ..., b)は次に相当します。
CASE WHEN a IS NOT NULL THEN a ... ELSE b END
- 単純なCASE式
CASE a WHEN b THEN v1 WHEN NULL THEN v2 ... ELSE v3 END
次に相当します。
CASE WHEN a = b THEN v1 WHEN a IS NULL THEN v2 ... ELSE v3 END
RMU Extractプロシージャでは、内部表現をできるかぎりコンパクトなSQLにデコードします。
- RMU Extractプロシージャでは、CASE式をABS(絶対値)関数にデコードします。
ABS(a)は次に相当します。
CASE WHEN a < 0 THEN -a ELSE a END
また、同様のCASE式もABSに変換されます。
CASE WHEN a <= 0 THEN -a ELSE a END CASE WHEN a > 0 THEN a ELSE -a END CASE WHEN a >= 0 THEN a ELSE -a END
RMU Extractプロセスで、既存のCASE式をよりコンパクトな構文に変更する(元はABS関数コールとしてコーディングされていない場合でも)ことがあります。- Group_Tableオプションが使用され、Item修飾子でTable、IndexまたはStorage_Mapキーワードのうち1つ以上が省略された場合、含まれた項目のみが表示されます。たとえば、EMPLOYEES表の索引のみを抽出するには、次のようにします。
$ RMU/EXTRACT/ITEM=INDEX/OPTION=(GROUP_TABLE,MATCH=EMPLOYEES%)
表の記憶領域および索引のみを抽出するには、次のコマンドを使用します。
$ RMU/EXTRACT/ITEM=(STORAGE_MAP,INDEX)/OPTION=(GROUP_TABLE, - _$ MATCH=EMPLOYEES%)
- LIST記憶域マップの名前が不明の場合、次の汎用コマンドを使用して抽出できます。
$ RMU/EXTRACT/ITEM=STORAGE_MAP/OPTION=(GROUP_TABLE, - _$ MATCH=RDB$SEGMENTED_STRING%)
例1
次のコマンドでは、データベース項目COLLATING_SEQUENCES、DOMAINS、TABLES、INDEXES、STORAGE_MAPS、VIEWS、SEQUENCESおよびTRIGGERSが抽出されます。
Allオプションがデフォルトです。AllまたはNoallオプションを他の項目と組み合せて使用し、特定の出力を選択できます。たとえば、Items=(All,Nodatabase)修飾子では、物理データベース特性以外のすべてのメタデータ項目が選択されます。
$ RMU/EXTRACT/ITEM=(ALL, NODATABASE) MF_PERSONNEL
例2
次のコマンドでは、データベースの各表に対するRMU Loadコマンドを含むDCLコマンド・プロシージャが生成されます。
$ RMU/EXTRACT/ITEMS=LOAD MF_PERSONNEL
例3
次のコマンドでは、mf_personnel.rdbデータベースの保護アクセス制御リスト(ACL)定義が表示されます。
$ RMU/EXTRACT/ITEMS=PROTECTIONS MF_PERSONNEL.RDB
例4
次のコマンドでは、データベースの各表に対するRMU Unloadコマンドを含むDCLコマンド・プロシージャが生成されます。
$ RMU/EXTRACT/ITEMS=UNLOAD MF_PERSONNEL.RDB
例5
次の例では、索引定義が表示されます。
$ RMU/EXTRACT/ITEMS=INDEXES MF_PERSONNEL
例6
次の例では、ドメインおよび表の定義が表示されます。Noallオプションは省略できることに注意してください。
$ RMU/EXTRACT/ITEMS=(NOALL,DOMAINS,TABLES) MF_PERSONNEL
例7
次の例では、Oracle Rdbのシステム表に含まれている情報を使用するのではなく、データ・ディクショナリ・パス名を参照するドメイン(フィールド)および表(リレーション)の定義を出力します。次の例で示すとおり、データベース文以外に、データベースに格納されているデータ・ディクショナリ・パス名も参照されます。
$ RMU/EXTRACT/LANG=SQL/ITEM=ALL/OPTION=DIC/OUTPUT=CDD_MODEL.LOG/LOG= - _$ CDD_EXTRACT.LOG CDD_SQL_DB
例8
次の例では、mf_personnelデータベースの部分RMU Verifyコマンドのスクリプトまたは検証コマンド・パーティションを作成します。このコマンド・プロシージャは、次のRMU Extractコマンドで作成されました。
$ RMU/EXTRACT/ITEM=VERIFY MF_PERSONNEL
例9
次のコマンドでは、mf_personnelデータベースに以前に追加された問合せアウトラインの定義を表示します。
$ RMU/EXTRACT/ITEMS=(OUTLINES) MF_PERSONNEL
例10
次のコマンドでは、mf_personnelのアフター・イメージ・ジャーナル(.aij)ファイル構成を表示します。
$ RMU/EXTRACT/ITEMS=(ALTER_DATABASE) MF_PERSONNEL
例11
次のコマンドでは、以前にSQLを使用して作成された関数のmf_personnelでの関数定義を表示します。
$ RMU/EXTRACT/ITEM=FUNCTION MF_PERSONNEL
例12
次のコマンドでは、ソート索引に基づいた表および列のカーディナリティを表示します。
$ RMU/EXTRACT/OPTION=COLUMN_VOLUME/ITEM=VOLUME MF_PERSONNEL
例13
次の例では、次のようになります。
- SQL EXPORT文を実行して交換ファイルを作成します。
- RMU ExtractコマンドにItem=Import修飾子を指定して実行し、インポート・スクリプトを生成します。また、Option=Filename_Only修飾子を指定して、SQL IMPORTスクリプトでファイルがフル指定されないようにします。(ファイルのフル指定が使用された場合、エクスポートされたデータベースを置き換えないとスクリプトをテストできません。)
- インポート・スクリプト・ファイルで使用されている交換ファイル名を定義する論理名を定義します。
- インポート・スクリプト・ファイルを実行します。
SQL> -- Create interchange file, SAVED_PERS.RBR. SQL> -- SQL> EXPORT DATABASE FILENAME MF_PERSONNEL.RDB INTO SAVED_PERS.RBR; SQL> EXIT; $ ! $ RMU/EXTRACT/ITEM=IMPORT/OPTION=FILENAME_ONLY/OUTPUT=IMPORT_PERS.SQL - _$ MF_PERSONNEL $ DEFINE/USER RMUEXTRACT_RBR SAVED_PERS.RBR $ ! $ SQL$ SQL> @IMPORT_PERS.SQL SQL> set language ENGLISH; SQL> set default date format 'SQL92'; SQL> set quoting rules 'SQL92'; SQL> set date format DATE 001, TIME 001; SQL> SQL> -- RMU/EXTRACT for Oracle Rdb V7.2-00 2-JAN-2006 15:34:38.63 SQL> -- SQL> -- Physical Database Definition SQL> -- SQL> ----------------------------------------------------------------- SQL> import database from rmuextract_rbr cont> filename 'MF_PERSONNEL' . . .
例14
次の例では、SYS$LANGUAGEおよびLIB$DT_FORMATシンボルが定義されている場合に生成されたスクリプトからの抜粋を示します。これらの論理名が定義されていない場合、言語のデフォルトはENGLISHで、形式のデフォルトは標準OpenVMS形式です。
$ DEFINE LIB$DT_FORMAT LIB$DATE_FORMAT_002,LIB$TIME_FORMAT_001 $ DEFINE SYS$LANGUAGE french $ RMU/EXTRACT/OUT=SYS$OUTPUT/ITEM=DOMAIN MF_PERSONNEL/OPT=AUDIT_COMMENT . . . -- Created on 8 janvier 2006 13:01:31.20 -- Never altered -- Created by RDB_EXECUTE -- SQL> CREATE DOMAIN ADDRESS_DATA_1 cont> CHAR (25) cont> comment on domain ADDRESS_DATA_1 is cont> ' Street name'; . . .
例15
データベースのスナップショットにENABLED DEFERREDが設定されている場合、読取り/書込みトランザクションを開始した方がよい場合があります。この環境で、Transaction_type=(Read_only)修飾子を使用すると、一時スナップショットがENABLED IMMEDIATE状態に切り替えられます。この変更によって、すべての読取り/書込みトランザクションが完了するまで読取り専用トランザクションが待機し、更新を行うすべての新規読取り/書込みトランザクションによって、読取り専用トランザクションで使用される可能性のあるスナップショット・ファイルへ行が書き込まれます。この問題を回避するには、RMU ExtractコマンドにREAD WRITE ISOLATION LEVEL READ COMMITTEDトランザクションを指定します。
$ RMU/EXTRACT/ITEM=TABLE/OUT=TABLES.SQL- /TRANSACTION_TYPE=(WRITE,ISOLATION=READ)- SAMPLE.RDB
例16
次の例では、以前のリリースでデフォルトのトランザクション・スタイルだったオプションを指定します。
$ RMU/EXTRACT/ITEM=TABLE/OUT=TABLES.SQL- /TRANSACTION_TYPE=(READ_ONLY)- SAMPLE.RDB
例17
データベースの現在のスナップショット設定が遅延に設定されている場合は、分離レベルをRead_Committedにして読取り/書込みトランザクションを開始した方が効率がよい場合があります。これを行うと、トランザクションがすぐに開始され(読取り専用トランザクションはストールする可能性がある)、選択した分離レベルによって行のロックが最小限に保たれます。これは、次のコマンドを使用して明示的に指定できます。
$ RMU/EXTRACT- /TRANSACTION_TYPE=(WRITE,ISOLATION=READ_COMMITTED)- SAMPLE.RDB
トランザクション・タイプAUTOMATICの使用は、異なるデータベース設定に適しています。
$ RMU/EXTRACT- /TRANSACTION_TYPE=(AUTOMATIC)- SAMPLE.RDB
例18
この例では、DCLコマンド言語スクリプトを作成するItem=Workload修飾子の使用方法を示します。
$ RMU/EXTRACT/ITEM=WORKLOAD - SCRATCH/LOG/OPTION=(FILENAME,AUDIT) $! RMU/EXTRACT for Oracle Rdb V7.2-00 7-JAN-2006 22:00:42.72 $! $! WORKLOAD Procedure $! $!--------------------------------------------------------------------- $ SET VERIFY $ SET NOON $ $! Created on 7-JAN-2006 10:12:26.36 $! Last collected on 7-JAN-2006 22:00:34.47 $! $ RMU/INSERT OPTIMIZER_STATISTICS - SCRATCH - /TABLE=(CUSTOMERS) - /COLUMN_GROUP=(CUSTOMER_NAME) - /DUPLICITY_FACTOR=(4.0000000) - /NULL_FACTOR=(0.0000000) /LOG $ $! Created on 7-JAN-2006 10:12:26.36 $! Last collected on 7-JAN-2006 22:00:34.58 $! $ RMU/INSERT OPTIMIZER_STATISTICS - SCRATCH - /TABLE=(RDB$FIELDS) - /COLUMN_GROUP=(RDB$FIELD_NAME) - /DUPLICITY_FACTOR=(1.7794118) - /NULL_FACTOR=(0.0000000) /LOG $ . . . $ SET NOVERIFY $ EXIT
例19
次の例では、ワイルドカードのファイル名に基づいて作業負荷エントリのサブセットを選択するMatchオプションの使用方法を示します。
$ RMU/EXTRACT/ITEM=WORKLOAD - SCRATCH/LOG/OPTION=(FILENAME,AUDIT,MATCH:RDB$FIELDS%) $! RMU/EXTRACT for Oracle Rdb V7.2-00 8-JAN-2006 10:53 $! $! WORKLOAD Procedure $! $!------------------------------------------------------------------------ $ SET VERIFY $ SET NOON $ ! Created on 7-JAN-2006 15:18:02.30 $ SET NOON $ $! Created on 7-JAN-2006 15:18:02.30 $! Last collected on 7-JAN-2006 18:25:04.27 $! $ RMU/INSERT OPTIMIZER_STATISTICS - SCRATCH - /TABLE=(RDB$FIELDS) - /COLUMN_GROUP=(RDB$FIELD_NAME) - /DUPLICITY_FACTOR=(1.0000000) - /NULL_FACTOR=(0.0000000) /LOG $ SET NOVERIFY $ EXIT
例20
次の例では、表とその制約を抽出するDefer_Constraints、ConstraintsおよびMatch項目オプションの使用方法を示します。
$ RMU/EXTRACT/ITEM=(TABLE,CONSTRAINT)- _$ /OPTION=(FILENAME_ONLY,NOHEADER,- _$ DEFER_CONSTRAINT,MATCH:EMPLOYEES%) - _$ MF_PERSONNEL set verify; set language ENGLISH; set default date format 'SQL92'; set quoting rules 'SQL92'; set date format DATE 001, TIME 001; attach 'filename MF_PERSONNEL'; create table EMPLOYEES ( EMPLOYEE_ID ID_DOM, LAST_NAME LAST_NAME_DOM, FIRST_NAME FIRST_NAME_DOM, MIDDLE_INITIAL MIDDLE_INITIAL_DOM, ADDRESS_DATA_1 ADDRESS_DATA_1_DOM, ADDRESS_DATA_2 ADDRESS_DATA_2_DOM, CITY CITY_DOM, STATE STATE_DOM, POSTAL_CODE POSTAL_CODE_DOM, SEX SEX_DOM, BIRTHDAY DATE_DOM, STATUS_CODE STATUS_CODE_DOM); comment on table EMPLOYEES is 'personal information about each employee'; alter table EMPLOYEES add constraint EMP_SEX_VALUES check(EMPLOYEES.SEX in ('M', 'F', '?')) deferrable add constraint EMP_STATUS_CODE_VALUES check(EMPLOYEES.STATUS_CODE in ('0', '1', '2', 'N')) deferrable alter column EMPLOYEE_ID constraint EMPLOYEES_PRIMARY_EMPLOYEE_ID primary key deferrable; commit work;
例21
次の例では、表とその索引を抽出するGroup_Tableオプションの使用方法を示します。
$ rmu/extract/item=(table,index)- _$ /option=(group_table,match=employees%,- _$ filename_only,noheader) db$:mf_personnel set verify; set language ENGLISH; set default date format 'SQL92'; set quoting rules 'SQL92'; set date format DATE 001, TIME 001; attach 'filename MF_PERSONNEL'; create table EMPLOYEES ( EMPLOYEE_ID ID_DOM constraint EMPLOYEES_PRIMARY_EMPLOYEE_ID primary key deferrable, LAST_NAME LAST_NAME_DOM, FIRST_NAME FIRST_NAME_DOM, MIDDLE_INITIAL MIDDLE_INITIAL_DOM, ADDRESS_DATA_1 ADDRESS_DATA_1_DOM, ADDRESS_DATA_2 ADDRESS_DATA_2_DOM, CITY CITY_DOM, STATE STATE_DOM, POSTAL_CODE POSTAL_CODE_DOM, SEX SEX_DOM, BIRTHDAY DATE_DOM, STATUS_CODE STATUS_CODE_DOM); comment on table EMPLOYEES is 'personal information about each employee'; create unique index EMPLOYEES_HASH on EMPLOYEES ( EMPLOYEE_ID) type is HASHED SCATTERED store using (EMPLOYEE_ID) in EMPIDS_LOW with limit of ('00200') in EMPIDS_MID with limit of ('00400') otherwise in EMPIDS_OVER; create unique index EMP_EMPLOYEE_ID on EMPLOYEES ( EMPLOYEE_ID asc) type is SORTED node size 430 disable compression; create index EMP_LAST_NAME on EMPLOYEES ( LAST_NAME asc) type is SORTED; commit work; alter table EMPLOYEES add constraint EMP_SEX_VALUES check(EMPLOYEES.SEX in ('M', 'F', '?')) deferrable add constraint EMP_STATUS_CODE_VALUES check(EMPLOYEES.STATUS_CODE in ('0', '1', '2', 'N')) deferrable; commit work;
例22
次の例に、Item=Revoke_Entry修飾子を使用した場合の出力を示します。
$ RMU/EXTRACT/ITEM=REVOKE_ENTRY ACCOUNTING_DB ... -- Protection Deletions -- -------------------------------------------------------------------------------- revoke entry on database alias RDB$DBHANDLE from [RDB,JAIN]; revoke entry on database alias RDB$DBHANDLE from [RDB,JONES]; revoke entry on database alias RDB$DBHANDLE from PUBLIC; revoke entry on table ACCOUNT from [RDB,JONES]; revoke entry on table ACCOUNT from PUBLIC; revoke entry on table ACCOUNT_BATCH_PROCESSING from [RDB,JONES]; revoke entry on table ACCOUNT_BATCH_PROCESSING from PUBLIC; revoke entry on table BILL from [RDB,JONES]; revoke entry on table BILL from PUBLIC; ...
例23
次の例に、MF_PERSONNELのWORK_STATUS表に対するサンプル出力を示します。大文字のDCLコマンドは、RMU Extractによって生成されています。
$ RMU/EXTRACT/ITEM=UNLOAD- _$ /OPTION=(NOHEADER,FULL,MATCH:WORK_STATUS%) sql$database $ CREATE WORK_STATUS.COLUMNS ! Columns list for table WORK_STATUS ! in DISK1:[DATABASES]MF_PERSONNEL.RDB ! Created by RMU Extract for Oracle Rdb V7.2-00 on 1-JAN-2006 20:50:25.33 STATUS_CODE STATUS_NAME STATUS_TYPE $ RMU/UNLOAD - DISK1:[DATABASES]MF_PERSONNEL.RDB - /FIELDS="@WORK_STATUS.COLUMNS" - WORK_STATUS - WORK_STATUS.UNL $ $ EXIT $ RMU/EXTRACT/ITEM=LOAD- _$ /OPTION=(NOHEADER,FULL,MATCH:WORK_STATUS%) sql$database $ RMU/LOAD - /TRANSACTION_TYPE=EXCLUSIVE - /FIELDS="@WORK_STATUS.COLUMNS" - DISK1:[DATABASES]MF_PERSONNEL.RDB - WORK_STATUS - WORK_STATUS.UNL $ $ EXIT
例24
次の例では、すべての制約をALTER TABLE文として抽出する方法を示します。
$ rmu/extract/item=(notab,constr) db$:sql_personnel/opt=(nohead,mat=empl%,defer) set verify; set language ENGLISH; set default date format 'SQL92'; set quoting rules 'SQL92'; set date format DATE 001, TIME 001; attach 'filename $DISK1:[JONES]SQL_PERSONNEL.RDB'; alter table EMPLOYEES add constraint EMP_SEX_VALUES check((EMPLOYEES.SEX in ('M', 'F') or (EMPLOYEES.SEX is null))) initially deferred deferrable add constraint EMP_STATUS_CODE_VALUES check((EMPLOYEES.STATUS_CODE in ('0', '1', '2') or (EMPLOYEES.STATUS_CODE is null))) initially deferred deferrable alter column EMPLOYEE_ID constraint EMP_EMPLOYEE_ID_NOT_NULL not null initially deferred deferrable;