1. 程式人生 > >Oracle 11g 數據庫遷移

Oracle 11g 數據庫遷移

oracel

由於服務器更換,或者硬盤損壞等問題,在有些場景下,我們需要對數據庫進行遷移。

Oracle 數據庫有多種備份方式,如果可以停機,建議最好使用冷備的方式,直接遷移數據文件,這樣效率會比較高。

由於兩臺主機都是Windows server,為了方便直接使用復制文件的方式,由於特殊原因,遷移前的數據目錄和遷移後的數據目錄是不一致的。

SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 1071333376 bytes
Fixed Size                  1334380 bytes
Variable Size             301990804 bytes
Database Buffers          754974720 bytes
Redo Buffers               13033472 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 1 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 1: ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF‘

查看文件路徑:

SQL> select name from v$controlfile;
NAME
---------------------------------------------------------
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL01.CTL
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL02.CTL
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL03.CTL
SQL> select name from v$datafile;
NAME
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF
SQL> select name from v$tempfile;
NAME
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF
SQL> select member from v$logfile;
MEMBER
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG

除了控制文件的路徑是正常的,其他的文件路徑都需要修改,將原來的D盤改為F盤:

SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG‘;
數據庫已更改。
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG‘;
數據庫已更改。


確認修改成功後,啟動數據庫:

SQL> alter database open;
數據庫已更改。


重啟數據庫:

SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 1071333376 bytes
Fixed Size                  1334380 bytes
Variable Size             301990804 bytes
Database Buffers          754974720 bytes
Redo Buffers               13033472 bytes
數據庫裝載完畢。
數據庫已經打開。



本文出自 “Trying” 博客,請務必保留此出處http://tryingstuff.blog.51cto.com/4603492/1952754

Oracle 11g 數據庫遷移