Oracle遷移資料檔案從檔案系統至裸裝置
實施將檔案系統上的資料檔案移至裸裝置上:
進入sqlplus命令列:
$ sqlplus '/as sysdba'
SQL*Plus: Release 9.2.0.6.0 - Production on Thu Aug 19 19:52:32 2010
Copyright (c) 1982, 2002, Oracle Corporation.All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
offline該表空間:
SQL> alter tablespace BONC offline;
Tablespace altered.
遷移檔案系統資料檔案至裸裝置:
$ rman target /
Recovery Manager: Release 9.2.0.6.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation.All rights reserved.
connected to target database: HIUBI (DBID=2363790514)
RMAN> copy datafile 108 to '/dev/rv06_4_back007';
Starting copy at 19-AUG-10
using channel ORA_DISK_1
channel ORA_DISK_1: copied datafile 108
output filename=/dev/rv06_4_back007 recid=7 stamp=727473123
Finished copy at 19-AUG-10
重新命名資料檔案:
SQL> alter tablespace BONC
2 rename datafile '/arrayubi/oracle/product/9.2.0/dbs/D:ORACLEPRODUCT10.2.0ORADATAORCLbonc.dbf'
3to '/dev/rv06_4_back007';
online該表空間並修改為read write:
SQL> alter tablespace BONC online;
Tablespace altered.
SQL> alter tablespace BONC read write;
Tablespace altered.
查驗:
SQL> set linesize 120
SQL> col file_name for a30
SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 M,status from dba_data_files where tablespace_name='BONC';
FILE_ID FILE_NAMETABLESPACE_NAMEM STATUS
---------- ------------------------------ ------------------------------ ---------- ---------
108 /dev/rv06_4_back007 BONC2460 AVAILABLE
最後將原檔案系統上的資料檔案rm掉即可。
其實在遇到此類問題時,解決問題的思路還是比較簡單的,有如下4步:
1、使表空間離線
2、使用rman的copy命令進行操作
3、退出rman進入sqlplus命令列,對錶空間資料檔案進行重新命名
4、線上表空間並置為可讀可寫狀態