Oracle數據庫由
數據文件,控制文件和聯機日志文件三種文件組成。
由于磁盤空間的變化,或者基于數據庫磁盤I/O性能的調整等,我們可能會考慮移動數據庫文件。(
注:恢復數據庫時非常有用,屬于冷備份)
查詢當前數據庫中,相關文件路徑
select * from v$datafile;
select * from v$controlfile;
select * from v$logfile;
根據以上路徑,找到當前數據庫相應文件路徑。
一.移動數據文件:
可以用ALTER DATABASE,ALTER TABLESPACE兩種方法移動數據文件。
1. ALTER DATABASE方法;
-- 用此方法,可以移動任何表空間的數據文件。
STEP 1. 停數據庫:
sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;
STEP 2.用操作系統命令移動數據文件:
將數據文件 'test.dbf' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
mv /ora/oracle/data1/test.dbf /ora/oracle/data2
STEP 3. Mount數據庫,用ALTER DATABASE命令將數據文件改名:
sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/test.dbf' TO '/ora/oracle/data2/test.dbf';
STEP 4. 打開數據庫:.
SQL> ALTER DATABASE OPEN;
SQL>SELECT NAME,STATUS FROM V$DATAFILE;
2. ALTER TABLESPACE方法:
用此方法,要求此數據文件既不屬于SYSTEM表空間,也不屬于含有ACTIVE回滾段或臨時段的表空間。覺得麻煩,省略不用了。
二. 移動控制文件:
控制文件 在 INIT.ORA文件中指定。移動控制文件相對比較簡單,下數據庫,
編輯INIT.ORA,移動控制文件,重啟動數據庫。
STEP 1. 停數據庫:
sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;
STEP 2.用操作系統命令 移動控制文件:
--將控制文件'ctl3orcl.ctl' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
mv /ora/oracle/data1/ctl3orcl.ctl /ora/oracle/data2
STEP 3. 編輯INIT.ORA文件:
INIT.ORA文件的在ORACLE_HOME/dbs目錄下,
修改參數 "control_files",其中指定移動后的控制文件:
control_files = (/ora/oracle/data1/ctrlorcl1.ctl,/ora/oracle/data1/ctrlorcl2.ctl,/ora/oracle/data2/ctrlorcl3.ctl)
STEP 4. 重啟動數據庫:
sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP;
SQL>SELECT name FROM V$CONTROLFILE;
SQL> EXIT;
三. 移動聯機日志文件:
STEP 1. 停數據庫:
sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;
STEP 2. 用操作系統命令移動聯機日志文件:
--將聯機日志文件'redolog1.log' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
mv /ora/oracle/data1/redolog1.log /ora/oracle/data2
STEP 3. Mount數據庫,用ALTER DATABASE 命令改聯機日志文件名:.
sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT ;
SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/redolog1.log' TO '/ora/oracle/data2/redolog1.log';
STEP 4.重啟動數據庫: .
SQL> ALTER DATABASE OPEN;
SQL>SELECT MEMBER FROM V$LOGFILE;