Oracle 12c Refreshable Clone

eric0435發表於2017-08-24

這個例子將介紹透過克隆一個遠端PDB(jypdb)來建立一個目標PDB(ycpdb)。這種克隆是對源PDB的一種可以重新整理的副本,它意味著對源PDB所執行的任何改變都可以透過重新整理來對目標PDB進行更新。這裡假設滿足以下條件:
.連線到遠端PDB(jypdb)的dblink為jypdb_link
.不使用path_prefix子句
.不使用file_name_convert與create_file_dest子句,如果啟用了OMF,或者設定了pdb_file_name_convert引數。那麼基於OMF或引數設定
檔案將會被複制到新指定的目錄中
.對PBD不使用儲存限制。因此不使用storage子句
.這裡沒有與新temp檔案同名的檔案存在,因此新的temp檔案會建立到目標目錄中。因此不用指定tempfile reuse子句。
.重新整理克隆將會每隔10分鐘自動重新整理。記住,為了建立一個可重新整理的PDB,源PDB必須啟用archivelog模式與本地undo模式。

1.在目標資料庫CDB(jy)中建立指向源PBD(jypdb)的dblink

SQL> create public database link  jypdb_link
  2    connect to system identified by "cs"
  3    using '(DESCRIPTION =
  4      (ADDRESS_LIST =
  5        (ADDRESS = (PROTOCOL = TCP)(HOST =10.10.13.17)(PORT = 1521))
  6      )
  7      (CONNECT_DATA =
  8        (SERVER = DEDICATED)
  9        (SERVICE_NAME =jypdb)
 10      )
 11    )';
Database link created

2.檢查源pdb是否啟用arachivelog與本地undo

SQL> col PROPERTY_NAME for a25;
SQL> col PROPERTY_VALUE for a25;
SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where property_name='LOCAL_UNDO_ENABLED';

PROPERTY_NAME             PROPERTY_VALUE
------------------------- -------------------------
LOCAL_UNDO_ENABLED        TRUE

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            +DATA/arch
Oldest online log sequence     251
Next log sequence to archive   253
Current log sequence           253

3.在目標資料庫CDB(jy)執行下面的語句來克隆可重新整理的PDB

SQL> create pluggable database ycpdb from jypdb@jypdb_link refresh mode every 10 minutes;

Pluggable database created.

4.在源資料庫中對錶jy.jy_test與jy.test插入資料與刪除資料

SQL> select * from jy.jy_test;

   USER_ID
----------
         2
         1

SQL> select * from jy.test;

   USER_ID
----------
         2
         1


SQL> insert into jy.jy_test values(3);

1 row created.

SQL> commit;

Commit complete.

SQL> delete from jy.test where rownum<2;

1 row deleted.

SQL> commit;

Commit complete.

SQL> host date
Fri Aug 25 01:58:40 CST 2017

5.十分鐘後我們在目標資料庫ycpdb中來查詢資料是否被重新整理到目標資料庫ycpdb中
5.1先將pdb(ycpdb)以read only模式開啟

SQL> select name,open_mode from v$pdbs;

NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
YCPDB
MOUNTED


SQL> alter  pluggable database ycpdb open read only;

Pluggable database altered.

5.2再來檢視資料是否被重新整理,從下面的結果可以看到資料已經被重新整理了。

SQL> select * from jy.jy_test;

   USER_ID
----------
         2
         3
         1

SQL> select * from jy.test;

   USER_ID
----------
         1

6.為了與源pdb(jypdb)進行同步我們需要將目標pdb設定為close狀態

SQL> alter  pluggable database ycpdb close immediate;

Pluggable database altered.

SQL> select name,open_mode from v$pdbs;


NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
YCPDB
MOUNTED

我們還可以手動重新整理目標pdb

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2144073/,如需轉載,請註明出處,否則將追究法律責任。

相關文章