Oracle 12cマルチテナントアーキテクチャ。 新しい開発とテストの機会

最近リリースされたOracle 12cの最大のイノベーションは、 マルチテナントアーキテクチャです。 オラクル自体は、主に統合とコスト削減の手段としてこの機会を提示しています。



このテクノロジーの本質は、1つのインスタンス(コンテナーデータベース、CDB)内で複数の独立したデータベース(プラガブルデータベース、PDB)を実行できることです。 各データベースには独自のスキームと表スペースのセットがありますが、同時に共通のSGAと1つのサーバープロセスのセットがあります。 同じコンテナ内およびコンテナ間の両方で、プラグ可能なデータベースを複製することができます。 この機会を利用して、テストデータベースのコピーを作成し、リソースを節約します。



タスク-大規模なベースを持つ大規模システムがあります。 変更、および破壊的な変更をテストする必要があります-テーブルの削除/変更。 これがどのように行われるか-新しいデータベースを作成し、最小限の回路とデータのセットでそれを満たし、テストを実施します。 プロセス自体は高速でも時間もかかりませんし、間違いを犯す可能性が常にあります。 そして、「最小データセット」はそれほど小さくないかもしれません。



クローン作成セクションのCREATE PLUGGABLE DATABASEコマンドのドキュメントには、SNAPSHOT COPYオプションが記載されています。 説明から判断すると、SNAPSHOT COPYオプションを使用してクローンを作成する場合、クローンデータベースのデータファイルはコピーされません。 彼らにとっては

スナップショットはコピー時に作成され、クローンベースの変更されたブロックのみがディスク領域を占有します。 スナップショットを使用したクローンの作成は、 ACFSまたは専用NASのいずれかで可能です。



この実験は、Oracle Virtualbox 4.2.14の環境で実施されました。 インストールの詳細は説明しませんが、ドキュメントで詳しく説明します。重要な点のみを説明します。



設置



Oracle Linux 6.4をインストールします。更新、Oracleの依存関係、ASMサポートがあります。

$ uname -a Linux ora12.local 2.6.39-400.109.1.el6uek.x86_64 #1 SMP Tue Jun 4 23:21:51 PDT 2013 x86_64 x86_64 x86_64 GNU/Linux $ yum install oracle-rdbms-server-11gR2-preinstall $ yum install oracleasm-support
      
      





ASMを構成し、ASMディスクを作成します。

 $ oracleasm configure -i $ oracleasm createdisk -v data /dev/sdb1
      
      





Linux x86-64用のOracle Database 12cリリース1グリッド・インフラストラクチャ(12.1.0.1.0)を単一ノード・モードでインストールします。 検出パス-> / dev / oracleasm / disks

asmcmdまたはasmcaを使用してディスクグループ(DATA)ボリューム(DATAVOL)と、マウントポイント(/ data)を持つASMクラスターファイルシステムを作成します。 ルートからACFSをマウントし、すべてが正常であることを確認します。

 $ mount | grep data /dev/asm/datavol-326 on /data type acfs (rw)
      
      





ASMインスタンスに接続し、互換モードを変更します。

 $ sqlplus "/ AS SYSASM" ALTER DISKGROUP data SET ATTRIBUTE 'compatible.rdbms' = '12.1.0.0.0'; ALTER DISKGROUP data SET ATTRIBUTE 'compatible.advm' = '12.1.0.0.0';
      
      





Linux x86-64用のOracle Database 12cリリース1(12.1.0.1.0)をインストールします。インストール時には、ソフトウェアのインストール(エンタープライズ)のみを選択します。 インストールが正常に完了したらdbcaを実行してデータベースを作成します-コンテナー: データベースの作成 -> 詳細モード -> カスタムデータベース -> コンテナーデータベースとして作成(空のコンテナーデータベースの作成)

ストレージタイプとしてASM(+ DATA)を指定します。 すべてのデータベースコンポーネントが編集なしで選択されます。 このコンテナで作成するすべてのベースに適した文字セットを選択する必要があります。 ベースの作成を開始し、正常に完了するまで待ちます。



その結果、シードデータベース(プラガブルデータベースを作成するためのモデルベース)を含むコンテナーデータベースを取得します。

すべてがうまくいったことを確認してください:

非表示のテキスト
 $ sqlplus "/ AS SYSDBA" SQL*Plus: Release 12.1.0.1.0 Production on Thu Jul 4 13:48:26 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> SELECT NAME,OPEN_MODE FROM V$PDBS ; NAME OPEN_MODE ------------------------------ ---------- PDB$SEED READ ONLY
      
      





クローンを操作する



ACFS / data / oradataにディレクトリを作成し、所有者をoracleに変更します。 db_create_file_destパラメーターを/ data / oradataに変更します。 テストベースを表すクローンを作成します。

 CREATE PLUGGABLE DATABASE PDB001 ADMIN USER admin IDENTIFIED BY qwerty123 STORAGE (MAXSIZE 100G MAX_SHARED_TEMP_SIZE 100M) PATH_PREFIX = '/data/oradata/PDB001';
      
      





PDBを含むACFSに英数字名(ランダム)のディレクトリが表示されます。

 $ ls /data/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile/ o1_mf_sysaux_8x9131gt_.dbf o1_mf_system_8x912hvo_.dbf o1_mf_temp_8x914mbg_.dbf
      
      





コンテナを作成または再起動した後、PDBを開く必要があります。

 alter pluggable database all open;
      
      





テストベースの作成を模倣します-2Gサイズのテーブルスペーステストを作成します。

 alter session set container=pdb001; --     create tablespace test datafile size 2g;
      
      





データファイルがあり、そのサイズが2ギガバイトであることを確認します。

 $ ls -l /data/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile/*test* -rw-r----- 1 oracle grid 2147491840 Jul 4 10:55 /data/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile/o1_mf_test_8x97xv5k_.dbf
      
      





それがすべてであったものについて



大規模なテストベースがあり、テーブル構造に影響を及ぼし、すべてのデータを検証する必要がある特に大きな変更をテストしたいと考えています。

スナップショットモードでテストベースのクローンを作成します。

 $ sqlplus "/ AS SYSDBA" SQL> alter pluggable database pdb001 close immediate; Pluggable database altered. SQL> alter pluggable database pdb001 open read only; Pluggable database altered. SQL> create pluggable database pdb003 from pdb001 SNAPSHOT COPY; Pluggable database created. SQL> alter pluggable database pdb001 close immediate; Pluggable database altered. SQL> alter pluggable database all open; Pluggable database altered.
      
      





そして、ファイルシステムで何が起こったのか見てみましょう:

 $ ls -l /data/oradata/ORCL/E0AB0DD4BA9D2C11E0430F02000AED35/datafile/ total 20500 lrwxrwxrwx 1 oracle grid 132 Jul 4 10:54 o1_mf_sysaux_8xb71r49_.dbf -> /data/.ACFS/snaps/E0AB0DD4BA9D2C11E0430F02000AED35/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile/o1_mf_sysaux_8x9131gt_.dbf lrwxrwxrwx 1 oracle grid 132 Jul 4 10:54 o1_mf_system_8xb71r49_.dbf -> /data/.ACFS/snaps/E0AB0DD4BA9D2C11E0430F02000AED35/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile/o1_mf_system_8x912hvo_.dbf -rw-r----- 1 oracle grid 20979712 Jul 4 10:55 o1_mf_temp_8xb71tn1_.dbf lrwxrwxrwx 1 oracle grid 130 Jul 4 10:54 o1_mf_test_8xb71r49_.dbf -> /data/.ACFS/snaps/E0AB0DD4BA9D2C11E0430F02000AED35/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile/o1_mf_test_8x97xv5k_.dbf
      
      





TEMPを除くすべての表スペースのデータファイルはACFSスナップショットへのリンクであり、ディスクスペースを占有しません。 この方法でスナップショットが実際にどれだけかかったかを確認できます。

 $ acfsutil snap info /data snapshot name: E0AB0DD4BA9D2C11E0430F02000AED35 RO snapshot or RW snapshot: RW parent name: /data snapshot creation time: Thu Jul 4 10:54:48 2013 number of snapshots: 1 snapshot space usage: 286388224
      
      





彼らが達成したこと-3GB以上に対して286MB

 $ du -k /data/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile 3105828 /data/oradata/ORCL/E0A1FFE9FFCF393FE0430F02000A6D7E/datafile
      
      





当然、スナップショットでクローンブロックを積極的に変更し始めると、それらの場所が増えます。



テスト後、不要なクローンを削除します。

 SQL> alter pluggable database PDB003 close immediate; Pluggable database altered. SQL> drop pluggable database pdb003 including datafiles; Pluggable database dropped.
      
      





場所が空いていることを確認します。

 $ acfsutil snap info /data number of snapshots: 0 snapshot space usage: 0
      
      





結果



その結果、時間とリソースを節約できました。 ディスクだけでなく、すべてのPDBが1つのプロセスセットと1つのSGAを使用することを思い出します。



PS。 この記事は、 Oracle Multitenant Architectureの完全な説明のふりをするものではなく、特定のタスクに関連する特別なケースのみが考慮されています。




All Articles