oracle 19c pdb遷移
一:該方法失敗了!使用rman 備份某個pdb,來實現遷移某個pdb的目的:
針對19c制定備份任務,可以選擇只備份特定的pdb,這樣有個好處是,如果需要恢復,不用恢復重置檔案和引數檔案,直接恢復某個pdb即可,具體得做個試驗記錄下,這只是我的猜測!恢復某個或者多個pdb的時候,不需要停止其他的pdb; 然後再做一個試驗,是不是可以從新起名來恢復某個pdb,例如liu_pdb恢復成he_pdb;
首先在81.94上備份liu_pdb的pdb資料庫,
backup pluggable
database liu_pdb;
嘗試在81.93上恢復,前提是81.93上沒有liu_pdb這個pdb,如下告訴rman的備份檔案路徑,發現報錯
RMAN> catalog start with '/data/u01/backup';
searching for all files that match the pattern /data/u01/backup
List of Files Unknown to the Database
=====================================
File Name: /data/u01/backup/liu_PDB_20210313_2_1
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
no files cataloged
List of Files Which Were Not Cataloged
=======================================
File Name: /data/u01/backup/liu_PDB_20210313_2_1
RMAN-07518: Reason: Foreign database file DBID: 457766100 Database Name: LIUDB
然後嘗試先建立上liu_pdb看看是不是能解決,估計不可以!因為他報錯的是db_name 是liudb,但是81.93這裡是db_name 為liuhe!
DBID是DataBase IDentifier的縮寫,意思就是資料庫的唯一識別符號。這個DBID在資料檔案頭和控制檔案都是存在的,可以用於標示資料檔案的歸屬,異地恢復的時候db_name不可以變化!
如果db_name一樣,是不是可以這樣來遷移某個pdb?試了下也不行,依舊報錯!雖然db_name一樣,但是dbid不一樣也不行!
RMAN-07518: Reason: Foreign database file DBID: 457766100 Database Name: LIUDB
然後嘗試先恢復引數檔案再恢復控制檔案,最後恢復pdb,這個操作是在空環境下進行的(也就是隻有資料庫軟體)試試可以嗎?
具體過程:首先備份pdb02,開啟自動備份了引數和控制檔案
RMAN> backup pluggable database PDB02 format '/data/u01/PDB02_%T_%s_%p';
然後先恢復引數檔案,再恢復控制檔案
RMAN>restore spfile to '$ORACLE_HOME/dbs/initliuhe.ora' from '/data/u01/backup/c-457766100-20210313-07';
RMAN> restore controlfile from '/data/u01/backup/c-457766100-20210313-07';
RMAN> catalog start with '/data/u01/backup';
RMAN> restore pluggable database PDB02; ---成功
但是當你recover的時候失敗:其實就算成功了,也不行,因為你就沒有cdb,怎麼啟動pdb呢?
RMAN> recover pluggable database PDB02;
Starting recover at 13-MAR-21
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=9 device type=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/13/2021 23:09:13
RMAN-06067: RECOVER DATABASE required with a backup or created control file
最後嘗試下修改dbid為源端資料庫的dbid
但是nid也只能修改成從新生成的dbid,也不能自定義改成源端一樣的dbid
[oracle@tvy-dbtest-04 dbs]$ nid target=/
失敗了,不能透過backup 某個pdb,然後恢復到另一個例項!
二:採用拔出某個pdb,然後scp 對應檔案和xml檔案到目的端,最後再插入pdb來實現遷移資料庫!這樣來遷移資料和使用者都會遷移過去!
如下這樣來實現遷移某個pdb的效能 ,expdp ,rman 三者的效能對比?
備份:注意需要先close 源pdb。
SQL>alter pluggable database pdb01 close immediate;
然後拔出PDB01,注意必須起名字為.xml字尾!
SQL>alter pluggable database pdb01 unplug into '/home/oracle/pdb01.xml';
SQL> alter pluggable database LIU_PDB unplug into '/home/oracle/LIU_PDB0313';
alter pluggable database LIU_PDB unplug into '/home/oracle/LIU_PDB0313 *
ERROR at line 1:
ORA-65125: valid XML or PDB archive file name is required
注意執行完unplug之後,該pdb就無法開啟了,
SQL> select pdb_id,pdb_name,dbid,STATUS from dba_pdbs where pdb_name='LIU_PDB';
pdb_id pdb_name dbid STATUS
3
pdb01
527541637
UNPLUGGED
恢復分兩種情況:
一)在本地恢復
1)本地沒有刪除原來的
pdb01,需要加as clone 關鍵字來避開conflicts with the GUID的錯誤!
具體操作如下:
SQL> create pluggable database pdb02 using '/home/oracle/pdb01.xml';
報錯如下,
SQL> create pluggable database pdb02 using '/home/oracle/pdb01.xml';
create pluggable database pdb01 using '/home/oracle/pdb01.xml' *
ERROR at line 1:
ORA-65018: FILE_NAME_CONVERT or NOCOPY must be specified
可以透過設定引數db_create_file_dest來指定新建立的pdb的檔案的路徑,也可以設定FILE_NAME_CONVERT來實現轉換(前提得知道原來的
unplug的pdb的檔案路徑)
注意如果FILE_NAME_CONVERT指定的目錄不存在會自動建立上!
方法1:如果沒有設定db_create_file_dest,則需要指定FILE_NAME_CONVERT來實現轉換目錄:
create pluggable database pdb02 using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01');
因為我是在同一個cbd中,先把liu_pdb匯出來,然後建立成另一個名字的pdb,就會如下報錯,其實就是pdb的id衝突!加上
as clone關鍵字 就可以從新生成一個!
SQL> create pluggable database pdb02 using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01');
create pluggable database pdb01 using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01')
*
ERROR at line 1:
ORA-65122: Pluggable database GUID conflicts with the GUID of an existing
container.
解決加個as clone即可:
SQL> create pluggable database pdb01
as clone using '/home/oracle/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb01');
Pluggable database created.
建立完pdb01會建立如下的檔案:
/data/u01/app/oracle/oradata/LIUDB/pdb01/system01.dbf
/data/u01/app/oracle/oradata/LIUDB/pdb01/sysaux01.dbf
/data/u01/app/oracle/oradata/LIUDB/pdb01/undotbs01.dbf
/data/u01/app/oracle/oradata/LIUDB/pdb01/users01.dbf
方法2:設定db_create_file_dest,這樣建立的pdb就預設在設定db_create_file_dest的目錄下了,
SQL> alter system set db_create_file_dest='/data/u01/app/oracle/oradata/LIUDB/';
System altered.
然後可以直接執行建立
SQL> create pluggable database pdb02 as clone using '/home/oracle/pdb01.xml';
然後會自動建立如下所示的檔案:自動生產的名字,建議首選第一種,是在不知道原來的pdb的檔案目錄的時候迫不得已再選擇設定
db_create_file_dest
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_system_j4s1vvw4_.dbf
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_sysaux_j4s1vvw5_.dbf
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_undotbs1_j4s1vvw6_.dbf
/data/u01/app/oracle/oradata/LIUDB/LIUDB/BD686D8A980BC360E0535E51010AD293/datafi
le/o1_mf_users_j4s1vvw7_.dbf
註釋
如下語句
create pluggable database pdb03 as clone using '/home/oracle/pdb01.xml' nocopy tempfile reuse;
其中as clone表示是克隆,那麼pdb03的pdb_id和GUID會從新生成;
其中nocopy表示不復制資料檔案,仍用原來的位置的檔案作為新的pdb的資料檔案,但是pdb_id也會從新生成一個新的!
其中 tempfile reuse表示複用臨時檔案
二):異地恢復,也就說在另一臺機器上恢復
alter pluggable database liu_pdb unplug into '/home/oracle/pdb01.xml';這裡生產的xml檔案只是記錄了pdb1的一些資訊,例如相關資料檔案的路徑,pdb_id ,GUID等等資訊,如果需要異地恢復,需要把對應的pdb01的資料檔案也一併複製到目的端的相應目錄下
[oracle@tvy-dbtest-04 liu_pdb]$ scp pdb01.xml oracle@10.1.81.93:/data/u01/
[oracle@tvy-dbtest-04 liu_pdb]$ pwd
/data/u01/app/oracle/oradata/LIUDB/liu_pdb
[oracle@tvy-dbtest-04 liu_pdb]$ scp * oracle@10.1.81.93:/data/u01/app/oracle/oradata/LIUDB/liu_pdb/
oracle@10.1.81.93's password:
sysaux01.dbf 100% 380MB 118.1MB/s 00:03
system01.dbf 100% 280MB 149.8MB/s 00:01
undotbs01.dbf 100% 100MB 96.1MB/s 00:01
users01.dbf 100% 5128KB 101.2MB/s 00:00
然後再在異地81.93上指定create pluggable database 的命令!具體同本地恢復的內容!
SQL> create pluggable database pdb01 as clone using '/data/u01/pdb01.xml' file_name_convert=('/data/u01/app/oracle/oradata/LIUDB/liu_pdb','/data/u01/app/oracle/oradata/LIUDB/pdb02');
三:本地實現複製某個pdb的方法:從
pdb01
克隆
pdb01_bak
關閉pdb01:
SQL> alter pluggable database pdb01 close immediate;
Pluggable database altered.
啟動pdb01到只讀模式:
SQL> alter pluggable database pdb01 open read only;
Pluggable databasealtered.
複製pdb01,起名字為pdb01_bak,
SQL> CREATE PLUGGABLE DATABASE pdb01_bak from pdb01 FILE_NAME_CONVERT =('/data/u01/app/oracle/oradata/LIUDB/pdb01','/data/u01/app/oracle/oradata/LIUDB/pdb01_bak');
Pluggable databasecreated.
SQL>alter pluggable database pdb01 close immediate;
Pluggable databasealtered.
SQL>alter pluggable database pdb01 open;
Pluggable databasealtered.
SQL>alter pluggable database pdb01_bak open;
Pluggable databasealtered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2762774/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 19c adg全庫遷移資料Oracle
- oracle 19c CDB vs pdb 建立Oracle
- PDB克隆遷移轉換
- 【BUILD_ORACLE】使用Oracle資料泵線上不停機克隆/遷移PDBUIOracle
- 多租戶:在Oracle12.2中 從Non-CDB遷移到PDB,從PDB遷移另一個CDB中Oracle
- oracle 19c建立非OMF檔案命名格式的PDBOracle
- oracle遷移OCR盤Oracle
- Oracle遷移文件大全Oracle
- Oracle遷移文章大全Oracle
- Oracle 9i升級19C 邏輯遷移詳細方法(一)Oracle
- Oracle 9i升級19C 邏輯遷移詳細方法(二)Oracle
- Oracle 9i升級19C 遷移關於失效索引的梳理方法Oracle索引
- oracle xtts遷移 AIX to LinuxOracleTTSAILinux
- Oracle rman duplicate遷移測試Oracle
- AWS RDS Oracle資料遷移Oracle
- 12c跨平臺完成PDB的備份遷移
- RMAN備份恢復典型案例——跨平臺遷移pdb
- 【PDB】 為Oracle pdb新增服務(pdb add service)Oracle
- Oracle 建立PDB-Plugging In an Unplugged PDBOracle
- Oracle 9i 11g歷史庫升級遷移資料至19c CDBOracle
- 【PDB】pdb閃回,Oracle還原點Oracle
- 【PDB】Oracle跨PDB檢視查詢Oracle
- 【PDB】Oracle PDB資源管理參考Oracle
- 【PDB】Oracle pdb維護常用sql命令OracleSQL
- Oracle RAC 遷移替換 OCR 盤Oracle
- 遷移oracle使用者密碼Oracle密碼
- 連載一:Oracle遷移文件大全Oracle
- 連載二:Oracle遷移文章大全Oracle
- 使用GoldenGate 遷移Oracle到PostgreSQL/LightDBGoOracleSQL
- Oracle從Windows 11.2.0.1升級並遷移到Linux 19cOracleWindowsLinux
- 【PDB】Oracle 建立pdb說明(create pluggable database)OracleDatabase
- 【XTTS】Oracle XTTS V4--Oracle11.2.0.4+ 遷移升級TTSOracle
- 無外網Oracle資料庫遷移Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- Oracle中表空間、表、索引的遷移Oracle索引
- 【STATS】Oracle遷移表統計資訊Oracle