ヘッダーをスキップ
Oracle Rdb for OpenVMS Oracle RMUリファレンス・マニュアル
リリース7.2
E06177-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1.25 RMU Extractコマンド

Oracle Rdbメタデータを読み取ってデコードし、そのデータベースの定義に相当するRelational Database Operator(RDO)またはSQL(構造化問合せ言語)コードの文を再構築します。これらの文は、表示または抽出できます。データベースを定義したRDOまたはSQLコードがもうない場合に、これらの文を使用してデータベースを再作成できます。

また、RMU Extractコマンドで次の出力を生成するよう指定できます。


形式



説明

RMU Extractコマンドでは情報をデコードし、そのデータベースの定義に相当するコマンドを、Language修飾子で選択した言語で再構築します。

定義はファイルまたはSYS$OUTPUTに抽出できます。

RMU Extractコマンドでは、次のキャラクタ・セット情報が抽出されます。

RMU Extractコマンドでは、オブジェクト名を二重引用符で囲み、大/小文字、特殊文字の組合せまたは予約語を保持できます。


コマンド・パラメータ

root-file-spec

定義を抽出するデータベース・ルート・ファイルのファイル指定。ファイル拡張子を指定する必要がないことに注意してください。データベース・ルート・ファイルが見つからない場合、コマンドは"file not found"エラーで終了します。

コマンド修飾子

Defaults[=defaults-list]

この修飾子は、RMU Extractコマンドの出力の変更に使用します。次のデフォルトをDefaults修飾子で変更できます。

Items[=item-list]

選択した定義を抽出および表示できます。各項目名を次のように組み合せて、コマンドラインを短くできることに注意してください。


$ RMU/EXTRACT/NOLOG/ITEMS=(ALL,NODATABASE) MF_PERSONNEL

Items修飾子をコマンドラインで省略した場合、またはオプションを使用せずに指定した場合、デフォルトのアクションはItems=Allです。

次のオプションをItems修飾子に指定できます。

Language=lang-name

次のいずれかのインタフェースを選択できます。

デフォルトは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修飾子に指定できます。

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_
References
ANSI_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,...)]

トランザクション・モード、分離レベルおよびトランザクション待機の動作を指定できます。

トランザクション・モードの制御には、次のキーワードを使用します。

トランザクション分離レベルの指定には、キーワードIsolation_Level=[level]に次のオプションを使用します。

トランザクション分離レベルの詳細は、『Oracle Rdb SQLリファレンス・マニュアル』のSET TRANSACTION文を参照してください。

次のキーワードのいずれかを使用して待機設定を指定します。


使用上の注意


例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> -- 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;