番外:如何克隆可刷新的PDB
|
副标题[/!--empirenews.page--]
注意:创建可刷新的PDB,源库必须处于归档模式和本地UNDO模式 ? 内容总览? 1. 环境概述 2. 检查源库环境 3. 源库创建用户并授权 4. 目标库编辑TNS 5. 目标库创建DBLink 6. 目标库创建可刷新PDB 7. 目标库打开可刷新PDB 8. 可刷新PDB测试 ? 1. 环境概述 为了概念理解统一,提前约定下: 远程CDB2中有个ERP1,我们称远程CDB2为“源CDB”,IP:192.168.1.14 本地CDB1中有个PDB1,我们称本地CDB1为“目标CDB”,IP:192.168.1.12 注意:源CDB和目标CDB是相对而言。就是被克隆的对象叫“源”,准备克隆出来的对象叫“目标”。因此,下面就是要通过源CDB2中的ERP1,远程克隆出来一个可刷新的PDB,放在目标CDB1中,名称为PDB_REF。 ? 2. 检查源库环境 检查是否为归档模式 [[email?protected] ~]$ rlwrap sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Aug 31 07:27:48 2019
Version 19.3.0.0.0
Copyright (c) 1982,2019,Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 ERP1 READ WRITE NO
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/arch1
Oldest online log sequence 5
Next log sequence to archive 7
Current log sequence 7
? 检查是否为本地UNDO SQL> select property_name,property_value from database_properties where property_name=‘LOCAL_UNDO_ENABLED‘; PROPERTY_NAME PROPERTY_VALUE -------------------- -------------------- LOCAL_UNDO_ENABLED TRUE ? 3. 源库创建用户并授权 SQL> create user c##u1 identified by oracle; User created. SQL> grant create session,create pluggable database,sysoper to c##u1 container=all; Grant succeeded. ? 4. 目标库编辑TNS CDB2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CDB2)
)
)
目标库编辑tnsnames别名,指向源库。 ? 5. 目标库创建DBLink SQL> create database link cdb2_dblink connect to c##u1 identified by oracle using ‘CDB2‘; Database link created. #测试DBLINK SQL> select * from tab@cdb2_dblink; no rows selected ? 6. 目标库创建可刷新PDB 注意:刷新模式子句只支持?CREATE PLUGGABLE DATABASE ... FROM 语句。 6.0 基于默认 REFRESH MODE NONE 默认缺省情况下,创建普通PDB(非刷新PDB) ? 6.1 基于手工刷新?REFRESH MODE MANUAL SQL> !mkdir /u01/app/oracle/oradata/CDB1/pdbref SQL> create pluggable database pdb_ref from erp1@cdb2_dblink create_file_dest=‘/u01/app/oracle/oradata/CDB1/pdbref‘ refresh mode manual; ? 6.2 基于自动刷新?REFRESH MODE EVERY?number_of_minutes?MINUTES SQL> !mkdir /u01/app/oracle/oradata/CDB1/pdbrefauto SQL> create pluggable database pdb_refauto from erp1@cdb2_dblink create_file_dest=‘/u01/app/oracle/oradata/CDB1/pdbrefauto‘ refresh mode every 60 minutes; ? 查看 SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB_REF MOUNTED 5 PDB_REFAUTO MOUNTED
? 7. 目标库打开可刷新PDB 可刷新PDB为了保证和源库一致,必须只能以 READ ONLY 只读模式打开。 SQL> alter pluggable database pdb_ref open read only;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB_REF READ ONLY NO
5 PDB_REFAUTO MOUNTED
无法以读写模式打开 SQL> alter pluggable database pdb_ref open; alter pluggable database pdb_ref open * ERROR at line 1: ORA-65341: cannot open pluggable database in read/write mode ? 8. 可刷新PDB测试 8.1 源库创建测试数据 SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 ERP1 READ WRITE NO
SQL> alter session set container=erp1;
Session altered.
SQL> create table test_ref(id number);
Table created.
SQL> insert into test_ref select object_id from dba_objects where rownum<501;
500 rows created.
SQL> commit;
Commit complete.
SQL> select count(*) from test_ref;
COUNT(*)
----------
500
? 8.2 目标库刷新 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


