Autonomous Databaseのクローン機能を利用することにより、テスト/検証/分析用途の環境複製を、すぐに簡単に作成することができます。 本章では、このクローン機能についてフォーカスしていきます。
所要時間 : 約20分
前提条件 :
- ADBインスタンスが構成済みであること
※ADBインタンスを作成方法については、本ハンズオンガイドの 101:ADBインスタンスを作成してみよう を参照ください。 - 構成済みのADBインスタンスへ接続できることが確認できていること
目次:
1. ADBにおけるクローニングの概要
ADBのクローニング機能は、コンソールまたはAPIを使用して利用することができます。
クローニング機能を使用することで、テスト・開発・分析などの目的でADBのポイントインタイム・コピーを作成できます。
ADBのクローンを作成する際には、クローンタイプ、クローン元のソースの選択、クローンのスペックや配置場所の決定などを行う必要があります。
各項目で設定する内容を順にご紹介します。
-
クローンタイプについて
-
フルクローン:データベース全体の複製
ソース・データベースのメタデータとデータを含むデータベースが作成されます。 -
メタデータ・クローン:データベースのメタデータのみの複製
このオプションでは、ソース・データベースのメタデータのみを含むデータベースが作成されます。
メタデータ・クローンでは、格納されるデータはコピーしませんが、表定義や索引定義といったスキーマ定義、オブジェクト構成を引き継ぐクローンを作成します。 メタデータのみをコピーし、データはサンプルデータなどに置き換えることでOCPU数やストレージの使用を抑え、コストを削減することができます。 -
リフレッシュ可能クローン:更新可能なクローンの作成
ソース・データベースの変更を使用して、簡単に更新できるクローンが作成されます。
クローンを作成後にソース・データベースの任意の時間の状態に更新することができるクローンです。
任意の時間の状態に更新するには、バックアップから新しいクローンを作成するという方法もありますが、バックアップからデータをリストアする時間が必要であったり、新しいデータベースをプロビジョニングしなくてはならないなど手間や時間がかかってしまいます。リフレッシュ可能クローンを使用することにより、手軽に任意の時間の状態のクローンを取得することが可能です。
補足
その他、リフレッシュ可能クローンは次のような特長があります:
- 実⾏中インスタンスの更新を引き継ぐクローンを作成可能
- 1つのインスタンスに対して複数の更新可能クローンの作成が可能
- 他の部⾨、コンパートメント跨ぎでの共有が可能であり、コストの分散が可能(クエリ・オフロード)
- 1週間以内の更新が必要(1週間(168時間)を経過すると更新不可)
- そのまま読み取り専⽤のDBとして利⽤するか、ソースから切断して通常のR/W可能なインスタンスとしての利⽤が可能
※詳細については マニュアル を参照ください。 -
-
クローンするソースについて
フルクローンまたはメタデータクローンを取得する場合、クローンソースを選択するオプションがあります。
-
アクティブなデータベースインスタンスからクローンを作成
実行中のデータベースのクローンが作成されます。この場合、バックアップからのクローン作成と比較して、比較的短い時間でのクローンの作成が可能です。 ソースデータベースはオンラインのまま停止する必要はありませんが、もしデータの断面を取得したい場合は、アプリケーションを停止するか、ソースデータベースを停止してからクローンしてください。補足
ターゲット・インスタンスにはソース・インスタンスの断面と変更ログを転送しクローンが作成されます。また変更ログは可能な限り最新の断面となるよう直近まで転送、適用することで、ソース・インスタンスを再現します。
反対をいうと、アクティブなデータベースを元に作成されたクローンは、ピンポイントに特定の状態のクローンを取得したいときには向きません。そのようなクローンを作成したいときには、一旦ソースデータベースを停止させた状態でクローンを取得する、または次の項目でご紹介するバックアップからのクローンの取得が適切でしょう。 -
バックアップからクローンを作成
バックアップリストからバックアップを指定してクローン、もしくは、過去の特定時点を指定してクローンします。
前述の通りバックアップからクローンを作成する際は、オブジェクトストレージからデータをリストアする必要があるため、アクティブなインスタンスから作成する場合に比べ、時間がかかります。
また、バックアップから作成できるクローンタイプはフル・クローンおよびメタデータ・クローンのみです。バックアップから更新可能クローンを作成することができませんのでご注意ください。
-
-
クローン先の構成について
クローンは、サブスクライブしている任意のリージョンの任意のコンパートメント内に取得することが可能です。また、ネットワークに関しては、ソースデータベースと異なるVCN・サブネットに配置できます。
クローン環境を配置するコンパートメントや、クローン環境のバージョン・コア数・ストレージ容量などを含むスペックなどを決定します。
その他、ADBのクローンに関する詳細な情報はマニュアルを参照ください。
2. 事前準備
実際にクローン環境を作成する前に、ソースデータベースとなるADBにサンプルスクリプトを流し、データを挿入します。
ここではある会社の部門の情報を含む、DEPARTMENT表という簡単な表を作成していきます。
-
次の手順に従って、DBインスタンスのSQL*Plusに接続します。
接続方法はOCI CLIを使用する方法や、別の仮想マシンからssh接続する方法がありますが、こちらでは後者の方法で進めていきます。1-1. 作成した仮想マシンにssh接続します。
仮想マシンの作成およびセットアップ方法はこちら1-2. 下記のコマンドを参考に、oracleユーザに切り替えます。
sudo -s
su - oracle
(一旦rootユーザにスイッチしてから、oracleユーザにスイッチしています)
1-3. 下記のコマンドを参考に、SQL*Plusに接続します。
sqlplus [username]/[password]@[接続サービス名]
本ハンズオンガイドを参考にADBインスタンスをお作りいただいた方は、次のようなコマンドになります。
sqlplus admin/Welcome12345#@atp01_low
SQL*Plusへの接続方法の詳細については、104: クレデンシャル・ウォレットを利用して接続してみよう をご確認ください。
-
次のサンプルスクリプトを流し、テーブルを作成します。
こちらのスクリプトをコピーし、SQL*Plusのターミナルにペーストします。DROP TABLE DEPARTMENT CASCADE CONSTRAINTS PURGE; DROP SEQUENCE DEPT_ID_SEQ; DROP TRIGGER DEPT_ID_TRIGGER; CREATE SEQUENCE DEPT_ID_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE TABLE DEPARTMENT ( DEPT_ID NUMBER(10) PRIMARY KEY, DEPT_NAME VARCHAR2(60) NOT NULL, MGR_ID NUMBER(10) NOT NULL ); CREATE OR REPLACE TRIGGER DEPT_ID_TRIGGER BEFORE INSERT ON DEPARTMENT FOR EACH ROW WHEN (NEW.DEPT_ID IS NULL) BEGIN SELECT DEPT_ID_SEQ.NEXTVAL INTO :NEW.DEPT_ID FROM DUAL; END DEPT_ID_TRIGGER; / INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('ADMINISTRATION', 1000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('HUMAN RESOURCE', 2000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('LEGAL', 3000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('ACCOUNTING', 4000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('MARKETING', 5000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('SALES', 6000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('DEVELOPMENT', 7000); INSERT INTO DEPARTMENT (DEPT_NAME, MGR_ID) VALUES ('ENGINEERING', 8000); COMMIT;
-
次のSELECT文を実行し、表が正しく作成されているかを確認します。
select * from department;
次のような表が作成されていればOKです。
3. クローン環境を作成してみよう
ADB(atp01)のフルクローンを作成していきます。
-
ソースのインスタンスの詳細画面から「クローンを作成」をクリックします。
-
クローンの作成画面が表示されます。クローン環境を設定していきます。
下記を参考に設定してみましょう。
-
クローン・タイプ:フルクローン
ソース・データベースのメタデータとデータが複製されます。 -
ソースのクローニング:データベース・インスタンスからのクローニング
現在の状態のまま、実行中のデータベースのクローンを作成します。 - Autonomous Databaseクローンの基本情報の指定
- コンパートメント:任意のコンパートメントを指定
- ソース・データベース名:atp01(変更できません)
- 表示名:Clone of atp01(デフォルト)
任意の名前で結構です。 - データベース名:atp01Clone
任意の名前で結構です。
- データベースの構成
- データベース・バージョン:19c(デフォルト)
任意のバージョンで結構です。 - OCPU数:2
任意の値で結構です。 - ストレージ(TB):1(デフォルト)
任意の値で結構です。
- データベース・バージョン:19c(デフォルト)
- 管理者資格証明の作成
- ユーザ名:ADMIN(変更できません)
- パスワード:Welcome12345#
次の要件を満たす任意のパスワードを設定ください- 12文字から30文字
- 大文字、小文字および数字をそれぞれ1つ以上含む
- 二重引用符(“)文字またはユーザー名”admin”を含めることはできない
- ネットワーク・アクセスの選択:すべての場所からのセキュア・アクセス
-
ライセンス・タイプの選択:ライセンス込み
最後に「クローンを作成」をクリックすると、プロビジョニングが始まります。
指定したコンパートメント内にクローン環境が作成されていることをご確認ください。
4. クローン環境を確認してみよう
作成したクローン環境に接続してみましょう。
また、正しくクローンされているかを確認するために、2で作成したデータと同様のデータが入っているかを確認します。
-
次の手順に従って、クローンADBに接続してみましょう。
詳細は、104: クレデンシャル・ウォレットを利用して接続してみよう の 1. クレデンシャル・ウォレットのダウンロード を参照ください。1-1. クローンADBのウォレットをダウンロードします。
OCIコンソールからクローンADBの詳細画面に移動します。
手順は次の通りです:
「DB接続」→インスタンスタイプのウォレットをダウンロード→ADMINに設定したパスワードを入力1-2. クローンADBへの接続に使用するクライアントの設定ファイルを編集します。
設定ファイルを編集する方法は、OCI CLIを使用した編集方法、接続用の仮想マシンで編集する方法があります。
それぞれの編集方法は次のリンク先をご確認ください:- OCI CLIを使用して編集する方法 104: クレデンシャル・ウォレットを利用して接続してみよう - 2. 設定ファイルの編集
- 接続用の仮想マシン上で編集する方法 204: マーケットプレイスからの仮想マシンのセットアップ方法
補足
1つの接続用の仮想マシンから様々なDBに接続するようなことがある場合、それぞれのウォレットごとにディレクトリを作成し、どのDBに接続したいかによってTNS_ADMINが参照するウォレットの場所を切り替えるとスムーズに接続することができます。
または、リージョナル・ウォレットというクレデンシャルウォレットを活用するとより簡単に接続することが可能になります。 リージョナル・ウォレットには、同一コンパートメント内のすべてのADBに関する資格情報が含まれているため、DBを切り替えるたびにウォレットの場所などを意識することなくご利用いただけます。 ADBの資格証明に関する詳細な情報はこちらを参照ください。
-
先ほど同様に、SQL*Plusに接続します。
sqlplus [username]/[password]@[接続サービス名]
sqlplus admin/Welcome12345#@atp01Clone_low
※接続サービス名にご注意ください。ソース・データベースと名称が異なります。
-
SELECT文を使用し、先ほど作成したDEPARTMENT表が表示されていることを確認します。
select * from department;
このように、フルクローンではメタデータのみならずデータも取得されていることが分かります。
補足
ソースデータベースのメタデータのみをコピーするメタデータ・クローンを使用してatp01を複製した場合の出力結果は次のようになります。
DEPARTMENT表の行を表示するselect文の出力結果では、行が表示されません。表の中身が空であることが分かります。 しかし、データベースオブジェクトの定義を表示するdesc文を実行すると、このように列名・データ型などの情報が取得されていることが分かります。
以上で、この章は終了です。
次の章にお進みください。