本帖最后由 郑全 于 2017-7-8 18:15 编辑
在前两年的OOW上Larry Ellison就演示了迁移一个PDB 从on-premise到 Oracle Public Cloud,不过当时还是12.1 原库需要打开在read only, 现在12C R2版本实现在完全在线,源库在read-write的模式下,就可以把本地中的PDB relocate到远程CDB中, 如果配置上了connect的可用性跳转,完全实现了zero downtime的迁移, 比过去的TTS还要灵活,不需要在导出导入元数据。
PDB relocate的基本实现方式hot clone和通过dblink的增量redo apply.在线pdb relocate需要在目标CDB中创建一个database link指向源库的CDB, 需要DBLINK使用的common用户有create pluggable database的权限,relocate的AVAILABILITY(高用选项)有normal|max|high, 当目标库使用create pluggable database relocate选项时,源库会一直在read-write open状态,甚至到create pdb的命令完成,源PDB(READ-WRITE OPEN)上的用户DML事务都不会有任何影响, 当目标库的CREATE PDB RELOCATE完成时,会在源CDB和目标CDB存在2个relocate的PDB,只不过在目标CDB中该PDB是mount状态,此时源库的DML为生成更多的redo日志为后期的PDB切换, PDB的切换操作是在目标CDB中的PDB open read-write时,此时源PDB会暂停,并且KILL掉源PDB库连接的会话,同步并应用源库PDB的redo到目标PDB, 并且应用undo数据回滚未提交的事务, 当应用完成后源pdb库的所有数据文件将会自动删除,目标PDB事务继续, 在这短暂的操作期间如果使用AVAILABILITY如果有新的连接请求,oracle可以跳过连接到新PDB上,实现了移动PDB的零停机。
有一些基本的条件如源库和目标库是archivelog mode,并且local undo,和相同的字节码(endianness),相同的options和字符集或者目标库是源库的子集,如目标库是字符集是AL32UTF8,源库可以是任何字符集,当然这也是12.2的另一新特性(同一CDB中可以不同的PDB可以使用不同的字符集 限制是CDB必须是AL32UTF8)
下面开始演示, 因为测试12c 的环境成本增高,测试环境是我和朋友的两台笔记本之间不同CDB之间的relocate, oracle 12.2 ee on OL6, 迁移源库ORCL122的PDB:test到目标库sztech中
源库CDB中创建COMMON用户用于dblink
SQL> create user C##CLONE_ADMIN identified by oracle container=all;
User created.
SQL> grant connect, sysoper, create pluggable databaseto C##CLONE_ADMIN container=all;
Grant succeeded.
目标库配置tnsnames.ora并创建DBLINK
# tnsnames.ora append
cdb210 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.31.210)(PORT = 1521))
(LOAD_BALANCE = NO)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL122)
)
)
[oracle@sztech ~]$ tnsping cdb210
TNS Ping Utility for Linux: Vesion 12.2.0.1.0 - Production on 12-MAR-2017 12:07:24
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
/u02/app/oracle/product/12.2.0/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.31.210)(PORT = 1521)) (LOAD_BALANCE = NO) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL122)))
OK (0 msec)
SQL> create database link link_cdb210 connect to C##CLONE_ADMIN identified by oracle using 'cdb210';
Database link created.
SQL> select sysdate from dual@link_cdb210;
SYSDATE
-------------------
2017-03-12 12:20:38
源库和目标库的兼容性检查
# target db
[oracle@sztech admin]$ ora
SQL*Plus: Release 12.2.0.1.0 Production on Sun Mar 12 11:48:05 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production
USERNAME INST_NAME HOST_NAME SID SERIAL# VERSION STARTED SPID OPID CPID SADDR PADDR
-------------------- -------------------- ------------------------- ----- -------- ---------- -------- ---------- ----- --------------- ---------------- ----------------
SYS CDB$ROOT-sztech sztech 53 20573 12.2.0.1.0 20170312 5029 33 5028 000000006B23A690 000000006CC27FC8
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u02/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence 13
Next log sequence to archive 15
Current log sequence 15
col PROPERTY_NAME for a30
col PROPERTY_VALUE for a40
SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME in('LOCAL_UNDO_ENABLED','DICTIONARY_ENDIAN_TYPE','GLOBAL_DB_NAME','NLS_CHARACTERSET');
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ----------------------------------------
DICTIONARY_ENDIAN_TYPE LITTLE
LOCAL_UNDO_ENABLED TRUE
GLOBAL_DB_NAME sztech.COM
NLS_CHARACTERSET AL32UTF8
SQL> select
db.name,
db.platform_id,
db.platform_name ,
os.ENDIAN_FORMAT
from
v$database db ,v$transportable_platform os
where db.platform_id=os.platform_id;
NAME PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
--------- ----------- ------------------------------ --------------
sztech 13 Linux x86 64-bit Little
SQL> select * from v$option where value='TRUE';
PARAMETER VALUE CON_ID
---------------------------------------- ---------- ----------
Partitioning TRUE 0
Objects TRUE 0
Advanced replication TRUE 0
Bit-mapped indexes TRUE 0
Connection multiplexing TRUE 0
Connection pooling TRUE 0
Database queuing TRUE 0
Incremental backup and recovery TRUE 0
Instead-of triggers TRUE 0
Parallel backup and recovery TRUE 0
Parallel execution TRUE 0
Parallel load TRUE 0
Point-in-time tablespace recovery TRUE 0
Fine-grained access control TRUE 0
Proxy authentication/authorization TRUE 0
Change Data Capture TRUE 0
Plan Stability TRUE 0
Online Index Build TRUE 0
Coalesce Index TRUE 0
Managed Standby TRUE 0
Materialized view rewrite TRUE 0
Database resource manager TRUE 0
Spatial TRUE 0
Export transportable tablespaces TRUE 0
Transparent Application Failover TRUE 0
Fast-Start Fault Recovery TRUE 0
Sample Scan TRUE 0
Duplexed backups TRUE 0
Java TRUE 0
OLAP Window Functions TRUE 0
Block Media Recovery TRUE 0
Fine-grained Auditing TRUE 0
Application Role TRUE 0
Enterprise User Security TRUE 0
Oracle Data Guard TRUE 0
OLAP TRUE 0
Basic Compression TRUE 0
Join index TRUE 0
Trial Recovery TRUE 0
Advanced Analytics TRUE 0
Online Redefinition TRUE 0
Streams Capture TRUE 0
File Mapping TRUE 0
Block Change Tracking TRUE 0
Flashback Table TRUE 0
Flashback Database TRUE 0
Transparent Data Encryption TRUE 0
Backup Encryption TRUE 0
Unused Block Compression TRUE 0
Result Cache TRUE 0
SQL Plan Management TRUE 0
SecureFiles Encryption TRUE 0
Real Application Testing TRUE 0
Flashback Data Archive TRUE 0
DICOM TRUE 0
Active Data Guard TRUE 0
Server Flash Cache TRUE 0
Advanced Compression TRUE 0
XStream TRUE 0
Deferred Segment Creation TRUE 0
Exadata Discovery TRUE 0
Data Mining TRUE 0
Global Data Services TRUE 0
Adaptive Execution Plans TRUE 0
Table Clustering TRUE 0
Zone Maps TRUE 0
Real Application Security TRUE 0
Privilege Analysis TRUE 0
Data Redaction TRUE 0
Cross Transportable Backups TRUE 0
Cache Fusion Lock Accelerator TRUE 0
Snapshot time recovery TRUE 0
Heat Map TRUE 0
Automatic Data Optimization TRUE 0
Transparent Sensitive Data Protection TRUE 0
In-Memory Column Store TRUE 0
Advanced Index Compression TRUE 0
In-Memory Aggregation TRUE 0
78 rows selected.
# source db
[oracle@db1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sun Mar 12 12:13:27 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /arch
Oldest online log sequence 156
Next log sequence to archive 158
Current log sequence 158
SQL> col PROPERTY_NAME for a30
SQL> col PROPERTY_VALUE for a40
SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME in('LOCAL_UNDO_ENABLED','DICTIONARY_ENDIAN_TYPE','GLOBAL_DB_NAME','NLS_CHARACTERSET');
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ----------------------------------------
DICTIONARY_ENDIAN_TYPE LITTLE
LOCAL_UNDO_ENABLED TRUE
GLOBAL_DB_NAME ORCL122
NLS_CHARACTERSET ZHS16GBK
SQL> select
2 db.name,
3 db.platform_id,
4 db.platform_name ,
5 os.ENDIAN_FORMAT
6 from
7 v$database db ,v$transportable_platform os
8 where db.platform_id=os.platform_id;
NAME PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
--------- ----------- -------------------------------- --------------
ORCL122 13 Linux x86 64-bit Little
SQL> select * from v$option where value='TRUE';
PARAMETER VALUE CON_ID
---------------------------------------------------------------- --------------- ----------
Partitioning TRUE 0
Objects TRUE 0
Advanced replication TRUE 0
Bit-mapped indexes TRUE 0
Connection multiplexing TRUE 0
Connection pooling TRUE 0
Database queuing TRUE 0
Incremental backup and recovery TRUE 0
Instead-of triggers TRUE 0
Parallel backup and recovery TRUE 0
Parallel execution TRUE 0
Parallel load TRUE 0
Point-in-time tablespace recovery TRUE 0
Fine-grained access control TRUE 0
Proxy authentication/authorization TRUE 0
Change Data Capture TRUE 0
Plan Stability TRUE 0
Online Index Build TRUE 0
Coalesce Index TRUE 0
Managed Standby TRUE 0
Materialized view rewrite TRUE 0
Database resource manager TRUE 0
Spatial TRUE 0
Export transportable tablespaces TRUE 0
Transparent Application Failover TRUE 0
Fast-Start Fault Recovery TRUE 0
Sample Scan TRUE 0
Duplexed backups TRUE 0
Java TRUE 0
OLAP Window Functions TRUE 0
Block Media Recovery TRUE 0
Fine-grained Auditing TRUE 0
Application Role TRUE 0
Enterprise User Security TRUE 0
Oracle Data Guard TRUE 0
OLAP TRUE 0
Basic Compression TRUE 0
Join index TRUE 0
Trial Recovery TRUE 0
Advanced Analytics TRUE 0
Online Redefinition TRUE 0
Streams Capture TRUE 0
File Mapping TRUE 0
Block Change Tracking TRUE 0
Flashback Table TRUE 0
Flashback Database TRUE 0
Transparent Data Encryption TRUE 0
Backup Encryption TRUE 0
Unused Block Compression TRUE 0
Result Cache TRUE 0
SQL Plan Management TRUE 0
SecureFiles Encryption TRUE 0
Real Application Testing TRUE 0
Flashback Data Archive TRUE 0
DICOM TRUE 0
Active Data Guard TRUE 0
Server Flash Cache TRUE 0
Advanced Compression TRUE 0
XStream TRUE 0
Deferred Segment Creation TRUE 0
Exadata Discovery TRUE 0
Data Mining TRUE 0
Global Data Services TRUE 0
Adaptive Execution Plans TRUE 0
Table Clustering TRUE 0
Zone Maps TRUE 0
Real Application Security TRUE 0
Privilege Analysis TRUE 0
Data Redaction TRUE 0
Cross Transportable Backups TRUE 0
Cache Fusion Lock Accelerator TRUE 0
Snapshot time recovery TRUE 0
Heat Map TRUE 0
Automatic Data Optimization TRUE 0
Transparent Sensitive Data Protection TRUE 0
In-Memory Column Store TRUE 0
Advanced Index Compression TRUE 0
In-Memory Aggregation TRUE 0
78 rows selected.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FAN MOUNTED
4 TEST2 MOUNTED
6 TEST READ WRITE NO
SQL> alter session set container=test;
Session altered.
SQL> select name from v$datafile;
NAME
-------------------------------------------------------------------------------------------------------
/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_system_dbz88noo_.dbf
/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_sysaux_dbz88noz_.dbf
/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_users_dbz88np1_.dbf
/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_undo_dbz88np1_.dbf
目标库中开始relocate pdb :test, 注意这段期间我们在用java应用不停在向源库PDB中做INSERT,确认对事务并无影响。
SQL> create pluggable database pdbtest from test@link_cdb210 relocate;
create pluggable database pdbtest from test@link_cdb210 relocate
*
ERROR at line 1:
ORA-65016: FILE_NAME_CONVERT must be specified
SQL> alter session set pdb_file_name_convert='/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile','pdbtest';
Session altered.
SQL> show parameter create
PARAMETER_NAME TYPE VALUE
------------------------------------------------------------ ----------- ----------------------------------------------------------------------------------------------------
create_bitmap_area_size integer 8388608
create_stored_outlines string
db_create_file_dest string
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
SQL> create pluggable database pdbtest from test@link_cdb210 relocate;
create pluggable database pdbtest from test@link_cdb210 relocate
*
ERROR at line 1:
ORA-65005: missing or invalid file name pattern for file - /oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_system_dbz88noo_.dbf
SQL> @ls users
TABLESPACE_NAME FILE_ID FILE_NAME EXT MB MAXSZ
------------------------------ ---------- -------------------------------------------------------------------------------- --- ---------- ----------
USERS 7 /u02/app/oracle/oradata/sztech/users01.dbf YES 5 32767.98
SQL> host
[oracle@sztech scripts]$ mkdir -p /u02/app/oracle/oradata/pdbtest
[oracle@sztech scripts]$ exit
exit
SQL> create pluggable database pdbtest from test@link_cdb210 relocate FILE_NAME_CONVERT=('/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile','/u02/app/oracle/oradata/pdbtest');
create pluggable database pdbtest from test@link_cdb210 relocate FILE_NAME_CONVERT=('/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile','/u02/app/oracle/oradata/pdbtest')
*
ERROR at line 1:
ORA-01276: Cannot add file /u02/app/oracle/oradata/pdbtest/o1_mf_system_dbz88noo_.dbf. File has an Oracle Managed Files file name.
SQL> alter session set pdb_file_name_convert='/oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile','/u02/app/oracle/oradata/pdbtest';
Session altered.
SQL> create pluggable database pdbtest from test@link_cdb210 relocate;
create pluggable database pdbtest from test@link_cdb210 relocate
*
ERROR at line 1:
ORA-01276: Cannot add file /u02/app/oracle/oradata/pdbtest/o1_mf_system_dbz88noo_.dbf. File has an Oracle Managed Files file name.
SQL> create pluggable database pdbtest fromtest@link_cdb210 relocate PATH_PREFIX ='/u02/app/oracle/oradata/pdbtest';
create pluggable database pdbtest from test@link_cdb210 relocate PATH_PREFIX ='/u02/app/oracle/oradata/pdbtest'
*
ERROR at line 1:
ORA-01276: Cannot add file /u02/app/oracle/oradata/pdbtest/o1_mf_system_dbz88noo_.dbf. File has an Oracle Managed Files file name.
SQL> ho oerr ora 1276
01276, 00000, "Cannot add file %s. File has an Oracle Managed Files file name."
// *Cause: An attempt was made to add to the database a datafile, log file,
// control file, snapshot control file, backup control file,
// datafile copy, control file copy or backuppiece with an Oracle
// Managed Files file name.
// *Action: Retry the operation with a new file name.
SQL> alter session set db_create_file_dest='/u02/app/oracle/oradata';
Session altered.
SQL> create pluggable database pdbtest from test@link_cdb210 relocate;
Pluggable database created.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBsztech MOUNTED
4 PDBTEST MOUNTED ######
6 PDBWEEJAR MOUNTED
SQL> select pdb_name, status from cdb_pdbs;
PDB_NAME STATUS
------------------------------ ----------
PDBsztech NORMAL
PDB$SEED NORMAL
PDBWEEJAR NORMAL
PDBTEST RELOCATING #######
[oracle@sztech oradata]$ ls -lrt
total 20
drwxr-x--- 3 oracle oinstall 4096 Mar 6 17:14 weejar
drwxr-x--- 3 oracle oinstall 4096 Mar 8 17:16 weejar_img
drwxr-x--- 5 oracle oinstall 4096 Mar 9 20:51 sztech
drwxr-x--- 3 oracle oinstall 4096 Mar 12 12:40 sztech
[oracle@sztech sztech]$ ls
492D54D080AD4990E053D238A8C08E62
[oracle@sztech sztech]$ cd 492D54D080AD4990E053D238A8C08E62/
[oracle@sztech 492D54D080AD4990E053D238A8C08E62]$ ls
datafile
[oracle@sztech 492D54D080AD4990E053D238A8C08E62]$ cd datafile/
[oracle@sztech datafile]$ ls -lrt
total 556064
-rw-r----- 1 oracle oinstall 52436992 Mar 12 12:41 o1_mf_users_dd9n9byf_.dbf
-rw-r----- 1 oracle oinstall 52436992 Mar 12 12:41 o1_mf_undo_dd9n9byg_.dbf
-rw-r----- 1 oracle oinstall 241180672 Mar 12 12:46 o1_mf_sysaux_dd9n9byd_.dbf
-rw-r----- 1 oracle oinstall 225452032 Mar 12 12:47 o1_mf_system_dd9n9by2_.dbf
Note:
如果源库使用了OMF格式的文件名,目标库无法使用convert转换,只能配置db_create_file_dest同样对于该PDB使用OMF。PDB创建成功后是MOUNT格式,此时源库的DML事务并没有影响。同时查看PDBTEST的状态为RELOCATING, 同时监听上已注册了pdbsztech的service。
# source db
SQL> select pdb_name, status from cdb_pdbs;
PDB_NAME STATUS
----------------------------- ----------
TEST NORMAL
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
6 TEST READ WRITE NO
以上操作目标库alert log日志
2017-03-12 12:40:08.012000 +08:00
create pluggable database pdbtest from test@link_cdb210 relocate
2017-03-12 12:40:10.952000 +08:00
Opatch validation is skipped for PDB PDBTEST (con_id=4)
2017-03-12 12:47:08.169000 +08:00
Endian type of dictionary set to little
****************************************************************
Pluggable Database PDBTEST with pdb id - 4 is created as UNUSABLE.
If any errors are encountered before the pdb is marked as NEW,
then the pdb must be dropped
local undo-1, localundoscn-0x0000000000164856
****************************************************************
2017-03-12 12:47:11.075000 +08:00
Applying media recovery for pdb-4099 from SCN 3296978 to SCN 3298748
Remote log information: count-1
thr-1, seq-158, logfile-/arch/parlog_1_158_ea6c4617_936609332.arc, los-2479672, nxs-18446744073709551615
Media Recovery Start
Serial Media Recovery started
Media Recovery Log /arch/parlog_1_158_ea6c4617_936609332.arc ##### 路径是源库
2017-03-12 12:47:40.825000 +08:00
Incomplete Recovery applied until change 3298748 time 03/12/2017 12:47:06
Media Recovery Complete (sztech)
Completed: create pluggable database pdbtest from test@link_cdb210 relocate
在目标CDB中打开PDB,实际的PDB切换操作
SQL> alter pluggable database pdbtest open;
Pluggable database altered.
SQL> select pdb_name, status from cdb_pdbs;
PDB_NAME STATUS
-------------------------------------------- ----------
PDBsztech NORMAL
PDB$SEED NORMAL
PDBWEEJAR NORMAL
PDBTEST NORMAL
SQL> alter session set container=pdbtest;
Session altered.
SQL> @tab test.t
Show tables matching condition "%test.t%" (if schema is not specified then current user s tables only are shown)...
OWNER TABLE_NAME TYPE NUM_ROWS BLOCKS EMPTY AVGSPC ROWLEN TAB_LAST_ANALYZED DEGREE COMPRESS
-------------------- ------------------------------ ---- ------------ ------------- --------- ------ ------ ------------------- -------------------- --------
TEST T TAB 4238 20 0 0 19 2017-03-12 12:58:04 1 DISABLED
SQL> @desc test.t
Name Null? Type
------------------------------- -------- ----------------------------
1 STR VARCHAR2(100)
2 INTIME DATE
SQL> select max(intime) from test.t;
MAX(INTIME)
-------------------
2017-03-12 12:58:57
SQL> select count(*) from test.t where str='jdbc';
COUNT(*)
----------
2146
# 测试向源库insert 的java 进程日志
...
2145:2017-03-12 12:58:59
2146:2017-03-12 12:59:00
insert end
java.sql.SQLRecoverableException: 无法从套接字读取更多的数据
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1157)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:350)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
at oracle.jdbc.driver.T4C7Ocommoncall.doOCOMMIT(T4C7Ocommoncall.java:75)
at oracle.jdbc.driver.T4CConnection.doCommit(T4CConnection.java:641)
Note:
目标CDB中的relocate pdb打开时,源库之前的INSERT会话补KILL, 因为测试的应用只配置了到源库的连接,所以insert 被中断,同时验证了数据在源库的记录条数和目标端一致。 且源库的PDB TEST已自动删除。 目标库的PDBtest可以正常操作。
目标库对应的ALERT LOG
2017-03-12 12:58:36.324000 +08:00
alter pluggable database pdbtest open
2017-03-12 12:58:37.901000 +08:00
Applying media recovery for pdb-4099 from SCN 3298748 to SCN 3303755
Remote log information: count-2
thr-1, seq-158, logfile-/arch/9b87b4_1_158_936609332.dbf, los-2479672, nxs-3301888
thr-1, seq-159, logfile-/arch/parlog_1_159_ea6c4617_936609332.arc, los-3301888, nxs-18446744073709551615
Media Recovery Start
Serial Media Recovery started
Media Recovery Log /arch/9b87b4_1_158_936609332.dbf
2017-03-12 12:58:52.959000 +08:00
Media Recovery Log /arch/parlog_1_159_ea6c4617_936609332.arc
2017-03-12 12:58:59.102000 +08:00
Incomplete Recovery applied until change 3303755 time 03/12/2017 12:58:34
Media Recovery Complete (sztech)
Autotune of undo retention is turned on.
Undo initialization finished serial:0 start:6848016 end:6848016 diff:0 ms (0.0 seconds)
Opatch validation is skipped for PDB PDBTEST (con_id=0)
***************************************************************
WARNING: Pluggable Database PDBTEST with pdb id - 4 is
altered with errors or warnings. Please look into
PDB_PLUG_IN_VIOLATIONS view for more details.
***************************************************************
2017-03-12 12:59:00.330000 +08:00
Opening pdb with no Resource Manager plan active
2017-03-12 12:59:04.586000 +08:00
JIT: pid 5236 requesting stop
2017-03-12 12:59:10.993000 +08:00
Applying media recovery for pdb-4099 from SCN 3303755 to SCN 3304167
Remote log information: count-1
thr-1, seq-159, logfile-/arch/parlog_1_159_ea6c4617_936609332.arc, los-3301888, nxs-18446744073709551615
Media Recovery Start
Serial Media Recovery started
Media Recovery Log /arch/parlog_1_159_ea6c4617_936609332.arc
2017-03-12 12:59:14.011000 +08:00
Incomplete Recovery applied until change 3304167 time 03/12/2017 12:59:05
Media Recovery Complete (sztech)
[5236] Successfully onlined Undo Tablespace 5.
Undo initialization finished serial:0 start:6862572 end:6862668 diff:96 ms (0.1 seconds)
Database Characterset for PDBTEST is ZHS16GBK
2017-03-12 12:59:15.870000 +08:00
[5236] Successfully onlined Undo Tablespace 5.
Undo initialization finished serial:0 start:6864208 end:6864295 diff:87 ms (0.1 seconds)
Opatch validation is skipped for PDB PDBTEST (con_id=4)
Deleting old file#29 from file$
Deleting old file#30 from file$
Deleting old file#31 from file$
Deleting old file#32 from file$
Adding new file#44 to file$(old file#29)
Adding new file#45 to file$(old file#30)
Adding new file#46 to file$(old file#31)
Adding new file#47 to file$(old file#32)
Successfully created internal service pdbtest at open
****************************************************************
Post plug operations are now complete.
Pluggable database PDBTEST with pdb id - 4 is now marked as NEW.
****************************************************************
Pluggable database PDBTEST dictionary check beginning
Pluggable Database PDBTEST Dictionary check complete
Database Characterset for PDBTEST is ZHS16GBK
Opatch validation is skipped for PDB PDBTEST (con_id=0)
***************************************************************
WARNING: Pluggable Database PDBTEST with pdb id - 4 is
altered with errors or warnings. Please look into
PDB_PLUG_IN_VIOLATIONS view for more details.
***************************************************************
2017-03-12 12:59:16.971000 +08:00
JIT: pid 5236 requesting full stop
2017-03-12 12:59:18.966000 +08:00
Opening pdb with no Resource Manager plan active
Pluggable database PDBTEST opened read write
Completed: alter pluggable database pdbtest open
源库对应的ALERT 日志
# ALERT LOG
2017-03-12T12:54:40.070341+08:00
Thread 1 advanced to log sequence 159 (LGWR switch)
Current log# 3 seq# 159 mem# 0: /oracle/app/oracle/oradata/ORCL122/onlinelog/redo03.log
2017-03-12T12:54:40.611341+08:00
Archived Log entry 98 added for T-1.S-158 ID 0x9b6eb4 LAD:1
2017-03-12T12:58:57.765334+08:00
TEST(6):JIT: pid 20670 requesting stop
2017-03-12T12:58:58.312698+08:00
TEST(6):opiodr aborting process unknown ospid (7259) as a result of ORA-1089
2017-03-12T12:58:58.406081+08:00
TEST(6):KILL SESSION for sid=(58, 61986):
TEST(6): Reason = PDB close immediate
TEST(6): Mode = KILL HARD FORCE -/-/-
TEST(6): Requestor = USER (orapid = 27, ospid = 20670, inst = 1)
TEST(6): Owner = Process: USER (orapid = 56, ospid = 7259)
TEST(6): Result = ORA-0
TEST(6):KILL SESSION for sid=(64, 20274):
TEST(6): Reason = PDB close immediate
TEST(6): Mode = KILL HARD FORCE -/-/-
TEST(6): Requestor = USER (orapid = 27, ospid = 20670, inst = 1)
TEST(6): Owner = Process: USER (orapid = 57, ospid = 13885)
TEST(6): Result = ORA-0
TEST(6):KILL SESSION for sid=(69, 18219):
TEST(6): Reason = PDB close immediate
TEST(6): Mode = KILL HARD FORCE -/-/-
TEST(6): Requestor = USER (orapid = 27, ospid = 20670, inst = 1)
TEST(6): Owner = Process: USER (orapid = 52, ospid = 8682)
TEST(6): Result = ORA-0
TEST(6):KILL SESSION for sid=(70, 22999):
TEST(6): Reason = PDB close immediate
TEST(6): Mode = KILL HARD FORCE -/-/-
TEST(6): Requestor = USER (orapid = 27, ospid = 20670, inst = 1)
TEST(6): Owner = Process: USER (orapid = 59, ospid = 15135)
TEST(6): Result = ORA-0
2017-03-12T12:59:01.770159+08:00
Pluggable database TEST closed
TEST(6):JIT: pid 20670 requesting stop
2017-03-12T12:59:05.132239+08:00
Pluggable database TEST closed
2017-03-12T12:59:12.712096+08:00
Deleted Oracle managed file /oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_undo_dbz88np1_.dbf
Deleted Oracle managed file /oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_users_dbz88np1_.dbf
Deleted Oracle managed file /oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_temp_dbz88np0_.dbf
Deleted Oracle managed file /oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_sysaux_dbz88noz_.dbf
Deleted Oracle managed file /oracle/app/oracle/oradata/ORCL122/492D54D080AD4990E053D238A8C08E62/datafile/o1_mf_system_dbz88noo_.dbf
Summary:
12.2的online pdb relocate 实现了PDB 在线几乎零停机时间在不同CDB之间的迁移,且在relocate过程中源库一直是open read-write状态,使用了增量日志的方式追加减少了最源库和网络资源的影响。降低了PDB操作和移动如上云、下云的代价。
|