アプリケーション・データベースの移行

Oracle Autonomous Transaction Processingでは、データベース・ホストおよびソフトウェアをメンテナンス、パッチ適用および最適化する必要がないため、データベースのスキーマ・レベルへのアクセスのみが提供されます。 このため、オンプレミス・データベースをAutonomous Transaction Processingに移行するために使用できる移行ツールは、Oracle Databaseに含まれるスキーマ・レベルの移行ツールであるデータ・ポンプに基づいています。

アプリケーション・データベースの移行について

データベース移行プロセスでは、ソース・データベースにデータベース・スキーマ・ダンプを作成し、それをOracle Cloud Infrastructure (OCI)のオブジェクト・ストレージにアップロードして、オブジェクト・ストレージからインポートするようにAutonomous Transaction Processingデータベースを構成し、Oracle Cloud Infrastructure Object Storageからデータベース・スキーマ・ダンプをインポートします。

次に、プロセスの概要を示します。

  1. データベース・スキーマをローカル・ダンプ・ファイルにエクスポートします。
  2. OCI CLIを使用して、ダンプ・ファイルをオブジェクト・ストレージに移動します。
  3. Autonomous DatabaseのOCIDを取得します。
  4. ソース・データベース(または一部の代替ホスト)から自律型データベースにアクセスするためのウォレットを取得します。
  5. 構成用の自律型データベースへのローカルトンネルを作成します。
  6. 自律型データベースがOracle Cloud Infrastructure Object StorageにアクセスするためのOCI認証トークンを取得します。
  7. 自律型データベース・アクセス資格証明を構成します。
  8. ダンプ・ファイルをOracle Cloud Infrastructure Object StorageからAutonomous Databaseにインポートします。

データベース・スキーマおよびデータのエクスポート

データベース・スキーマおよびデータを単一のダンプ・ファイルにエクスポートします。

  1. ダンプ・ファイルのexportフォルダを作成します。
    単一のファイル・ダンプを作成していることに注意してください。このダンプは、状況によっては非常に大きくなる場合があります。データポンプを使用してマルチパート・ファイルを作成するためのその他のオプションを参照してください。
    EXPORT_DB_DIRNAME=export
    mkdir /home/oracle/${ DIRNAME}
    # drop directory if it exists
    echo "DROP DIRECTORY ${EXPORT_DB_DIRNAME};" | sqlplus system/PASSWORD@$HOST:PORT/SERVICE
    # create a directory object in the DB for export with datapump, pointing to the folder created above
    echo "CREATE DIRECTORY ${EXPORT_DB_DIRNAME} AS '/home/oracle/export/';" | sqlplus 
    system/PASSWORD@$HOST:PORT/SERVICE
    # export the schema 
    expdp system/PASSWORD@$HOST:PORT/SERVICE schemas=SCHEMA_NAME 
    DIRECTORY=${EXPORT_DB_DIRNAME}
  2. Oracle Cloud Infrastructure (OCI)コマンドライン・インタフェースを使用して、以前に作成したOracle Cloud Infrastructure Object Storageバケットにダンプ・ファイルを移動します。
    oci os object put \
    -bn bucket-name \
    --file /home/oracle/export/expdat.dmp \
    --name expdat.dmp

Autonomous DatabaseのOCIDの取得

Oracle Autonomous Transaction ProcessingデータベースのOCID、プライベート・エンドポイントIPおよびプライベート・エンドポイントURLを取得します。

  1. Oracle Cloud Infrastructureコンソールで、「Oracle Database」、「Autonomous Transaction Processing」の順に選択します。
  2. ページの左側のコンパートメント・リストからコンパートメントを選択します。
    コンパートメントは、リソースをデプロイした場所です。
  3. 以前にプロビジョニングしたデータベースをクリックして、詳細を表示します。
  4. OCID、プライベート・エンドポイントIPおよびプライベート・エンドポイントURL (ホスト名)をコピーし、後で使用するためにメモ帳に保存します。

データベース・ウォレット・ファイルの取得

Oracle Autonomous Transaction Processingデータベース・ウォレット・ファイルを取得し、sqlnet.oraファイルでウォレット・ロケーションを指すようにディレクトリを設定して、ロケーションを更新します。

  1. Oracle Cloud Infrastructure (OCI)コマンドライン・インタフェースを使用して、OCIDおよびパスワードを使用してAutonomous Transaction Processingデータベース・ウォレット・ファイルを取得します。
    oci db autonomous-database generate-wallet --autonomous-database-
    id your ATP OCID --file wallet.zip --password your-password
  2. ウォレットを解凍します。
    unzip wallet.zip
  3. sqlnet.oraファイルを編集し、解凍したウォレット・ファイルの場所と一致するようにディレクトリ値を置き換えます。
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = 
    (DIRECTORY="/home/oracle/ ")))
    SSL_SERVER_DN_MATCH=yes
  4. ウォレットが解凍されたフォルダと一致するようにTNS_ADMIN環境変数を設定します。
    export TNS_ADMIN=$(pwd)

要塞ホストを介したAutonomous Databaseへのローカル・トンネルの作成

要塞ホストのパブリックIPアドレスを構成してトンネルを作成します。

  1. 地形出力から要塞ホストのパブリックIPを取得します。
    Apache Tomcatサーバーがパブリック・サブネットにデプロイされている場合は、TomcatサーバーのパブリックIPを使用できます。それ以外の場合は、要塞ホストのパブリックIPアドレスを使用します。
  2. 要塞IPを定義してトンネルを作成します。
    export BASTION_IP=Public IP of the bastion
  3. Autonomous Transaction Processingデータベースのプライベート・エンドポイントIPアドレスおよびsshを使用してDBホストをデータベース・ホストにエクスポートするコマンドを実行します。
    このDB_HOSTは、以前に収集されたプライベート・エンドポイントIPです。
    export DB_HOST=10.0.2.2
    ssh -4 -M -S socket -fnNT -L 1522:${DB_HOST}:1522 opc@${BASTION_IP} cat -
    プロンプトが表示されたら、yesを入力して、新しいホストを確認します。
  4. /etc/hostsファイルを編集して、自律型データベースのプライベート・エンドポイント・ホストが127.0.0.1( localhost)を指すようにします。
    これにより、tnsnames.oraファイルでプライベート・エンドポイント・ホストが検索されます。
    ATP_HOSTNAME=$(sed 's|.*(host=\([a-z0-9.-]*\)).*|\1|;' 
    tnsnames.ora | head -n1)
    sudo su -c "printf \"127.0.0.1  ${ATP_HOSTNAME}\n\"  >> 
    /etc/hosts"
  5. エンドポイントが正しいことを確認してください。
    cat /etc/hosts
    出力は次のようになります。
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.19.0.3    58aa534ef636
    127.0.0.1  jrhdeexg.adb.region

認証トークンの生成

データをOracle Cloud Infrastructure Object StorageおよびOracle Autonomous Transaction Processingデータベースに移動するときに使用するトークンを生成します。認証トークン文字列は作成時にのみ表示されるため、認証トークンはすぐにセキュアな場所にコピーしてください。
  1. Oracle Cloud Infrastructureコンソールにログインします。
  2. 「ユーザー」アイコンをクリックして「プロファイル」メニューを開き、「ユーザー設定」をクリックします。
    完全なユーザー名(電子メール、またはアクティブ化されている場合は使用するシングル・サインオン・サービスが接頭辞として付加された電子メール)をノートにとります。
  3. 認証トークン」をクリックし、「トークンの生成」をクリックします。
  4. 認証トークンに意味のある説明を入力し、「トークンの生成」をクリックします。
  5. 後で取得できるように、トークンをコピーして保存します。
    トークンは1回だけ表示されます。ダイアログを閉じると、コンソールにトークンが再度表示されなくなります。
  6. 閉じる」をクリックします。

Autonomous Databaseでのクラウド資格証明の構成

Oracle Autonomous Transaction Processingデータベースのデフォルトの資格証明として、Oracle Cloud Infrastructure (OCI)ユーザー名および認証トークン・パスワードを追加します。

  1. SQLPLus Instant Clientを使用して、前に作成したトンネルを介してリモートAutonomous Transaction Processingデータベースに接続します。
    sqlplus admin@atp_db_name_high
  2. プロンプトで、Autonomous Transaction Processingデータベースの管理パスワードを入力します。
    terraform.tfvarsファイルで構成されたatp_admin_password
  3. SQLPlusプロンプトにログインしていることを確認します。
    SQL>
  4. 次のコマンドをOCIユーザー名およびOCI認証トークン・パスワードとともに使用して、Autonomous Transaction ProcessingデータベースにOCIクラウド資格証明を作成します。
    SET DEFINE OFF
    BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'oci username',
        password => 'oci auth token'
    );
    END;
    /
  5. 資格証明をデフォルトの資格証明として設定します。
    ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 
    'ADMIN.DEF_CRED_NAME';
  6. SQLPlusを終了します。
    SQL> exit

Autonomous Databaseへのダンプ・ファイルのインポート

データ・ポンプを使用して、Autonomous Transaction Processingデータベースにデータ・ダンプをインポートします。

  1. リージョンの環境変数(us-ashburn-1など)、ネームスペース、バケット、ファイル名、Autonomous Transaction Processingデータベース名(atpdbなど)およびAutonomous Transaction Processingの管理パスワードを定義します。
    export REGION=your-OCI-region
    export NAMESPACE=your namespace
    export BUCKET=atp-upload
    export FILENAME=expdat.dmp
    export ATP_DB_NAME=your ATP DB name
    export ATP_PASSWORD=atp_admin_password
  2. 次のコマンドを実行します。
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 

    最初の試行は、ORA-01950: no privileges on tablespace 'DATA'というエラーで失敗します。次のステップに進み、データベース・スキーマから作成されたユーザーに割当て制限を付与します。

  3. ユーザーに無制限の表領域を付与します。
    echo "GRANT UNLIMITED TABLESPACE TO USER;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
    次の出力が表示されます。
    Grant Succeeded
  4. ステップ2で作成した表を削除して、次回の実行時にデータを作成できるようにします。
    echo "DROP TABLE TABLE_NAME;" | sqlplus 
    admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low
  5. 次のコマンドを実行して、ユーザーに有効な割当て制限があることを確認し、データをインポートします。
    impdp admin/${ATP_PASSWORD}@${ATP_DB_NAME}_low 
    directory=data_pump_dir 
    dumpfile=default_credential:https://objectstorage.${REGION}.oracl
    ecloud.com/n/${NAMESPACE}/b/${BUCKET}/o/${FILENAME} parallel=16 
    exclude=cluster,db_link 
    既存のユーザーに関連するエラーが表示されます。これは、最初にステップ2でコマンドを実行したときにオブジェクトが作成されたためです。
データベースが移行されます。