# XStreamモードの前提条件

## 始める前に

でTalend Studio[XStream]モードを使用するCDCを設定する前に、Oracleデータベースの管理者は次を実行する必要があります。

1. [Oracle XStreamモードでアーカイブログモードの有効化](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0/activate-archive-log-mode-in-oracle-xstream-mode)、

2. [OracleのCDBのすべてのPDBを開く](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0/open-all-pdbs-for-cdb-in-oracle)、

3. [XStream管理者の設定](https://help.qlik.com/talend/ja-JP/studio-user-guide/8.0/configure-xstream-administrator)。

## Oracle XStreamモードでアーカイブログモードの有効化

### 手順

1. 管理ユーザーとしてOracleデータベースに接続し、次のステートメントを実行してアーカイブ情報を表示します。
   ```
   archive log list;
   ```
2. データベースがアーカイブログモードで処理されていない場合、次のステートメントを実行してアーカイブログモードを有効化します。
   ```
   shutdown immediate;
                     startup mount;
                     alter database archivelog;
                     alter database open;
   ```

## OracleのCDBのすべてのPDBを開く

Oracleデータベースがコンテナーデータベース(CDB)の場合、XStreamの設定中は、CDBのすべてのプラグイン可能なデータベース(PDB)は必ず読み取り/書き込みモードで開いている必要があります。

### 手順

* PDBのオープンモードを確認するには、管理ユーザーとしてOracleデータベースに接続し、次のステートメントを実行します。
  ```
  select con_id, dbid, guid, name, open_mode from v$pdbs;
  ```
* PDBを開くには、管理ユーザーとしてOracleデータベースに接続し、次のステートメントを実行します。
  ```
  alter pluggable database all open;
  ```

## XStream管理者の設定

### このタスクについて

XStream管理者を設定するには、ユーザーの作成、権限の付与、およびテーブルスペースの作成を行う権限を持つ管理ユーザーとしてOracleデータベースに接続し、次の手順に従います。

### 手順

1. 次のステートメントを実行してXStream管理者のテーブルスペースを作成します。既存のテーブルスペースを使用する場合はこのステップをスキップします。
   ```
   CREATE TABLESPACE xstream_tbs DATAFILE '$ORACLE_HOME/dbs/xstream_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
   ```
2. 次のステートメントを実行して、XStream管理者となる新しいユーザーを作成します。既存のユーザーを指定する場合は、このステップをスキップします。
   ```
   CREATE USER username IDENTIFIED BY password
                        DEFAULT TABLESPACE xstream_tbs
                        QUOTA UNLIMITED ON xstream_tbs;
   ```

   情報メモ注:
   * CDBでXStream管理者を作成する場合、XStream管理者は一般ユーザーにする必要があります。一般ユーザーの名前はc##またはC##で始まり、ステートメントにはCONTAINER=ALL句を含める必要があります。

   * Oracleのデフォルトのテーブルスペースを使用してXStream管理者を作成する場合、ステートメントのDEFAULT TABLESPACEおよびQUOTA UNLIMITED ON句は削除する必要があります。
3. 次のステートメントおよびプロシージャーを実行してXStream管理者に権限を付与します。
   ```
   GRANT DBA TO username;
                        GRANT CONNECT, CREATE TABLE TO username;
                        GRANT RESOURCE TO username;
                        GRANT CREATE TABLESPACE TO username;
                        GRANT UNLIMITED TABLESPACE TO username;
                        GRANT SELECT_CATALOG_ROLE TO username;
                        GRANT EXECUTE_CATALOG_ROLE TO username;
                        GRANT CREATE SEQUENCE TO username;
                        GRANT CREATE SESSION TO username;
                        GRANT CREATE ANY VIEW TO username;
                        GRANT CREATE ANY TABLE TO username;
                        GRANT SELECT ANY TABLE TO username;
                        GRANT COMMENT ANY TABLE TO username;
                        GRANT LOCK ANY TABLE TO username;
                        GRANT SELECT ANY DICTIONARY TO username;
                        GRANT EXECUTE ON SYS.DBMS_CDC_PUBLISH to username;
                        GRANT CREATE ANY TRIGGER TO username;
                        GRANT ALTER ANY TRIGGER TO username;
                        GRANT DROP ANY TRIGGER TO username;
   ```
   ```
   BEGIN
                        DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
                        grantee => 'username',
                        privilege_type => 'CAPTURE',
                        grant_select_privileges => TRUE);
                        END;
                        /
   ```
   ```
   BEGIN
                        DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
                        grantee => 'username',
                        privilege_type => 'APPLY',
                        grant_select_privileges => TRUE);
                        END;
                        /
   ```

### タスクの結果

一般ユーザーに権限を付与する場合は、上記のGRANTステートメントおよびプロシージャーにCONTAINER=ALL句を含める必要があります。