在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:
$ sqlplus /nolog
sql> connect internal;
sql> alter tablespace test offline;
sql> exit;
step2. 用作業系統命令移動資料檔案:
將資料檔案 'test.ora' 從/ora/oracle/
data1目錄移動到/ora/oracle/data2目錄下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2
step3. 用alter tablespace命令改資料檔名:
$ sqlplus /nolog
sql> connect internal;
sql> alter tablespace test rename datafile '/ora/oracle/data1/test.ora' to '/ora/oracle/data2/test.ora';
step4. 將此資料檔案所在的表空間online:
sql> alter tablespace test online;
sql> select name,status from v$datafile;
二. 移動控制檔案:
-- 控制檔案 在 init.ora檔案中指定。移動控制檔案相對比較簡單,下資料庫,
-- 編輯init.ora,移動控制檔案,重啟動資料庫。
step 1. 下資料庫:
$ sqlplus /nolog
sql> connect internal;
sql> shutdown;
sql> exit;
step 2.用作業系統命令 移動控制檔案:
--將控制檔案'ctl3orcl.ora' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
$ mv /ora/oracle/data1/ctrlorcl3.ora /ora/oracle/data2
step 3. 編輯init.ora檔案:
init.ora檔案的在$oracle_home/dbs目錄下,
修改引數 "control_files",其中指定移動後的控制檔案:
control_files = (/ora/oracle/data1/ctrlorcl1.ora,/ora/oracle/data1/ctrlorcl2.ora,/ora/oracle/data2/ctrlorcl3.ora)
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.ora' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
$ mv /ora/oracle/data1/redolog1.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/redolog1.ora' to '/ora/oracle/data2/redolog1.ora';
step 4.重啟動資料庫: .
sql> alter database open;
sql>select member from v$logfile;
按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.
在ORACLE中移動資料庫檔案
oracle資料庫由資料檔案,控制檔案和聯機日誌檔案三種檔案組成。由於磁碟空間的變化,或者基於資料庫磁碟i o效能的調整等,資料庫管理員可能會考慮移動資料庫檔案。下面以unix平台為例,分別討論三種資料庫檔案的移動方法。一.移動資料檔案 可以用alter database,alter tablesp...
Oracle移動資料庫檔案
一。設定要移動的資料庫 開始 執行 cmd命令 set oracle sid experience experience你要移動檔案所屬的資料庫的sid 二。進入sqlplus sqlplus nolog conn sys sys as sysdba 已連線。select name from v d...
資料庫檔案移動
oracle資料庫由資料檔案,控制檔案和聯機日誌檔案三種檔案組成。由於磁碟空間的變化,或者基於資料庫磁碟i o效能的調整等,我們可能會考慮移動資料庫檔案。下面以unix平台為例,分別討論三種資料庫檔案的移動方法。一.移動資料檔案 可以用alter database,alter tablespace兩...