oracle資料檔案遷移

datapeng發表於2014-05-24
到客戶現場服務,加資料表空間檔案的時候,將裸裝置建到r5上!狂暈,沒有辦法,只好自己來搞了 

1、 檢視一下資料據檔案 
SQL> select status,file_name from dba_data_files where tablespace_name = 'USERS 

STATUS FILE_NAME 
----------------------------------------- 
AVAILABLE /dev/raw/raw11 
AVAILABLE /dev/raw/raw12 
AVAILABLE /dev/raw/raw13 
AVAILABLE /dev/raw/raw14 
AVAILABLE /dev/raw/raw15 

我加的時候加了/dev/raw/raw15 客戶說,這個是r5,弄到了這個上面datavg(名字誤導我了,搞到存放歷史資料的上面去了)正確的應該建到oravg,我檢視一下oravg 

[root@uptest oradata]# vgdisplay oravg | grep Free 
Free PE / Size 51830 / 202.5 GB 

儲存還是夠多,可以重來 

沒辦法,只好重新搞 


2、重新建lv 

[root@updata oradata]#lvcreate -n users06 -L 20482m oravg 
--這裡要注意,我們要預留2m,我一般都會比實際的大2m,然後做一下resize 
[root@updata oradata]#raw /dev/raw/raw16 /dev/mapper/oravg-users06 

[root@updata oradata]#chown oracle:oinstall /dev/mapper/oravg-users06 

[root@updata oradata]#chown oracle:oinstall /dev/raw/raw16 

[root@updata oradata]#chmod 660 /dev/raw/raw16 

建好了後,就可以遷移了 

3、遷移裸裝置 

首先將要遷移的檔案離線 
SQL> alter database datafile '/dev/raw/raw15' offline 

開啟rman,進行遷移自制 

[oracle@updata u02]$ rman target / 

RMAN> copy datafile '/dev/raw/raw15' to '/dev/raw/raw16'; 

Starting backup at 05-MAY-11 
using target database control file instead of recovery catalog 
allocated channel: ORA_DISK_1 
channel ORA_DISK_1: SID=18 device type=DISK 
channel ORA_DISK_1: starting datafile copy 
input datafile file number=00005 name=/dev/raw/raw15 
output file name=/dev/raw/raw15 tag=TAG20120505T051439 RECID=3 STAMP=782457346 
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:05:15 
Finished backup at 05-MAY-11 

4.對資料庫檔案rename\online 

由於是晚上,業務比較少,所以我跟客戶建議了重啟一下資料庫,客戶說基本沒問題,這正是我所需要的 

SQL> shutdown immediate 

Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup mount 
ORACLE instance started. 

Total System Global Area 701485056 bytes 
Fixed Size 2216664 bytes 
Variable Size 322964776 bytes 
Database Buffers 373293056 bytes 
Redo Buffers 3010560 bytes 
Database mounted. 

SQL> alter database rename file '/dev/raw/raw15' to '/dev/raw/raw16'; 

SQL> alter database datafile '/dev/raw/raw16' online; 

* 
ERROR at line 1: 
ORA-01113: file 24 needs media recovery 
ORA-01110: data file 24: '/dev/raw/raw16' 

提示需要恢復 

SQL> recover datafile '/dev/raw/raw16'; 

Media recovery complete. 

SQL> alter database datafile '/dev/raw/raw16' online; 

Database altered. 

SQL> alter database open; 

Database altered. 

最近,我做了一個resize 

SQL> alter database datafile '/dev/raw/raw16' resize 20480m; 

最後就是 

raw /dev/raw/raw15 0 0 

umount 

lvremove 

搞定! 

5、oracle 的rman工具,可以把裸裝置遷移到檔案系統,從檔案系統到裸裝置都可以實現不停機! 

要注意幾點: 
1、需要開啟歸檔模式 
2、遷移單個檔案,就使單個檔案離線 
3、遷移表空間,就把表空間進行離線 
4、裸裝置遷移時,目標裸裝置比原來的大一點。

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

相關文章