在ORACLE中移動資料庫檔案

2021-09-05 16:19:06 字數 4465 閱讀 7221

在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兩...