在Oracle 10g第2版中编辑控制文件

时间:2011-03-17 13:54:50

标签: sql oracle oracle10g

我尝试将oracle数据库服务器克隆到另一个oracle数据库服务器。 完成克隆后,当我尝试通过启动SQL Plus连接到数据库时 我收到了以下错误:

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

我发现克隆原始数据库位置的控制文件时也克隆了。

现在在新服务器中,我将数据文件放在不同的位置。,这在控制文件中不受影响,这就是错误的原因。

简而言之,我需要改变上述路径

/home/oracle/oradata/ccisv2/

到新路径

/home2/oracle/oradata/ccisv2/

我不知道如何更改控制文件并编辑数据文件位置的路径。

由于我的空间较小,因此无法更改数据文件的位置 /home/oracle/oradata/..

有人可以帮我这个......

2 个答案:

答案 0 :(得分: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;

需要在控制文件中使用新位置重新标识所有数据库文件。

答案 1 :(得分:0)

最简单的方法是将数据文件重命名为新位置:

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

并为您的所有文件执行此操作。 通常我们会使用rman复制并使用file_name convert为我们执行此操作。 重新创建控制文件也是一个选项,重命名文件更容易。