oracle中移動控制檔案、資料檔案、日誌檔案

why566發表於2009-04-16

windows環境中用:host copy 或 host move
unix或linux環境中

一、移動控制檔案

第一種:
$ sqlplus '/as sysdba'
SQL> create pfile from spfile
SQL> shutdown immediate
SQL>cp /opt/oracle/oradata/control* /opt/oracle/oratest/
修改$ORACLE_HOME/dbs/init$ORACLE_SID.ora 檔案中的控制檔案的位置。
SQL> startup pfile='/opt/oracle/product/9.2.0.4/dbs/init$ORACLE_SID.ora'
SQL> create spfile from pfile;

第二種:
SQL> select name, value from v$spparameter where name = 'control_files';
SQL> show parameter control_files
SQL> alter system set control_files = '/u02/oradata/control01.ctl','/u03/oradata/control02.ctl','/u04/oradata/control03.ctl' scope = spfile;
SQL> shutdown immediate
SQL> ! mv /u01/app/oracle/oradata/control01.ctl /u02/oradata
SQL> ! mv /u01/app/oracle/oradata/control02.ctl /u03/oradata
SQL> ! mv /u01/app/oracle/oradata/control03.ctl /u04/oradata
SQL> startup
SQL> select name, value from v$spparameter where name = 'control_files';
SQL> show parameter control_files

二、移動資料檔案

ALTER TABLESPACE方法(聯機狀態):
用此方法,除了SYSTEM、SYSAUX、聯機撤銷表空間以及臨時表空間以外。
$ sqlplus '/as sysdba'
# 把需要移動的資料檔案對應的表空間offline
SQL> alter tablespace ipas_acct_data offline
# 把資料檔案cp到想要放的目錄下。
SQL> !mv /opt/oracle/wacosdata/ipas_acct_data001.dbf /opt/oracle/nms/oradata/ipas_acct_data001.dbf
# 修改表空間中資料庫檔案的位置。
SQL> alter tablespace ipas_acct_data rename datafile '/opt/oracle/wacosdata/ipas_acct_data001.dbf' to '/opt/oracle/nms/oradata/ipas_acct_data001.dbf'
# 把表空間online。
SQL> alter tablespace ipas_acct_data online
# 檢視修改結果。
SQL> select file_name from dba_data_files where tablespace_name = 'IPAS_ACCT_DATA';

ALTER DATABASE方法(離線狀態):
用此方法,可以移動任何表空間的資料檔案。
$ sqlplus '/as sysdba'
SQL> shutdown immediate
SQL> !mv /opt/oracle/oradata/wacos002.dbf /ora10g/oradata/wacos002.dbf
SQL> startup mount
SQL> alter database rename file '/opt/oracle/oradata/wacos002.dbf' to '/ora10g/oradata/wacos002.dbf';
SQL> alter database open;
SQL> SELECT file_name from dba_data_files where tablespace_name = 'WACOS';

三、移動重做日誌檔案

$ sqlplus '/as sysdba'
SQL> select group#, member from v$logfile order by group#, member;
# 關閉資料庫。
SQL> shutdown immediate
# cp日誌檔案到目標位置。
SQL> !cp /opt/oracle/oradata/redo* /opt/oracle/oratest/
#讓資料庫以mount模式啟動。
SQL>startup mount;
# 修改資料庫中日誌檔案的位置。
SQL> alter database rename file '/opt/oracle/oradata/redo01.log' to '/opt/oracle/oratest/redo01.log'
SQL> alter database rename file '/opt/oracle/oradata/redo02.log' to '/opt/oracle/oratest/redo02.log'
SQL> alter database rename file '/opt/oracle/oradata/redo03.log' to '/opt/oracle/oratest/redo03.log'
# 修改資料庫的狀態。
SQL> alter database open;
# 檢視修改結果。
SQL> select group#, member from v$logfile order by group#, member;


alter database add logfile member 'D:\oracle\product\10.2.0\oradata\redo01_2.log' to group 1,
 'D:\oracle\product\10.2.0\oradata\redo02_2.log' to group 2,
 'D:\oracle\product\10.2.0\oradata\redo03_2.log' to group 3;

select group#, status from v$log;
alter system switch logfile;
alter database drop logfile member 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG';
alter database drop logfile member 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG';
alter database drop logfile member 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG';

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

相關文章