データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

非コンテナデータベースをマルチテナントプラガブルデータベースに変換します

TriCoreが最初に公開したもの:2017年8月29日

Oracle®バージョン12cは、単一のコンテナデータベース(CDB)を備えたホストマルチプラグ可能データベース(PDB)用のマルチテナントデータベースオプションを提供します。非CDBデータベースをCDBプラガブルデータベースに変換する必要がある場合があります。このブログでは、非CDBデータベースをCDBデータベースに変換するために使用できる方法について説明しています。

テストケースのセットアップ

このテストシナリオは、非CDBデータベースインスタンスnoncdb12cから始まります。 、マシンABC123.xyz.comで実行されています 。タスクは、CDBデータベースcdb12cを作成することです。 、同じマシン上。変換されたCDBデータベースを保持するのに十分なディスク容量があることを確認する必要があります。

ホストサーバー :ABC123.xyz.com

非CDBデータベース :noncdb12c

Oracleバージョン :12.1.0.2

次の画像は、テストシナリオを示しています。

非コンテナデータベースをマルチテナントプラガブルデータベースに変換します 変換テスト

このセクションの手順を使用して、非CDBデータベースをCDBデータベースに変換します。

ステップ1:クリーンシャットダウンを実行する

非CDBデータベースをクリーンにシャットダウンするには、次の手順を実行します。

  • 環境をnoncdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      shutdown immediate
    

ステップ2:データベースを読み取り専用として開きます

データベースを正常にシャットダウンしたら、次の手順を実行してデータベースをマウント専用モードで起動し、データベースを読み取り専用モードで開きます。

  • 環境をnoncdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      startup mount exclusive
    
      alter database open read only;
    

ステップ3:PDBマニフェストファイルを生成する

非CDBからPDBマニフェストファイルを生成するには、次の手順を実行します。

  • 環境をnoncdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      exec dbms_pdb.describe (pdb_descr_file=>'/tmp/noncdb12c_manifest_file.xml');
    

ステップ4:非CDBをシャットダウンします

手順3が完了したら、次の手順を実行して非CDBファイルをシャットダウンします。

  • 環境をnoncdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      shutdown immediate
    

ステップ5:CDBを開始します

CDBがまだ実行されていない場合は、次の手順を実行してCDBを起動し、互換性を確認します。

  • 環境をcdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      startup
      SET SERVEROUTPUT ON;
       DECLARE
       Compatible CONSTANT VARCHAR2(3) :=CASE  DBMS_PDB.CHECK_PLUG_COMPATIBILITY
       (pdb_descr_file => '/tmp/noncdb12c_manifest_file.xml')
       WHEN TRUE THEN 'YES'
       ELSE 'NO'
       END;
       BEGIN
          DBMS_OUTPUT.PUT_LINE(compatible);
       END;
       /
    

ステップ6:エラーを確認する

CDBデータベースの起動が完了したら、次の手順を実行して、PDB_PLUG_IN_VIOLATIONSのエラーを確認します。 ビュー:

  • 環境をcdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      startup
      SELECT name, cause, type, message, status FROM PDB_PLUG_IN_VIOLATIONS
      WHERE name='NONCDB12C';
    

:エラーがある場合は、続行する前に修正してください。

ステップ7:CDBに接続し、PDBに接続します

次の手順を実行して、CDBに接続し、非CDBマニフェストファイルを使用してPDDB12Cデータベースに接続します。

  • 環境をcdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      CREATE PLUGGABLE DATABASE pdb12c USING '/tmp/noncdb12c_manifest_file.xml'
       COPY
       FILE_NAME_CONVERT = ('<Datafile_Location_for_noncdb>', 'Datafile_Location_for_pdb');
    

:次のオプションがサポートされており、環境に基づいて1つを選択できます:

  • コピーnoncdbのデータファイル そのままで、noncdb をコピーして、新しい場所にPDBを作成し、元のデータファイルを元の場所にそのまま保持します。これは、PDBの作成後も非cdbデータベースが引き続き機能していることを意味します。
  • 移動noncdbのデータファイル PDBを作成するために新しい場所に移動されます。この場合、noncdb PDBの作成後、データベースは使用できなくなります。
  • コピーなしnoncdbのデータファイル PDB2の作成に使用され、noncdbと同じ場所を使用します 。この場合、noncdb PDBの作成後、データベースは使用できなくなります。

FILE_NAME_CONVERTを使用できます COPY のいずれかを使用しているときに、データファイルの新しい場所を指定するパラメータ または移動 オプション。

ステップ8:変換スクリプトを実行します

手順7が正常に完了したら、次の手順を実行してPDBコンテナに切り替え、変換スクリプト$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sqlを実行します。 :

  • 環境をcdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      alter session set container=pdb12c
      @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
    

ステップ9:PDBを起動し、モードを確認します

次の手順を実行してPDBを起動し、モードが開いていることを確認します :

  • 環境をcdb12cに設定します 。

  • 次のコマンドを実行します。

      sqlplus / as sysdba
    
  • SQLプロンプトで次のコードを実行します。

      alter pluggable database open;
      SELECT name, open_mode FROM v$pdbs;
    
結論

非CDBデータベースをCDBプラガブルデータベースに変換する場合、データベースのサイズに応じていくつかのオプションから選択できます。

データベースが非常に大きい場合は、 NOCOPYを使用できます。 オプション。これにより、必要な余分なスペースの量が最小限に抑えられ、変換操作の実行にかかる時間が短縮されます。 NOCOPY ただし、元のデータベースファイルをそのまま保持しないため、このオプションにはリスクが伴います。したがって、データベースを以前の状態に復元する必要がある場合は、変換アクティビティの前に作成されたバックアップを使用してデータベースを復元する必要があります。

データベースのサイズが小さい場合は、コピーを使用する必要があります これにより、問題が発生した場合でも、元のファイルは常にそのままであるため、古い非CDBへのフォールバックが簡単になります。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

Rackspaceアプリケーションサービスの詳細をご覧ください。


  1. SYSAUX表領域を管理する

    Oracle®10gは、 PERMANENTなどの必須属性を備えたSYSAUXと呼ばれる新しい必須テーブルスペースを導入しました。 、読み取り/書き込み 、ローカルの拡張管理 、および SEGMENT SPACE MANAGEMENT AUTO 。この投稿では、このテーブルスペースが大きくなるにつれて管理する方法について説明します。 はじめに SYSAUX表領域を使用して、次のタスクを実行できます。 インストールおよび削除オプションによって引き起こされるSYSTEMテーブルスペースの断片化を回避します。 SYSTEM表領域の破損やスペース不足のリスクを回避します。 データベース管理者のメ

  2. MongoDBの実験的なプラガブルストレージエンジン

    先月のMongoDBWorldで、MongoDBの創設者でCTOのEliot Horowitzは、2.8リリースが予定されているプラ​​ガブルストレージエンジンのサポートを発表しました。これは、mongoユーザーが自分のワークロードに最適なストレージエンジンを選択できるようになり、APIがすべてのMongoDB機能を完全にサポートするように計画されているため、現在の機能を放棄する必要がないため、エキサイティングなものです。楽しい。それだけでなく、同じレプリカセット内のノードは、さまざまなストレージエンジンを使用できるようになり、さまざまなニーズに対応するあらゆる種類の興味深い構成が可能になりま