Oracle 使用RMAN COPY 移動 Datafile 位置
為了保證資料的一致性,都是選擇了offline 或者將DB 啟動到mount 模式。 這裡演示一下使用RMAN copy 命令來進行datafile 的移動,這個方法也很常用,比如我們要將datafile 從磁碟移動到ASM 裡時,就可以使用這個命令。
如果資料檔案很多的話,手工去敲命令也不太現實,所以先編寫好shell 指令碼,然後新增到crontab裡,讓系統後臺呼叫,這樣也避免網路中斷帶來的影響。
如果是直接在伺服器上操作,可以不用這麼做,遠端SSH 到伺服器,讓指令碼後臺操作很有必要!
http://blog.csdn.net/tianlesoftware/article/details/5315039
1.檢視datafile位置:
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u02/app/oracle/oradata/anqing/users01.dbf
/u02/app/oracle/oradata/anqing/sysaux01.dbf
/u02/app/oracle/oradata/anqing/undotbs01.dbf
/u02/app/oracle/oradata/anqing/system01.dbf
建立一個新目錄:
rac1:/home/oracle> mkdir -p/u02/app/oracle/oradata/anqing2
2.編寫RMAN 指令碼:Rcopy.sh,內容如下:
#!/bin/ksh
export LANG=en_US
RMAN_LOG_FILE=${0}.out
ORACLE_HOME=/u02/app/oracle/product/11.2.0/db_1
export ORACLE_HOME
RMAN=$ORACLE_HOME/bin/rman
export RMAN
ORACLE_SID=anqing
export ORACLE_SID
ORACLE_USER=oracle
export ORACLE_USER
echo "ORACLE_SID:$ORACLE_SID">>$RMAN_LOG_FILE
echo"ORACLE_HOME:$ORACLE_HOME">>$RMAN_LOG_FILE
echo"ORACLE_USER:$ORACLE_USER">>$RMAN_LOG_FILE
echo"==========================">>$RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
$RMAN nocatalog TARGET / msglog$RMAN_LOG_FILE append <<EOF
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
copy datafile'/u02/app/oracle/oradata/anqing/users01.dbf' to'/u02/app/oracle/oradata/anqing2/users01.dbf';
copy datafile'/u02/app/oracle/oradata/anqing/sysaux01.dbf' to'/u02/app/oracle/oradata/anqing2/sysaux01.dbf';
copy datafile'/u02/app/oracle/oradata/anqing/undotbs01.dbf' to'/u02/app/oracle/oradata/anqing2/undotbs01.dbf';
copy datafile'/u02/app/oracle/oradata/anqing/system01.dbf' to'/u02/app/oracle/oradata/anqing2/system01.dbf';
release channel c2;
release channel c1;
}
EOF
echo >> $RMAN_LOG_FILE
exit
--賦執行許可權:
[root@rac1 u01]# chmod 755 Rcopy.sh
3.將DB 啟動到mount 狀態:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 3206836224 bytes
Fixed Size 2232640 bytes
Variable Size 2701135552 bytes
Database Buffers 486539264 bytes
Redo Buffers 16928768 bytes
Database mounted.
SQL>
4. 執行Rmancopy 指令碼:
rac1:/u01> crontab -l
00 11 * * * /u01/Rcopy.sh &
--確認拷貝:
rac1:/u02/app/oracle/oradata/anqing2> ll-lh
total 1.6G
-rw-r-----. 1 oracle oinstall 571M Mar 7 13:30 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 711M Mar 7 13:31 system01.dbf
-rw-r-----. 1 oracle oinstall 321M Mar 7 13:30 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5.1M Mar 7 13:30 users01.dbf
5. 對資料檔案進行Rename
這裡的Rename 操作更新datafile 在控制檔案裡的記錄。注意的一點,控制檔案不記錄臨時檔案的資訊,所以,臨時檔案rename不能rename。
如果要對臨時檔案進行轉移,可以對臨時檔案進行重建。 這塊內容具體參考:
http://blog.csdn.net/tianlesoftware/article/details/4974440
http://blog.csdn.net/tianlesoftware/article/details/4697417
SQL> alter database rename file'/u02/app/oracle/oradata/anqing/users01.dbf' to'/u02/app/oracle/oradata/anqing2/users01.dbf';
Database altered.
SQL> alter database rename file'/u02/app/oracle/oradata/anqing/sysaux01.dbf' to'/u02/app/oracle/oradata/anqing2/sysaux01.dbf';
Database altered.
SQL> alter database rename file'/u02/app/oracle/oradata/anqing/undotbs01.dbf' to'/u02/app/oracle/oradata/anqing2/undotbs01.dbf';
Database altered.
SQL> alter database rename file'/u02/app/oracle/oradata/anqing/system01.dbf' to'/u02/app/oracle/oradata/anqing2/system01.dbf';
Database altered.
6.開啟DB並驗證:
SQL> alter database open;
Database altered.
SQL> select file_name fromdba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u02/app/oracle/oradata/anqing2/users01.dbf
/u02/app/oracle/oradata/anqing2/sysaux01.dbf
/u02/app/oracle/oradata/anqing2/undotbs01.dbf
/u02/app/oracle/oradata/anqing2/system01.dbf
這裡我們只遷移了資料檔案,向之前說的臨時表空間,控制檔案和online Redo log 都還在原來的位置。
相關文章
- RMAN-06214: Datafile Copy
- Oracle使用RMAN從Windows遷移資料到LinuxOracleWindowsLinux
- Oracle rman duplicate遷移測試Oracle
- oracle 修改資料檔案位置(路徑)(移動)Oracle
- Oracle Rman多通道故障轉移問題分析Oracle
- RMAN restore fails with ORA-01180: can not create datafile 1 (文件 ID 1265151.1)RESTAI
- Sqlserver移動檔案路徑move datafile的三種方法SQLServer
- 【RMAN】Oracle使用rman將11.2.0.4資料庫遷移至Oracle12c命令參考Oracle資料庫
- ORACLE rman與RMAN-00054&ORA-09945Oracle
- 【RMAN】Oracle rman 常用命令參考Oracle
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Rename or Move a datafile In Oracle 19c RAC-20220117Oracle
- 利用rman copy的方法實現儲存上裸裝置資料檔案的遷移ITPUB
- 利用offline datafile檔案方式遷移資料
- 【Oracle19c】Oracle19c rman使用簡單測試Oracle
- 3.1.1.2 使用RMAN啟動資料庫資料庫
- Oracle RMAN恢復測試Oracle
- Oracle RMAN備份實戰Oracle
- Oracle OCP(60):RMAN 備份Oracle
- Oracle使用RMAN將普通資料檔案轉成ASMOracleASM
- Oracle 11G RAC複製備庫RMAN-03002 RMAN-05501 RMAN-03015 RMAN-03009 RMAN-10038Oracle
- Copy of a Copy of a Copy
- oracle手工建庫後rman無法啟用(RMAN-04015)Oracle
- Oracle 12c 使用RMAN搭建物理備庫(RAC to RAC)Oracle
- Oracle RMAN 表空間恢復Oracle
- 用rman遷移資料庫資料庫
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- ORACLE NBU調取oracle rman指令碼備份歸檔不自動刪除歸檔Oracle指令碼
- 【RMAN】Oracle11g透過rman升級到12cOracle
- Oracle RMAN備份為什麼會大量使用temp表空間?Oracle
- Converting Oracle Database from Linux to Windows using RMANOracleDatabaseLinuxWindows
- oracle 12c rman備份pdbOracle
- 分享Oracle Rman的備份指令碼Oracle指令碼
- Oracle 12c RMAN全攻略Oracle
- 【RMAN】Oracle12c以後rman 備份恢復命令參考Oracle
- 資料遷移的時候出現RMAN-03002,RMAN-06026
- win10系統移動工作列位置的方法Win10
- 遷移oracle使用者密碼Oracle密碼