Oracle Autonomous Databaseのクローニングを試す


Autonomous Database には手軽にデータベースのコピーを行うクローニング機能があります。
ここではクローニングの操作を行い、どのようなコピーが行われるかを確認します。
 データベースのホームページの「More Actipons」メニューから「Create Clone」を選択することでクローニング画面に遷移します。クローニングには以下の設定を変更することができます。

設定 説明 デフォルト
Clone type クローニングのタイプ(Full Clone, Refreshable Clone, Metadata Clone) Full Clone
Clone source クローン元の選択(Clone from database instance, Clone from a backup) Clone from database instance
Preferred region リージョンの選択 カレント・リージョン
Compartment コンパートメントの選択 カレント
Display name クローン先の表示名 Clone of {元のDB名}
Database name 新しいデータベース名 自動生成
Datbase version バージョン 19c
OCPU count OCPU数 1
Storage データ量 1 TB
Password ADMINユーザーのパスワード 無し
Access type ネットワークのアクセス方法 Secure from everywhere
License type ライセンスの選択 License Included
Contact Email コンタクト先のメールアドレス 無し

元データとしてテーブル、マテリアライズド・ビュー、シーケンスを作成し、統計情報を取得しました。

SQL> SELECT table_name, TO_CHAR(last_analyzed, 'YYYY/MM/DD HH24:MI:SS') FROM USER_TABLES WHERE table_name IN ('SALES', 'SALES_M');

TABLE_NAME                     TO_CHAR(LAST_ANALYZ
------------------------------ -------------------
SALES                          2022/03/20 09:04:02
SALES_M                        2022/03/20 09:04:10

SQL> CREATE SEQUENCE seq1;

順序が作成されました。

SQL> SELECT seq1.NEXTVAL FROM DUAL;

   NEXTVAL
----------
         1


SQL> SELECT seq1.NEXTVAL FROM DUAL;

   NEXTVAL
----------
        10

Full Clone

 クローン方法に「Full clone」を選択するとデータベースの全データをコピーします。

データは当然コピーされますが、統計情報は再取得されず、元の日付のまま移行されます。シーケンスはキャッシュがフラッシュされた状態で移行されるため、元のデータベースよりも大きい値で移行されます。

SQL> SELECT TABLE_NAME, NUM_ROWS, STATTYPE_LOCKED, TO_CHAR(last_analyzed, 'YYYY/MM/DD HH24:MI:SS') FROM USER_TAB_STATISTICS;

TABLE_NAME                       NUM_ROWS STATT TO_CHAR(LAST_ANALYZ
------------------------------ ---------- ----- -------------------
SALES                              918843       2022/03/20 09:04:02
SALES_M                            918843       2022/03/20 09:04:10

SQL> SELECT seq1.NEXTVAL FROM DUAL;

   NEXTVAL
----------
        21

Metadata CLONE

定義情報のみをコピーする「Metadata Clone」を選択できます。Always Free 環境以外では「Refreshable Clone」も選択できます。Metadata Cloneを選択すると、テーブルやマテリアライズド・ビュー等の定義は移行されますが、データは移行されません。

データは移行されませんが、統計情報はそのまま残っています。また一般的に Data Pump で定義情報(METADATA)のみ移行すると統計情報がロックされます。しかし USER_TAB_STATISTICS ビューの STATTYPE_LOCKED 列に値が入って
いないため、Metadata Cloneでは統計情報のロックは行われないことがわかります。

SQL> SELECT TABLE_NAME, NUM_ROWS, STATTYPE_LOCKED, TO_CHAR(last_analyzed, 'YYYY/MM/DD HH24:MI:SS') FROM USER_TAB_STATISTICS;

TABLE_NAME                       NUM_ROWS STATT TO_CHAR(LAST_ANALYZ
------------------------------ ---------- ----- -------------------
SALES                              918843       2022/03/20 08:58:52
SALES_M                            918843       2022/03/20 09:00:29

シーケンスはFull Cloneと同様にキャッシュをフラッシュした状態で移行されます。

SQL> SELECT seq1.NEXTVAL FROM DUAL;

   NEXTVAL
----------
        21