在ORACLE中移動數據庫文件
在ORACLE中移動數據庫文件在ORACLE中移動數據庫文件
--ORACLE數據庫由數據文件,控制文件和聯機日志文件三種文件組成。
--由于磁盤空間的變化,或者基于數據庫磁盤I/O性能的調整等,
--我們可能會考慮移動數據庫文件。
--下面以LUNIX平臺為例,分別討論三種數據庫文件的移動方法。
一.移動數據文件:
-- 可以用ALTER DATABASE,ALTER TABLESPACE兩種方法移動數據文件。
1. ALTER DATABASE方法;
-- 用此方法,可以移動任何表空間的數據文件。
STEP 1. 下數據庫: $ sqlplus /nolog SQL> CONNECT INTERNAL; SQL> SHUTDOWN; SQL> EXIT; STEP 2.用操作系統命令移動數據文件: -- 將數據文件 'test.ora' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下: $ mv /ora/oracle/data1/test.ora /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.ora' TO '/ora/oracle/data2/test.ora'; STEP 4. 打開數據庫:. SQL> ALTER DATABASE OPEN; SQL>SELECT NAME,STATUS FROM V$DATAFILE; |
2. ALTER TABLESPACE方法:
-- 用此方法,要求此數據文件既不屬于SYSTEM表空間,也不屬于含有ACTIVE回滾段或臨時段的表空間。
STEP1. 將此數據文件所在的表空間OFFLINE: |
二. 移動控制文件:
-- 控制文件 在 INIT.ORA文件中指定。移動控制文件相對比較簡單,下數據庫,
-- 編輯INIT.ORA,移動控制文件,重啟動數據庫。
STEP 1. 下數據庫: STEP 2.用操作系統命令 移動控制文件: STEP 3. 編輯INIT.ORA文件: STEP 4. 重啟動數據庫: |
按Oracle原理,啟動過程分為三個步驟nomount/mount/open.
PHASE0:nomount前,即數據庫完全關閉了.
此時可以將數據庫control files/data files/redo log files在OS下用mv命令任意移動(實際上,只要未被open的文件都是可以mv的),然后根據各種file location在Oracle中的存放位置,采用不同的方式來告訴Oracle:"偶已將原文件移動到另一個地方了".
其中初始參數文件中的control_files參數指定了具體的control file的location.所以移動了control file可在參數文件被open前直接改參數值Oracle就明白了.(PFILE/SPFILE的具體使用此處不多累贅).
PHASE1:nomount階段. 打開了初始參數文件和backupground_dump_dest下的 alert_sid.log和background processes 的trace files.
PHASE2:mount階段是打開了control file.
control file中存放的東東如下:
Database name and identifier Time stamp of database creation Tablespace names Names and locations of data files and redo log files Current redo log file sequence number Checkpoint information Begin and end of undo segments Redo log archive information Backup information |
所以偶們在PHASE0中所做操作就得在PHASE3真正open這些文件之前,告訴Oracle(因為信息記錄在control file中,所以又得在PHASE2中,control file被open后做),偶們已改了file location.
于是可用alter database的data file clause或log file clause的rename 命令來更新control file,于是Oracle會在PHASE3時,到新file location去找相應的文件.
PHASE3:open階段打開所有非offline的data files和redo log files.
因為文件已打開了.所以此時,只能對已經offline或還可以offline的文件作rename操作.原理也是通過更新control file中的內容來告訴Oracle:File location has been changed.
posted on 2013-07-31 10:20 順其自然EVO 閱讀(180) 評論(0) 編輯 收藏 所屬分類: 數據庫