2011-03-17 44 views
1

我試圖將一個oracle數據庫服務器克隆到另一個oracle數據庫服務器。 後,我完成了克隆,當我試圖通過啓動SQL Plus中 連接到數據庫,我得到了以下錯誤:編輯Oracle 10g第2版中的控制文件

ORA-01157: cannot identify/lock data file 1 - see DBWR trace file 
ORA-01110: data file 1: '/home/oracle/oradata/ccisv2/system01.dbf' 

我發現,雖然克隆原始數據庫位置的控制文件也得到了克隆。

現在在新的服務器中,我有位於不同位置的數據文件。並且在控制文件中不受影響,這是錯誤的原因。

總之我需要

/home2/oracle/oradata/ccisv2/ 

我不知道我怎樣才能改變控制文件和編輯數據文件的路徑

/home/oracle/oradata/ccisv2/ 

更改爲新的路徑上述路徑位置。

更改數據文件的位置是不可能的,因爲我在 /home/oracle/oradata/..

空間較少有人可以幫我這個...

+0

可能屬於serverfault。 – DCookie 2011-03-17 14:55:58

回答

1

你需要安裝數據庫(未打開它)並重新創建控制文件,在這個過程中重命名數據文件(見CREATE CONTROLFILE命令):

STARTUP MOUNT; 
CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS 
    MAXLOGFILES NN 
    MAXLOGMEMBERS N 
    MAXDATAFILES 254 
    MAXINSTANCES 1 
    MAXLOGHISTORY 1815 
LOGFILE 
    GROUP 1 '/home2/oracle/oradata/ccisv2/REDO01.LOG' SIZE 56M, 
    GROUP 2 '/home2/oracle/oradata/ccisv2/REDO02.LOG' SIZE 56M, 
    GROUP 3 '/home2/oracle/oradata/ccisv2/REDO03.LOG' SIZE 56M 
DATAFILE 
    '/home2/oracle/oradata/ccisv2/SYSTEM.DBF', 
    '/home2/oracle/oradata/ccisv2/USERS.DBF', 
    '/home2/oracle/oradata/ccisv2/sysaux.DBF', 
    '/home2/oracle/oradata/ccisv2/TOOLS.DBF', 
etc... 
CHARACTER SET WE8ISO8859P1; 

ALTER DATABASE OPEN RESETLOGS; 

QUIT; 

所有數據庫文件中需要在控制文件重新確定了他們新的位置。

0

最簡單的是數據文件只重命名爲新的位置:

startup mount; 
alter database rename file '/home/oracle/oradata/ccisv2/system01.dbf' to '/home2/oracle/oradata/ccisv2/system01.dbf'; 

併爲您的所有文件做到這一點。 通常我們會使用rman重複並使用file_name convert來爲我們做這件事。 重新創建控制文件也是一個選項,重命名文件更容易。

+0

不確定我同意「更容易」,但它是一種選擇。重新創建控制文件還可以調整其他參數。 – DCookie 2011-03-17 15:30:50