重要
このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。
Oracle データベースの前提条件¶
このページでは、事前に必要となる Oracle データベースの構成手順と、構成後の検証手順について説明します。
重要
Oracle CDC Source Connector が想定される結果を正常に生成するには、以下の手順を完了する必要があります。
データベースユーザー権限の構成¶
コネクターには、LogMiner を使用する権限と、コネクターによって取り込まれたすべてのテーブルから選択するロール権限を持つデータベースユーザーが必要です。このため、コネクター用に新規のデータベースユーザーを作成しなければならないことがあります。以下の点に注意してください。
- 非コンテナーデータベース用の ローカルユーザー を作成します。ユーザー名は
c##
またはC##
で始まることはできません。 - マルチテナントデータベース用の 共通ユーザー を作成します。ユーザー名は
c##
またはC##
で始まる必要があります。
非コンテナーデータベース¶
正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA
としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順では、ロール名として CDC_PRIVS
を使用しています。
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;
ユーザー名とパスワードを作成し、そのユーザーに権限を付与します(任意のユーザー名とパスワードを使用できます)。
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;
正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA
としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順では、ロール名として CDC_PRIVS
を使用しています。
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;
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;
ユーザー名とパスワードを作成し、そのユーザーに権限を付与します(任意のユーザー名とパスワードを使用できます)。
CREATE USER MYUSER IDENTIFIED BY password DEFAULT TABLESPACE USERS; ALTER USER MYUSER QUOTA UNLIMITED ON USERS; GRANT CDC_PRIVS to MYUSER;
正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA
としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順では、ロール名として CDC_PRIVS
を使用しています。
SYSDBA
として以下の SQL コマンドを入力し、ロールを作成してそのロールに権限を付与します。CREATE ROLE CDC_PRIVS; GRANT CREATE SESSION TO CDC_PRIVS; GRANT EXECUTE ON SYS.DBMS_LOGMNR 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 ANY TRANSACTION TO CDC_PRIVS; GRANT SELECT ON <schema>.<table> TO CDC_PRIVS;
ユーザー名とパスワードを作成し、そのユーザーに権限を付与します。任意のユーザー名とパスワードを使用できます。
CREATE USER MYUSER IDENTIFIED BY password DEFAULT TABLESPACE USERS; ALTER USER MYUSER QUOTA UNLIMITED ON USERS; GRANT CDC_PRIVS to MYUSER;
マルチテナントデータベース(CDB)¶
正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA
としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順例では、ロール名として C##CDC_PRIVS
を使用しています。
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;
ユーザー名とパスワードを作成し、そのユーザーに権限を付与します。任意のユーザー名とパスワードを使用できます。
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##
を含むユーザー名全体を使用します。
正しいデータベース権限を持つ新しいユーザーをセットアップするには、SYSDBA
としてログインし、以下のコマンドを入力して、必要な権限を持つユーザーのロールを作成します。ロールには任意の名前を付けることができます。以下の手順例では、ロール名として C##CDC_PRIVS
を使用しています。
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;
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;
ユーザー名とパスワードを作成し、そのユーザーに権限を付与します。任意のユーザー名とパスワードを使用できます。
CREATE USER C##MYUSER IDENTIFIED BY password DEFAULT TABLESPACE USERS; ALTER USER C##MYUSER QUOTA UNLIMITED ON USERS; 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##
を含むユーザー名全体を使用します。
正しいデータベース権限を持つ共通ユーザーをセットアップするには、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;
重要
コネクターを構成するときに、このユーザーアカウントを JDBC 認証情報に使用します。JDBC ユーザー名として、c##
を含むユーザー名全体を使用します。
Amazon RDS¶
重要
Oracle CDC Source Connector は、Amazon RDS 用の Oracle 読み取り専用レプリカでは動作しません。コネクターは Oracle が推奨する オンラインカタログ を使用します。この場合、データベースが書き込みアクセス用に開いている必要があります。詳細については、『Amazon RDS での Oracle レプリカの使用』を参照してください。
Amazon RDS ではユーザーが SYSDBA
としてログインすることが許可されません。そのため、ロールを作成することができません。以下の手順を実行して、最初にユーザーを作成し、その後で必要な権限を付与します。
以下のコマンドを入力して、ユーザーを作成します。
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;
以下のコマンドを入力して、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');
重要
Oracle CDC Source Connector は、Amazon RDS 用の Oracle 読み取り専用レプリカでは動作しません。コネクターは Oracle が推奨する オンラインカタログ を使用します。この場合、データベースが書き込みアクセス用に開いている必要があります。詳細については、『Amazon RDS での Oracle レプリカの使用』を参照してください。
Amazon RDS ではユーザーが SYSDBA
としてログインすることが許可されません。そのため、ロールを作成することができません。以下の手順を実行して、最初にユーザーを作成し、その後で必要な権限を付与します。
以下のコマンドを入力して、ユーザーを作成します。
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;
以下のコマンドを入力して、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');
ARCHIVELOG モードをオンにする¶
LogMiner ディクショナリを redo ログファイルに抽出するには、データベースを開き、ARCHIVELOG モード にする必要があります。以下の手順を完了したら、データベースをシャットダウンする必要があります。
注釈
データベースに対して ARCHIVELOG
モードが既に有効になっている場合は、以下の手順をスキップできます。AWS RDS Oracle インスタンスでは ARCHIVELOG
モードがデフォルトで有効になっています。
SYSDBA
権限を持つユーザーとして接続します。データベースのARCHIVELOG
モードを確認します。LOG_MODE
がARCHIVELOG
の場合は、「ARCHIVELOG モードをオンにする
」セクションはスキップできます。SQL> SELECT LOG_MODE FROM V$DATABASE; LOG_MODE ------------ NOARCHIVELOG
コマンド
SHUTDOWN IMMEDIATE
を使用して、データベースインスタンスをシャットダウンします。SQL> SHUTDOWN IMMEDIATE;
すべてのデータファイルと制御ファイルを含む、データベースの完全バックアップを作成します。この操作を実行するには、オペレーティングシステムコマンドまたは RMAN を使用できます。このバックアップは将来、データベースが
ARCHIVELOG
モードになってから作成されたアーカイブ済み redo ログファイルに基づくリカバリで使用できます。インスタンスを起動し、コマンド
STARTUP MOUNT
を使用してデータベースをマウントします。SQL> STARTUP MOUNT;
コマンド
ALTER DATABASE ARCHIVELOG
を使用してデータベースをARCHIVELOG
モードにし、コマンドALTER DATABASE OPEN
を使用してデータベースを開きます。SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN;
データベースの
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
データベースサービスを停止します。
srvctl stop database -d <Service Name>
マウントステートでデータベースを起動します。
srvctl start database -d <Service Name> -o mount
ARCHIVELOG
モードを有効にします。SQL> ALTER DATABASE ARCHIVELOG; Database altered.
データベースサービスを再起動します(SRVCTL を使用)。
srvctl stop database -d <Service Name> srvctl start database -d <Service Name>
データベースの
ARCHIVELOG
モードを確認します。SQL> SELECT LOG_MODE FROM V$DATABASE; LOG_MODE ------------ ARCHIVELOG
すべての列についてサプリメンタルロギングを有効にする¶
このセクションでは、すべての列に対するサプリメンタルロギングを有効にするためのコマンドについて説明します。
非コンテナーデータベースおよびマルチテナントデータベース¶
以下のコマンドを入力して、行がアップデートされるときに、その行のすべての列(LOB、LONGS、ADT を除く)が redo ログファイルに配置されることを指定します(このコマンドを実行するには、適切な権限が必要です)。
セッションコンテナーを設定します。
ALTER SESSION SET CONTAINER=cdb$root;
すべてのテーブルについて完全なサプリメンタルロギングを有効にするには、以下のコマンドを入力します。
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
- ユーザー名:
MYUSER
、C##MYUSER
、DB_USER
- テーブル名:
CUSTOMERS
。CUSTOMERS
テーブルは、以下のスキーマのいずれかに基づいて作成されます。ANOTHERUSER
(非コンテナーデータベース 11g、12c、18c、および 19c の場合)C##ANOTHERUSER
(コンテナーデータベース(CDB)およびマルチテナントデータベース(PDB)の場合(Oracle 12c、18c、および 19c))ADMIN
(Amazon RDS for Oracle の場合)
注釈
以下のサブセクションで使用されている数値は、検証例を実行した場合の値とは異なることがあります。
非コンテナーデータベース¶
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
以下のコマンドを使用して、
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';
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
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
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
以下のコマンドを使用して、
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; SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
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 SEQUENCE# ---------- 20
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_C006989 CUSTOMERS ALL COLUMN LOGGING ALWAYS GENERATED NAME
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
以下のコマンドを使用して、
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; SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
MYUSER
(以前に作成済み)を使用してログインし、次を入力します。SQL> @check_prerequisites.sql PRIVILEGE ---------------------------------------- CREATE SESSION SELECT ANY TRANSACTION 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 SEQUENCE# ---------- 20
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_C006989 CUSTOMERS ALL COLUMN LOGGING ALWAYS GENERATED NAME
マルチテナントデータベース(CDB)¶
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
以下のコマンドを使用して、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';
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
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
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
以下のコマンドを使用して、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; SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
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 SEQUENCE# ---------- 20
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_C006989 CUSTOMERS ALL COLUMN LOGGING ALWAYS GENERATED NAME
マルチテナントデータベース(PDB)¶
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
以下のコマンドを使用して、
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';
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
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
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
以下のコマンドを使用して、
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; SELECT SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
C##MYUSER
(以前に作成済み)を使用してログインし、次を入力します。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 SEQUENCE# ---------- 20
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=<pdb-name>; 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_C006989 CUSTOMERS ALL COLUMN LOGGING ALWAYS GENERATED NAME
Amazon RDS¶
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$
以下のコマンドを使用して、
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';
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
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
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$
以下のコマンドを使用して、
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 SEQUENCE# FROM V$LOG WHERE STATUS = 'CURRENT';
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 SEQUENCE# ---------- 20
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