オンプレミスからAzureクラウドへのデータベース移行
Oracleは、シングルインスタンスデータベースのフェーズアウトを決定した結果、多くの組織で、シングルインスタンスのOracleデータベースをマルチテナントコンテナデータベースに変換しています。これにより、PDBと呼ばれるコンテナデータベースの一部を、最大の可用性オプションでクラウドに簡単に再配置できるため、移行中のダウンタイムを最小限に抑えることができます。
ただし、Oracleデータベースのインスタンスが1つしかない場合は、PDBの再配置を試行する前に、まずマルチテナントコンテナデータベースに変換できます。
以降のセクションでは、どちらのシナリオでも、オンプレミスのOracleデータベースをAzureクラウドに移行する方法について詳しく説明します。
マルチテナントCDBで単一インスタンスの非CDBをPDBに変換します
シングルインスタンスのOracleデータベースが残っている場合、そのデータベースをクラウドに移行するかどうかにかかわらず、マルチテナントコンテナデータベースに変換する必要があります。これは、Oracleがシングルインスタンスデータベースのサポートをしばらくの間停止するためです。
次の手順では、1つのインスタンスデータベースをプラグイン可能なデータベースまたはPDBとしてコンテナデータベースに接続します。
-
シングルインスタンスデータベースと同じホスト上に別のホスト内にシェルコンテナデータベースを構築します
ORACLE_HOME
。 -
シングルインスタンスデータベースをシャットダウンし、読み取り専用モードで再起動します。
-
を実行します
DBMS_PDB.DESCRIBE
手順 を使用してデータベースメタデータを生成します。BEGIN DBMS_PDB.DESCRIBE( pdb_descr_file => '/home/oracle/ncdb.xml'); END; /
-
シングルインスタンスデータベースをシャットダウンします。
-
コンテナデータベースを起動します。
-
を実行します
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
非CDBがCDBと互換性があるかどうかを判断する関数です。SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/disk1/oracle/ncdb.xml', pdb_name => 'NCDB') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
出力がYESの場合は、CDB以外の互換性があるため、次の手順に進むことができます。
出力がnoの場合は、CDB以外の互換性がないため、を確認できます
PDB_PLUG_IN_VIOLATIONS
互換性がない理由については、を参照してください。続行する前にすべての違反を修正する必要があります。たとえば、バージョンまたはパッチの不一致は、アップグレードユーティリティまたはopatchユーティリティを実行して解決する必要があります。違反を修正したら、を実行しますDBMS_PDB.CHECK_PLUG_COMPATIBILITY
この場合も、CDB以外のファイルがCDBと互換性があることを確認してください。 -
単一インスタンスの非CDBを接続します。
CREATE PLUGGABLE DATABASE ncdb USING '/home/oracle/ncdb.xml' COPY FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/') ;
ホストに十分なスペースがない場合は、を実行します NOCOPY
オプションを使用してPDBを作成できます。この場合、元のデータファイルがPDBに使用されているため、PDBとしてプラグインしたあとは、単一インスタンスの非CDBは使用できません。変換前にバックアップを作成し、何か問題が発生したときに元に戻す必要があるものがあることを確認してください。 -
ソースのシングルインスタンス非CDBとターゲットCDBとの間のバージョンが異なる場合は、変換後にPDBアップグレードを開始してください。バージョンが同じ場合は、この手順をスキップできます。
sqlplus / as sysdba; alter session set container=ncdb alter pluggable database open upgrade; exit; dbupgrade -c ncdb -l /home/oracle
のアップグレードログファイルを確認します
/home/oracle
ディレクトリ。 -
プラグイン可能なデータベースを開き、PDBプラグイン違反がないかどうかを確認し、無効なオブジェクトを再コンパイルします。
alter pluggable database ncdb open; alter session set container=ncdb; select message from pdb_plug_in_violations where type like '%ERR%' and status <> 'RESOLVED'; $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -c 'ncdb' -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
-
実行
noncdb_to_pdb.sql
データディクショナリを更新します。sqlplus / as sysdba alter session set container=ncdb; @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql;
コンテナDBをシャットダウンして再起動します。ncdbは制限モードから除外されます。
PDBの再配置で、オンプレミスのOracleデータベースをAzureに移行
最大可用性オプションを使用したOracle PDBの再配置では、PDBホットクローンテクノロジが採用されています。これにより、PDBがターゲットにコピーしている間に、ソースPDBの可用性が可能になります。スイッチオーバー時に、ユーザ接続は自動的にターゲットPDBにリダイレクトされます。したがって、PDBのサイズに関係なく、ダウンタイムが最小限に抑えられます。ネットアップは、移行手順 を自動化するAnsibleベースのツールキットを提供しています。
-
Azure VM上のAzureパブリッククラウドに、バージョンとパッチレベルが同じCDBを作成します。
-
Ansibleコントローラから、自動化ツールキットのコピーをクローニングします。
git clone https://github.com/NetApp-Automation/na_ora_aws_migration.git
-
READMEファイルの手順を読みます。
-
ソースとターゲットの両方のOracleサーバ、および名前解決用のDBサーバホストの構成ファイルに対してAnsibleホスト変数ファイルを設定します。
-
AnsibleコントローラにAnsibleコントローラの前提条件をインストールする。
ansible-playbook -i hosts requirements.yml ansible-galaxy collection install -r collections/requirements.yml --force
-
オンプレミスサーバに対して移行前のタスクを実行
ansible-playbook -i hosts ora_pdb_relocate.yml -u admin -k -K -t ora_pdb_relo_onprem
adminユーザは、sudo権限があるオンプレミスのOracleサーバホストの管理ユーザです。adminユーザはパスワードで認証されます。 -
オンプレミスからターゲットのAzure OracleホストへのOracle PDBの再配置を実行します。
ansible-playbook -i hosts ora_pdb_relocate.yml -u azureuser --private-key db1.pem -t ora_pdb_relo_primary
Ansibleコントローラは、オンプレミスとAzureクラウドのどちらにも配置できます。コントローラは、オンプレミスのOracleサーバホストおよびAzure Oracle VMホストに接続する必要があります。オンプレミスのOracleサーバホストとAzure Oracle VMホストの間で、Oracleデータベースポート(1521など)が開いている。
その他のOracleデータベース移行オプション
その他の移行オプションについては、Microsoftのドキュメントを参照してください。 "Oracleデータベースの移行を決定するプロセス"。