重要

このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。

Oracle データベースの前提条件

このページでは、事前に必要となる Oracle データベースの構成手順と、構成後の検証手順について説明します。

データベースユーザー権限の構成

コネクターには、LogMiner を使用する権限と、コネクターによって取り込まれたすべてのテーブルから選択するロール権限を持つデータベースユーザーが必要です。このため、コネクター用に新規のデータベースユーザーを作成しなければならないことがあります。以下の点に注意してください。

  • 非コンテナーデータベース用の ローカルユーザー を作成します。ユーザー名は c## または C## で始まることはできません。
  • マルチテナントデータベース用の 共通ユーザー を作成します。ユーザー名は c## または C## で始まる必要があります。

非コンテナーデータベース

正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順では、ロール名として CDC_PRIVS を使用しています。

  1. SYSDBA として以下の SQL コマンドを入力し、ロールを作成してそのロールに権限を付与します。

    CREATE ROLE CDC_PRIVS;
    GRANT CREATE SESSION TO CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO CDC_PRIVS;
    GRANT LOGMINING TO CDC_PRIVS;
    GRANT SELECT ON V_$LOGMNR_CONTENTS TO CDC_PRIVS;
    GRANT SELECT ON V_$DATABASE TO CDC_PRIVS;
    GRANT SELECT ON V_$THREAD TO CDC_PRIVS;
    GRANT SELECT ON V_$PARAMETER TO CDC_PRIVS;
    GRANT SELECT ON V_$NLS_PARAMETERS TO CDC_PRIVS;
    GRANT SELECT ON V_$TIMEZONE_NAMES TO CDC_PRIVS;
    GRANT SELECT ON ALL_INDEXES TO CDC_PRIVS;
    GRANT SELECT ON ALL_OBJECTS TO CDC_PRIVS;
    GRANT SELECT ON ALL_USERS TO CDC_PRIVS;
    GRANT SELECT ON ALL_CATALOG TO CDC_PRIVS;
    GRANT SELECT ON ALL_CONSTRAINTS TO CDC_PRIVS;
    GRANT SELECT ON ALL_CONS_COLUMNS TO CDC_PRIVS;
    GRANT SELECT ON ALL_TAB_COLS TO CDC_PRIVS;
    GRANT SELECT ON ALL_IND_COLUMNS TO CDC_PRIVS;
    GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO CDC_PRIVS;
    GRANT SELECT ON ALL_LOG_GROUPS TO CDC_PRIVS;
    GRANT SELECT ON ALL_TAB_PARTITIONS TO CDC_PRIVS;
    GRANT SELECT ON SYS.DBA_REGISTRY TO CDC_PRIVS;
    GRANT SELECT ON SYS.OBJ$ TO CDC_PRIVS;
    GRANT SELECT ON DBA_TABLESPACES TO CDC_PRIVS;
    GRANT SELECT ON DBA_OBJECTS TO CDC_PRIVS;
    GRANT SELECT ON SYS.ENC$ TO CDC_PRIVS;
    GRANT SELECT ON <schema>.<table> TO CDC_PRIVS;
    
    -- The following privileges are required additionally for 19c compared to 12c.
    GRANT SELECT ON V_$ARCHIVED_LOG TO CDC_PRIVS;
    GRANT SELECT ON V_$LOG TO CDC_PRIVS;
    GRANT SELECT ON V_$LOGFILE TO CDC_PRIVS;
    GRANT SELECT ON V_$INSTANCE to CDC_PRIVS;
    

    Database Vault を使用している場合は、以下のコマンドを入力します。

    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR_D TO CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR_LOGREP_DICT TO CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR_SESSION TO CDC_PRIVS;
    
  2. ユーザー名とパスワードを作成し、そのユーザーに権限を付与します(任意のユーザー名とパスワードを使用できます)。

    CREATE USER MYUSER IDENTIFIED BY password DEFAULT TABLESPACE USERS;
    ALTER USER MYUSER QUOTA UNLIMITED ON USERS;
    GRANT SELECT ON <schema>.<table> TO CDC_PRIVS;
    
    GRANT CDC_PRIVS to MYUSER;
    

マルチテナントデータベース(CDB)

正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順例では、ロール名として C##CDC_PRIVS を使用しています。

  1. SYSDBA として以下の SQL コマンドを入力し、ロールを作成してそのロールに権限を付与します。

    CREATE ROLE C##CDC_PRIVS;
    GRANT CREATE SESSION TO C##CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO C##CDC_PRIVS;
    GRANT LOGMINING TO C##CDC_PRIVS;
    GRANT SELECT ON V_$LOGMNR_CONTENTS TO C##CDC_PRIVS;
    GRANT SELECT ON V_$DATABASE TO C##CDC_PRIVS;
    GRANT SELECT ON V_$THREAD TO C##CDC_PRIVS;
    GRANT SELECT ON V_$PARAMETER TO C##CDC_PRIVS;
    GRANT SELECT ON V_$NLS_PARAMETERS TO C##CDC_PRIVS;
    GRANT SELECT ON V_$TIMEZONE_NAMES TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_INDEXES TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_OBJECTS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_USERS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_CATALOG TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_CONSTRAINTS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_CONS_COLUMNS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_TAB_COLS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_IND_COLUMNS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_LOG_GROUPS TO C##CDC_PRIVS;
    GRANT SELECT ON ALL_TAB_PARTITIONS TO C##CDC_PRIVS;
    GRANT SELECT ON SYS.DBA_REGISTRY TO C##CDC_PRIVS;
    GRANT SELECT ON SYS.OBJ$ TO C##CDC_PRIVS;
    GRANT SELECT ON DBA_TABLESPACES TO C##CDC_PRIVS;
    GRANT SELECT ON DBA_OBJECTS TO C##CDC_PRIVS;
    GRANT SELECT ON SYS.ENC$ TO C##CDC_PRIVS;
    GRANT SELECT ON <schema>.<table> TO C##CDC_PRIVS;
    
    -- The following privileges are required additionally for 19c compared to 12c.
    GRANT SELECT ON V_$ARCHIVED_LOG TO C##CDC_PRIVS;
    GRANT SELECT ON V_$LOG TO C##CDC_PRIVS;
    GRANT SELECT ON V_$LOGFILE TO C##CDC_PRIVS;
    GRANT SELECT ON V_$INSTANCE to C##CDC_PRIVS;
    

    Database Vault を使用している場合は、以下のコマンドを入力します。

    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO C##CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR_D TO C##CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR_LOGREP_DICT TO C##CDC_PRIVS;
    GRANT EXECUTE ON SYS.DBMS_LOGMNR_SESSION TO C##CDC_PRIVS;
    
  2. ユーザー名とパスワードを作成し、そのユーザーに権限を付与します。任意のユーザー名とパスワードを使用できます。

    CREATE USER C##MYUSER IDENTIFIED BY password DEFAULT TABLESPACE USERS;
    ALTER USER C##MYUSER QUOTA UNLIMITED ON USERS;
    GRANT SELECT ON <schema>.<table> TO C##CDC_PRIVS;
    
    GRANT C##CDC_PRIVS to C##MYUSER;
    

重要

コネクターを構成するときに、このユーザーアカウントを JDBC 認証情報に使用します。JDBC ユーザー名として、c## を含むユーザー名全体を使用します。

マルチテナントデータベース(PDB)

正しいデータベース権限を持つ共通ユーザーをセットアップするには、SYSDBA としてログインし、以下の SQL コマンドを入力して、必要な権限を持つユーザーのロールを作成します(ロールには任意の名前を付けることができます)。

注釈

共通ユーザーアカウントは cdb$root に作成され、c##<name> または C##<name> の命名規則を使用している必要があります。以下の例では、ユーザー C##MYUSER とロール C##CDC_PRIVS を使用しています。

ALTER SESSION SET CONTAINER=CDB$ROOT;
CREATE ROLE C##CDC_PRIVS;
CREATE USER C##MYUSER IDENTIFIED BY password CONTAINER=ALL;
ALTER USER C##MYUSER QUOTA UNLIMITED ON USERS;
ALTER USER C##MYUSER SET CONTAINER_DATA = (CDB$ROOT, <pdb-name>) CONTAINER=CURRENT;
GRANT C##CDC_PRIVS to C##MYUSER CONTAINER=ALL;

GRANT CREATE SESSION TO C##CDC_PRIVS CONTAINER=ALL;
GRANT EXECUTE ON SYS.DBMS_LOGMNR TO C##CDC_PRIVS CONTAINER=ALL;
GRANT LOGMINING TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$DATABASE TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$THREAD TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$PARAMETER TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$NLS_PARAMETERS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$TIMEZONE_NAMES TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_INDEXES TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_OBJECTS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_USERS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_CATALOG TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_CONSTRAINTS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_CONS_COLUMNS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_TAB_COLS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_IND_COLUMNS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_LOG_GROUPS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON ALL_TAB_PARTITIONS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON SYS.DBA_REGISTRY TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON SYS.OBJ$ TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON DBA_TABLESPACES TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON DBA_OBJECTS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON SYS.ENC$ TO C##CDC_PRIVS CONTAINER=ALL;
GRANT CONNECT TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON DBA_PDBS TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON CDB_TABLES TO C##CDC_PRIVS CONTAINER=ALL;

ALTER SESSION SET CONTAINER=<pdb-name>;
GRANT SELECT ON <schema>.<table> TO C##CDC_PRIVS;

ALTER SESSION SET CONTAINER=CDB$ROOT;
-- The following privileges are required additionally for 19c compared to 12c.
GRANT SELECT ON V_$ARCHIVED_LOG TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$LOG TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$LOGFILE TO C##CDC_PRIVS CONTAINER=ALL;
GRANT SELECT ON V_$INSTANCE to C##CDC_PRIVS CONTAINER=ALL;

重要

コネクターを構成するときに、このユーザーアカウントを JDBC 認証情報に使用します。JDBC ユーザー名として、c## を含むユーザー名全体を使用します。

Amazon RDS

重要

Oracle CDC Source Connector は、Amazon RDS 用の Oracle 読み取り専用レプリカでは動作しません。コネクターは Oracle が推奨する オンラインカタログ を使用します。この場合、データベースが書き込みアクセス用に開いている必要があります。詳細については、『Amazon RDS での Oracle レプリカの使用』を参照してください。

Amazon RDS ではユーザーが SYSDBA としてログインすることが許可されません。そのため、ロールを作成することができません。以下の手順を実行して、最初にユーザーを作成し、その後で必要な権限を付与します。

  1. 以下のコマンドを入力して、ユーザーを作成します。

    CREATE USER DB_USER IDENTIFIED BY PASSWORD DEFAULT TABLESPACE USERS;
    ALTER USER DB_USER QUOTA UNLIMITED ON USERS;
    
    GRANT CREATE SESSION TO DB_USER;
    GRANT SELECT ON DBA_TABLESPACES TO DB_USER;
    GRANT LOGMINING TO DB_USER;
    
    GRANT SELECT ON <schema>.<table> TO DB_USER;
    
  2. 以下のコマンドを入力して、Amazon RDS プロシージャを使用する SYS オブジェクトに SELECT および EXECUTE 権限を付与します。

    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','DB_USER','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'DB_USER', 'EXECUTE');
    
    -- The following privileges are required additionally for 19c compared to 12c
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE', 'DB_USER', 'SELECT');
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD');
    

ARCHIVELOG モードをオンにする

LogMiner ディクショナリを redo ログファイルに抽出するには、データベースを開き、ARCHIVELOG モード にする必要があります。以下の手順を完了したら、データベースをシャットダウンする必要があります。

注釈

データベースに対して ARCHIVELOG モードが既に有効になっている場合は、以下の手順をスキップできます。AWS RDS Oracle インスタンスでは ARCHIVELOG モードがデフォルトで有効になっています。

  1. SYSDBA 権限を持つユーザーとして接続します。データベースの ARCHIVELOG モードを確認します。LOG_MODEARCHIVELOG の場合は、「ARCHIVELOG モードをオンにする」セクションはスキップできます。

    SQL> SELECT LOG_MODE FROM V$DATABASE;
    
    LOG_MODE
    ------------
    NOARCHIVELOG
    
  2. コマンド SHUTDOWN IMMEDIATE を使用して、データベースインスタンスをシャットダウンします。

    SQL> SHUTDOWN IMMEDIATE;
    
  3. すべてのデータファイルと制御ファイルを含む、データベースの完全バックアップを作成します。この操作を実行するには、オペレーティングシステムコマンドまたは RMAN を使用できます。このバックアップは将来、データベースが ARCHIVELOG モードになってから作成されたアーカイブ済み redo ログファイルに基づくリカバリで使用できます。

  4. インスタンスを起動し、コマンド STARTUP MOUNT を使用してデータベースをマウントします。

    SQL> STARTUP MOUNT;
    
  5. コマンド ALTER DATABASE ARCHIVELOG を使用してデータベースを ARCHIVELOG モードにし、コマンド ALTER DATABASE OPEN を使用してデータベースを開きます。

    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    
  6. データベースの ARCHIVELOG モードを確認します。

    SQL> SELECT LOG_MODE FROM V$DATABASE;
    
    LOG_MODE
    ------------
    ARCHIVELOG
    

Oracle Real Application Clusters(RAC)を使用する場合は、以下の手順を実行して ARCHIVELOG を有効にしてください。

   SQL> SELECT LOG_MODE FROM V$DATABASE;

LOG_MODE
   ------------
NOARCHIVELOG
  1. データベースサービスを停止します。

    srvctl stop database -d <Service Name>
    
  2. マウントステートでデータベースを起動します。

    srvctl start database -d <Service Name> -o mount
    
  3. ARCHIVELOG モードを有効にします。

    SQL> ALTER DATABASE ARCHIVELOG;
    Database altered.
    
  4. データベースサービスを再起動します(SRVCTL を使用)。

    srvctl stop database -d <Service Name>
    
    srvctl start database -d <Service Name>
    
  5. データベースの ARCHIVELOG モードを確認します。

    SQL> SELECT LOG_MODE FROM V$DATABASE;
    
    LOG_MODE
    ------------
    ARCHIVELOG
    

すべての列についてサプリメンタルロギングを有効にする

このセクションでは、すべての列に対するサプリメンタルロギングを有効にするためのコマンドについて説明します。

非コンテナーデータベースおよびマルチテナントデータベース

以下のコマンドを入力して、行がアップデートされるときに、その行のすべての列(LOB、LONGS、ADT を除く)が redo ログファイルに配置されることを指定します(このコマンドを実行するには、適切な権限が必要です)。

  1. セッションコンテナーを設定します。

    ALTER SESSION SET CONTAINER=cdb$root;
    
  2. すべてのテーブルについて完全なサプリメンタルロギングを有効にするには、以下のコマンドを入力します。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    

    特定のテーブルについて完全なサプリメンタルロギングを有効にするには、以下のコマンドを実行します。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    ALTER SESSION SET CONTAINER=<pdb-name>; -- ONLY FOR PDB
    ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    

注釈

PDB データベースでは最低でも、CDB$ROOT に対して最小限のサプリメンタルロギングを有効にする必要があります。その後に、完全なサプリメンタルロギングを PDB レベルで有効にできます。または、完全なサプリメンタルロギングを CDB$ROOT に対して有効にしてから、CDB 全体に適用できます。

Amazon RDS Oracle 19c/12c インスタンス

重要

Oracle CDC Source Connector は、Amazon RDS 用の Oracle 読み取り専用レプリカでは動作しません。コネクターは Oracle が推奨する オンラインカタログ を使用します。この場合、データベースが書き込みアクセス用に開いている必要があります。詳細については、『Amazon RDS での Oracle レプリカの使用』を参照してください。

以下の exec コマンドを実行します。

exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);

すべてのテーブルについて完全なサプリメンタルロギングを有効にするには、このコマンドを実行します。

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');

個々のテーブルについて完全なサプリメンタルロギングを有効にするには、以下のコマンドを実行します。

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

ユーザーに Flashback クエリ権限を付与する

取り込んだテーブルに対してスナップショットを実行するには、取り込んだテーブルに対し、コネクターでユーザーが Flashback クエリを実行する権限(つまり SELECT AS OF)を持つ必要があります。以下のコマンドを実行して、ユーザーにデータベースに対して Flashback クエリを実行する権限を付与します。

GRANT FLASHBACK ANY TABLE TO myuser;

特定のテーブルで FLASHBACK クエリを有効にするには、次のように入力します。

GRANT FLASHBACK ON <schema>.<table> TO myuser;

注釈

(変更イベントを生成しないで)redo ログを取り込む場合、または start.from を使用して既知のシステム変更番号(SCN)またはタイムスタンプから開始する変更イベントを生成する場合、このコマンドは不要です。

たとえば、以下のコマンドを入力すると、既に作成したサンプルロールに、非コンテナーデータベースへの FLASHBACK 権限が付与されます。

GRANT FLASHBACK ON <schema>.<table> TO CDC_PRIVS

たとえば、以下のコマンドを入力すると、上記で作成したサンプルロールに、コンテナーデータベースまたはマルチテナントデータベースへの FLASHBACK 権限が付与されます。

ALTER SESSION SET CONTAINER=<pdb-name>;
GRANT FLASHBACK ON <schema>.<table> TO C##CDC_PRIVS

Amazon RDS for Oracle 19c/12c インスタンス

GRANT FLASHBACK ON <schema>.<table> TO DB_USER;

スタートアップ構成と事前準備の完了を検証する

このセクションでは、すべての前提条件が満たされていることを確認する手順について説明します。例として以下の値を使用します。

  • ロール名: CDB_PRIVS および C##CDC_PRIVS
  • ユーザー名: MYUSERC##MYUSERDB_USER
  • テーブル名: CUSTOMERSCUSTOMERS テーブルは、以下のスキーマのいずれかに基づいて作成されます。
    • ANOTHERUSER (非コンテナーデータベース 11g、12c、18c、および 19c の場合)
    • C##ANOTHERUSER (コンテナーデータベース(CDB)およびマルチテナントデータベース(PDB)の場合(Oracle 12c、18c、および 19c))
    • ADMIN (Amazon RDS for Oracle の場合)

注釈

以下のサブセクションで使用されている数値は、検証例を実行した場合の値とは異なることがあります。

非コンテナーデータベース

  1. SYSDBA としてログインし、以下のコマンドを入力します。

    -- Use the following SQL statement if privileges granted to a role (``CDC_PRIVS``) and the role granted to a user (``MYUSER``).
    
    SELECT GRANTEE, OWNER, TABLE_NAME
    FROM DBA_TAB_PRIVS
    WHERE GRANTEE IN (SELECT granted_role
                      FROM DBA_ROLE_PRIVS
                      WHERE GRANTEE = 'MYUSER')
    AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS');
    
    GRANTEE           OWNER          TABLE_NAME
    -------------------------------------------
    CDC_PRIVS         SYS            DBMS_LOGMNR
    
    CDC_PRIVS         SYS            V_$LOGMNR_CONTENTS
    
    -- Use the following SQL statement if privileges granted directly to a user (``MYUSER``).
    
    SELECT GRANTEE, OWNER, TABLE_NAME
    FROM DBA_TAB_PRIVS
    WHERE GRANTEE = 'MYUSER'
    AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS');
    
    GRANTEE           OWNER          TABLE_NAME
    -------------------------------------------
    MYUSER            SYS            DBMS_LOGMNR
    
    MYUSER            SYS            V_$LOGMNR_CONTENTS
    
  2. 以下のコマンドを使用して、check_prerequisites.sql を作成します。

    SELECT * FROM SESSION_PRIVS;
    SELECT LOG_MODE FROM V$DATABASE;
    SELECT COUNT(*) FROM V$DATABASE;
    SELECT COUNT(*) FROM V$THREAD;
    SELECT COUNT(*) FROM V$PARAMETER;
    SELECT COUNT(*) FROM V$NLS_PARAMETERS;
    SELECT COUNT(*) FROM V$TIMEZONE_NAMES;
    SELECT COUNT(*) FROM ALL_INDEXES;
    SELECT COUNT(*) FROM ALL_OBJECTS;
    SELECT COUNT(*) FROM ALL_USERS;
    SELECT COUNT(*) FROM ALL_CATALOG;
    SELECT COUNT(*) FROM ALL_CONSTRAINTS;
    SELECT COUNT(*) FROM ALL_CONS_COLUMNS;
    SELECT COUNT(*) FROM ALL_TAB_COLS;
    SELECT COUNT(*) FROM ALL_IND_COLUMNS;
    SELECT COUNT(*) FROM ALL_ENCRYPTED_COLUMNS;
    SELECT COUNT(*) FROM ALL_LOG_GROUPS;
    SELECT COUNT(*) FROM ALL_TAB_PARTITIONS;
    SELECT COUNT(*) FROM SYS.DBA_REGISTRY;
    SELECT COUNT(*) FROM SYS.OBJ$;
    SELECT COUNT(*) FROM DBA_TABLESPACES;
    SELECT COUNT(*) FROM DBA_OBJECTS;
    SELECT COUNT(*) FROM SYS.ENC$;
    SELECT COUNT(*) FROM ANOTHERUSER.CUSTOMERS;
    -- Flashback query privilege
    SELECT COUNT(*) FROM ANOTHERUSER.CUSTOMERS AS OF TIMESTAMP SYSDATE;
    
    -- Added for 19C
    SELECT count(*) FROM V$ARCHIVED_LOG;
    SELECT count(*) FROM V$LOG;
    SELECT count(*) FROM V$LOGFILE;
    SELECT count(*) FROM V$INSTANCE;
    SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
    
  3. MYUSER (以前に作成済み)を使用してログインし、次を入力します。

    SQL> @check_prerequisites.sql
    
    PRIVILEGE
    ----------------------------------------
    CREATE SESSION
    LOGMINING
    
    LOG_MODE
    ------------
    ARCHIVELOG
    
      COUNT(*)
    ----------
        1
    
      COUNT(*)
    ----------
        1
    
      COUNT(*)
    ----------
            344
    
      COUNT(*)
    ----------
        19
    
      COUNT(*)
    ----------
          2164
    
      COUNT(*)
    ----------
        88
    
      COUNT(*)
    ----------
          7261
    
      COUNT(*)
    ----------
        14
    
      COUNT(*)
    ----------
          5656
    
      COUNT(*)
    ----------
            197
    
      COUNT(*)
    ----------
            266
    
      COUNT(*)
    ----------
          20926
    
      COUNT(*)
    ----------
            142
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        2
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        5
    
      COUNT(*)
    ----------
          19512
    
      COUNT(*)
    ----------
        5
    
      COUNT(*)
    ----------
          18658
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        10
    
      COUNT(*)
    ----------
        10
    
      COUNT(*)
    ----------
        2
    
      COUNT(*)
    ----------
        3
    
      COUNT(*)
    ----------
        3
    
      COUNT(*)
    ----------
        1
    
     SEQUENCE#
    ----------
        20
    
  4. MYUSER (以前に作成済み)を使用してログインし、以下のコマンドを入力します。

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_ALL FROM V$DATABASE;
    
    -- If full supplemental logging is enabled for all tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  YES
    
    
    -- If full supplemental logging is enabled for specific tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  NO
    
    
    -- If full supplemental logging is enabled for specific tables, enter the following command.
    
    SELECT * FROM ALL_LOG_GROUPS WHERE LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='ANOTHERUSER' and TABLE_NAME='CUSTOMERS';
    
    OWNER          LOG_GROUP_NAME          TABLE_NAME           LOG_GROUP_TYPE          ALWAYS            GENERATED
    -------------- ----------------------- -------------------- ----------------------- ----------------- -------------------------
    ANOTHERUSER SYS_C007542             CUSTOMERS            ALL COLUMN LOGGING      ALWAYS            GENERATED NAME
    

マルチテナントデータベース(CDB)

  1. SYSDBA としてログインし、以下のコマンドを入力します。

    -- Use the following SQL statement if privileges granted to a role (``C##CDC_PRIVS``) and the role granted to a user (``C##MYUSER``).
    
        SELECT GRANTEE, OWNER, TABLE_NAME
        FROM DBA_TAB_PRIVS
        WHERE GRANTEE IN (SELECT granted_role
                          FROM DBA_ROLE_PRIVS
                          WHERE GRANTEE = 'C##MYUSER')
        AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS');
    
        GRANTEE           OWNER          TABLE_NAME
        -------------------------------------------
        C##CDC_PRIVS      SYS            DBMS_LOGMNR
    
        C##CDC_PRIVS      SYS            V_$LOGMNR_CONTENTS
    
    
        -- Use the following SQL statement if privileges granted directly to a user (``C##MYUSER``).
    
        SELECT GRANTEE, OWNER, TABLE_NAME
        FROM DBA_TAB_PRIVS
        WHERE GRANTEE = 'C##MYUSER'
        AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS');
    
        GRANTEE           OWNER          TABLE_NAME
        -------------------------------------------
        C##MYUSER      SYS            DBMS_LOGMNR
    
        C##MYUSER      SYS            V_$LOGMNR_CONTENTS
    
  2. 以下のコマンドを使用して、check_prerequisites.sql を作成します。

    SELECT * FROM SESSION_PRIVS;
    SELECT LOG_MODE FROM V$DATABASE;
    SELECT COUNT(*) FROM V$DATABASE;
    SELECT COUNT(*) FROM V$THREAD;
    SELECT COUNT(*) FROM V$PARAMETER;
    SELECT COUNT(*) FROM V$NLS_PARAMETERS;
    SELECT COUNT(*) FROM V$TIMEZONE_NAMES;
    SELECT COUNT(*) FROM ALL_INDEXES;
    SELECT COUNT(*) FROM ALL_OBJECTS;
    SELECT COUNT(*) FROM ALL_USERS;
    SELECT COUNT(*) FROM ALL_CATALOG;
    SELECT COUNT(*) FROM ALL_CONSTRAINTS;
    SELECT COUNT(*) FROM ALL_CONS_COLUMNS;
    SELECT COUNT(*) FROM ALL_TAB_COLS;
    SELECT COUNT(*) FROM ALL_IND_COLUMNS;
    SELECT COUNT(*) FROM ALL_ENCRYPTED_COLUMNS;
    SELECT COUNT(*) FROM ALL_LOG_GROUPS;
    SELECT COUNT(*) FROM ALL_TAB_PARTITIONS;
    SELECT COUNT(*) FROM SYS.DBA_REGISTRY;
    SELECT COUNT(*) FROM SYS.OBJ$;
    SELECT COUNT(*) FROM DBA_TABLESPACES;
    SELECT COUNT(*) FROM DBA_OBJECTS;
    SELECT COUNT(*) FROM SYS.ENC$;
    SELECT COUNT(*) FROM C##ANOTHERUSER.CUSTOMERS;
    -- Flashback query privilege
    SELECT COUNT(*) FROM C##ANOTHERUSER.CUSTOMERS AS OF TIMESTAMP SYSDATE;
    
    -- Added for 19C
    SELECT count(*) FROM V$ARCHIVED_LOG;
    SELECT count(*) FROM V$LOG;
    SELECT count(*) FROM V$LOGFILE;
    SELECT count(*) FROM V$INSTANCE;
    SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
    
  3. C##MYUSER(以前に作成済み)を使用してログインし、次を入力します。

    SQL> @check_prerequisites.sql
    
    PRIVILEGE
    ----------------------------------------
    CREATE SESSION
    LOGMINING
    
    LOG_MODE
    ------------
    ARCHIVELOG
    
      COUNT(*)
    ----------
        1
    
      COUNT(*)
    ----------
        1
    
      COUNT(*)
    ----------
          344
    
      COUNT(*)
    ----------
      19
    
      COUNT(*)
    ----------
          2164
    
      COUNT(*)
    ----------
      88
    
      COUNT(*)
    ----------
          7261
    
      COUNT(*)
    ----------
      14
    
      COUNT(*)
    ----------
          5656
    
      COUNT(*)
    ----------
          197
    
      COUNT(*)
    ----------
          266
    
      COUNT(*)
    ----------
        20926
    
      COUNT(*)
    ----------
          142
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        2
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        5
    
      COUNT(*)
    ----------
        19512
    
      COUNT(*)
    ----------
        5
    
      COUNT(*)
    ----------
        18658
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
      10
    
      COUNT(*)
    ----------
      10
    
      COUNT(*)
    ----------
      2
    
      COUNT(*)
    ----------
      3
    
      COUNT(*)
    ----------
      3
    
      COUNT(*)
    ----------
      1
    SEQUENCE#
    ----------
        20
    
  4. C##MYUSER(以前に作成済み)を使用してログインし、以下のコマンドを入力します。

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_ALL FROM V$DATABASE;
    
    -- If full supplemental logging is enabled for all tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  YES
    
    
    -- If full supplemental logging is enabled for specific tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  NO
    
    
    -- If full supplemental logging is enabled for specific tables, enter the following command.
    
    SELECT * FROM ALL_LOG_GROUPS WHERE LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='C##ANOTHERUSER' and TABLE_NAME='CUSTOMERS';
    
    OWNER          LOG_GROUP_NAME          TABLE_NAME           LOG_GROUP_TYPE          ALWAYS            GENERATED
    -------------- ----------------------- -------------------- ----------------------- ----------------- -------------------------
    C##ANOTHERUSER SYS_C007542             CUSTOMERS            ALL COLUMN LOGGING      ALWAYS            GENERATED NAME
    

マルチテナントデータベース(PDB)

  1. SYSDBA としてログインし、以下のコマンドを入力します。

    ALTER SESSION SET CONTAINER=CDB$ROOT;
    
    -- Use the following SQL statement if privileges granted to a role (``C##CDC_PRIVS``) and the role granted to a user (``C##MYUSER``).
    
    SELECT GRANTEE, OWNER, TABLE_NAME
    FROM DBA_TAB_PRIVS
    WHERE GRANTEE IN (SELECT granted_role
                      FROM DBA_ROLE_PRIVS
                      WHERE GRANTEE = 'C##MYUSER')
    AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS');
    
    GRANTEE           OWNER          TABLE_NAME
    -------------------------------------------
    C##CDC_PRIVS      SYS            DBMS_LOGMNR
    
    C##CDC_PRIVS      SYS            V_$LOGMNR_CONTENTS
    
    -- Use the following SQL statement if privileges granted directly to a user (``C##MYUSER``).
    
    SELECT GRANTEE, OWNER, TABLE_NAME
    FROM DBA_TAB_PRIVS
    WHERE GRANTEE = 'C##MYUSER'
    AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS');
    
    GRANTEE           OWNER          TABLE_NAME
    -------------------------------------------
    C##MYUSER      SYS            DBMS_LOGMNR
    
    C##MYUSER      SYS            V_$LOGMNR_CONTENTS
    
  2. 以下のコマンドを使用して、check_prerequisites.sql を作成します。

    ALTER SESSION SET CONTAINER=CDB$ROOT;
    SELECT * FROM SESSION_PRIVS;
    SELECT LOG_MODE FROM V$DATABASE;
    SELECT COUNT(*) FROM V$DATABASE;
    SELECT COUNT(*) FROM V$THREAD;
    SELECT COUNT(*) FROM V$PARAMETER;
    SELECT COUNT(*) FROM V$NLS_PARAMETERS;
    SELECT COUNT(*) FROM V$TIMEZONE_NAMES;
    SELECT COUNT(*) FROM ALL_INDEXES;
    SELECT COUNT(*) FROM ALL_OBJECTS;
    SELECT COUNT(*) FROM ALL_USERS;
    SELECT COUNT(*) FROM ALL_CATALOG;
    SELECT COUNT(*) FROM ALL_CONSTRAINTS;
    SELECT COUNT(*) FROM ALL_CONS_COLUMNS;
    SELECT COUNT(*) FROM ALL_TAB_COLS;
    SELECT COUNT(*) FROM ALL_IND_COLUMNS;
    SELECT COUNT(*) FROM ALL_ENCRYPTED_COLUMNS;
    SELECT COUNT(*) FROM ALL_LOG_GROUPS;
    SELECT COUNT(*) FROM ALL_TAB_PARTITIONS;
    SELECT COUNT(*) FROM SYS.DBA_REGISTRY;
    SELECT COUNT(*) FROM SYS.OBJ$;
    SELECT COUNT(*) FROM DBA_TABLESPACES;
    SELECT COUNT(*) FROM DBA_OBJECTS;
    SELECT COUNT(*) FROM SYS.ENC$;
    SELECT COUNT(*) FROM DBA_PDBS;
    SELECT COUNT(*) FROM CDB_TABLES;
    
    ALTER SESSION SET CONTAINER=<pdb-name>;
    SELECT COUNT(*) FROM C##ANOTHERUSER.CUSTOMERS;
    -- Flashback query privilege
    SELECT COUNT(*) FROM C##ANOTHERUSER.CUSTOMERS AS OF TIMESTAMP SYSDATE;
    
    -- Added for 19C
    SELECT count(*) FROM V$ARCHIVED_LOG;
    SELECT count(*) FROM V$LOG;
    SELECT count(*) FROM V$LOGFILE;
    SELECT count(*) FROM V$INSTANCE;
    SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
    
  3. C##MYUSER (以前に作成済み)を使用してログインし、次を入力します。

    SQL> @check_prerequisites.sql
    
    SQL> @check_prerequisites.sql
    
    Session altered.
    
    PRIVILEGE
    ----------------------------------------
    CREATE SESSION
    LOGMINING
    SET CONTAINER
    
    LOG_MODE
    ------------
    ARCHIVELOG
    
    
      COUNT(*)
    ----------
        1
    
      COUNT(*)
    ----------
        1
    
      COUNT(*)
    ----------
            344
    
      COUNT(*)
    ----------
        19
    
      COUNT(*)
    ----------
          2164
    
      COUNT(*)
    ----------
        88
    
      COUNT(*)
    ----------
          7261
    
      COUNT(*)
    ----------
        14
    
      COUNT(*)
    ----------
          5656
    
      COUNT(*)
    ----------
            197
    
      COUNT(*)
    ----------
            266
    
      COUNT(*)
    ----------
          20926
    
      COUNT(*)
    ----------
            142
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        2
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        5
    
      COUNT(*)
    ----------
          19512
    
      COUNT(*)
    ----------
        5
    
      COUNT(*)
    ----------
          18658
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
              1
    
      COUNT(*)
    ----------
          4213
    
    Session altered.
    
      COUNT(*)
    ----------
              15
    
      COUNT(*)
    ----------
        15
    
      COUNT(*)
    ----------
        0
    
      COUNT(*)
    ----------
        3
    
      COUNT(*)
    ----------
        3
    
      COUNT(*)
    ----------
        1
    
      SEQUENCE#
    ----------
        20
    
  4. C##MYUSER (以前に作成済み)を使用してログインし、以下のコマンドを入力します。

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_ALL FROM V$DATABASE;
    
    -- If full supplemental logging is enabled for all tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  YES
    
    -- If full supplemental logging is enabled for specific tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  NO
    
    -- If full supplemental logging is enabled for specific tables, enter the following command.
    ALTER SESSION SET CONTAINER=ORCLPDB1;
    SELECT * FROM ALL_LOG_GROUPS WHERE LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='C##ANOTHERUSER' and TABLE_NAME='CUSTOMERS';
    
    OWNER          LOG_GROUP_NAME          TABLE_NAME           LOG_GROUP_TYPE          ALWAYS            GENERATED
    -------------- ----------------------- -------------------- ----------------------- ----------------- -------------------------
    C##ANOTHERUSER SYS_C007542             CUSTOMERS            ALL COLUMN LOGGING      ALWAYS            GENERATED NAME
    

Amazon RDS

  1. ADMIN としてログインし、次を入力します。

    -- Use the following SQL statement if privileges granted directly to a user (``DB_USER``).
    
    SELECT GRANTEE, OWNER, TABLE_NAME
    FROM DBA_TAB_PRIVS
    WHERE GRANTEE = 'DB_USER'
    AND (TABLE_NAME='DBMS_LOGMNR' OR TABLE_NAME='V_$LOGMNR_CONTENTS' OR TABLE_NAME='OBJ$');
    
    GRANTEE           OWNER          TABLE_NAME
    -------------------------------------------
    DB_USER          SYS            DBMS_LOGMNR
    
    DB_USER          SYS            V_$LOGMNR_CONTENTS
    
    DB_USER          SYS            OBJ$
    
  2. 以下のコマンドを使用して、check_prerequisites.sql を作成します。

    SELECT COUNT(*) FROM DBA_TABLESPACES;
    SELECT * FROM SESSION_PRIVS;
    SELECT LOG_MODE FROM V$DATABASE;
    SELECT COUNT(*) FROM ALL_VIEWS;
    SELECT COUNT(*) FROM ALL_TAB_PARTITIONS;
    SELECT COUNT(*) FROM ALL_INDEXES;
    SELECT COUNT(*) FROM ALL_OBJECTS;
    SELECT COUNT(*) FROM ALL_TABLES;
    SELECT COUNT(*) FROM ALL_USERS;
    SELECT COUNT(*) FROM ALL_CATALOG;
    SELECT COUNT(*) FROM ALL_CONSTRAINTS;
    SELECT COUNT(*) FROM ALL_CONS_COLUMNS;
    SELECT COUNT(*) FROM ALL_TAB_COLS;
    SELECT COUNT(*) FROM ALL_IND_COLUMNS;
    SELECT COUNT(*) FROM ALL_LOG_GROUPS;
    SELECT COUNT(*) FROM V$ARCHIVED_LOG;
    SELECT COUNT(*) FROM V$LOG;
    SELECT COUNT(*) FROM V$LOGFILE;
    SELECT COUNT(*) FROM V$DATABASE;
    SELECT COUNT(*) FROM V$THREAD;
    SELECT COUNT(*) FROM V$PARAMETER;
    SELECT COUNT(*) FROM V$NLS_PARAMETERS;
    SELECT COUNT(*) FROM V$TIMEZONE_NAMES;
    SELECT COUNT(*) FROM V$TRANSACTION;
    SELECT COUNT(*) FROM SYS.DBA_REGISTRY;
    SELECT COUNT(*) FROM ALL_ENCRYPTED_COLUMNS;
    SELECT COUNT(*) FROM V$LOGMNR_LOGS;
    SELECT COUNT(*) FROM ADMIN.CUSTOMERS;
    -- Flashback query privilege
    SELECT COUNT(*) FROM ADMIN.CUSTOMERS AS OF TIMESTAMP SYSDATE;
    SELECT count(*) FROM V$INSTANCE;
    SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
    
  3. DB_USER (以前に作成済み)を使用してログインし、次を入力します。

    SQL> @check_prerequisites.sql
    
      COUNT(*)
    ----------
      6
    
    
    PRIVILEGE
    ----------------------------------------
    LOGMINING
    CREATE SESSION
    
    LOG_MODE
    ------------
    ARCHIVELOG
    
      COUNT(*)
    ----------
          1765
    
    
      COUNT(*)
    ----------
      0
    
    
      COUNT(*)
    ----------
      57
    
    
      COUNT(*)
    ----------
          9368
    
    
      COUNT(*)
    ----------
      53
    
    
      COUNT(*)
    ----------
      25
    
    
      COUNT(*)
    ----------
          7700
    
    
      COUNT(*)
    ----------
      80
    
    
      COUNT(*)
    ----------
      73
    
    
      COUNT(*)
    ----------
        22606
    
    
      COUNT(*)
    ----------
          101
    
    
      COUNT(*)
    ----------
      1
    
    
      COUNT(*)
    ----------
      57
    
    
      COUNT(*)
    ----------
      4
    
    
      COUNT(*)
    ----------
      4
    
    
      COUNT(*)
    ----------
      1
    
    
      COUNT(*)
    ----------
      1
    
    
      COUNT(*)
    ----------
          420
    
    
      COUNT(*)
    ----------
      19
    
    
      COUNT(*)
    ----------
          2408
    
    
      COUNT(*)
    ----------
      0
    
    
      COUNT(*)
    ----------
      4
    
    
      COUNT(*)
    ----------
      0
    
    
      COUNT(*)
    ----------
      0
    
    
      COUNT(*)
    ----------
      8
    
    
      COUNT(*)
    ----------
      8
    
    
      COUNT(*)
    ----------
        1
    
     SEQUENCE#
    ----------
        20
    
  4. DB_USER (以前に作成済み)を使用してログインし、以下のコマンドを入力します。

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_ALL FROM V$DATABASE;
    
    -- If full supplemental logging is enabled for all tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES NO  YES
    
    
    -- If full supplemental logging is enabled for specific tables, the following is returned.
    
    SUPPLEME SUP SUP
    -------- --- ----
    YES      NO  NO
    
    
    -- If full supplemental logging is enabled for specific tables, enter the following command.
    
    SELECT * FROM ALL_LOG_GROUPS WHERE LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='ADMIN' and TABLE_NAME='CUSTOMERS';
    
    OWNER          LOG_GROUP_NAME          TABLE_NAME           LOG_GROUP_TYPE          ALWAYS            GENERATED
    -------------- ----------------------- -------------------- ----------------------- ----------------- -------------------------
    ADMIN          SYS_C006989             CUSTOMERS            ALL COLUMN LOGGING      ALWAYS            GENERATED NAME