重建控制文件解决ORA-01103

Oracle September 10th, 2006

复制产品数据库时在参数文件中修改了数据库名,startup时会出现ORA-01103错误。

SQL> startup mount
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 71304572 bytes
Database Buffers 88080384 bytes
Redo Buffers 7139328 bytes
ORA-01103: database name 'ORCL' in control file is not 'TESTDB'

这表示测试数据库中的参数DB_NAME跟控制文件中的不一致。解决办法是:
1. 修改DB_NAME。
2. 重建控制文件。

先备份产品数据库的控制文件:

SQL> alter database backup controlfile to trace;

Database altered.

SQL> select c.value || '\' || d.instance_name || '_ora_' || a.spid || '.trc' trace
2 from v$process a,v$session b, v$parameter c, v$instance d
3 where a.addr = b.paddr
4 and b.audsid = userenv('sessionid')
5 and c.name = 'user_dump_dest'
6 /

TRACE
-----------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP\orcl_ora_4012.trc

orcl_ora_4012.trc文件中包含创建控制文件的SQL语句。打开它,修改相关参数:
1. REUSE DATABASE “ORCL” 改为 SET DATABASE “TESTDB”
2. NORESETLOGS 改为 RESETLOGS
3. 修改相关的路径名

SQL> STARTUP NOMOUNT
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 71304572 bytes
Database Buffers 88080384 bytes
Redo Buffers 7139328 bytes

SQL> CREATE CONTROLFILE SET DATABASE "TESTDB" RESETLOGS FORCE LOGGING ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'D:\ZEENO\ORADATA\TESTDB\REDO01.LOG' SIZE 50M,
9 GROUP 2 'D:\ZEENO\ORADATA\TESTDB\REDO02.LOG' SIZE 50M,
10 GROUP 3 'D:\ZEENO\ORADATA\TESTDB\REDO03.LOG' SIZE 50M
11 DATAFILE
12 'D:\ZEENO\ORADATA\TESTDB\SYSTEM01.DBF',
13 'D:\ZEENO\ORADATA\TESTDB\UNDOTBS01.DBF',
14 'D:\ZEENO\ORADATA\TESTDB\SYSAUX01.DBF',
15 'D:\ZEENO\ORADATA\TESTDB\USERS.DBF'
16 CHARACTER SET ZHS16GBK
17 ;

Control file created.

SQL> ALTER DATABASE OPEN RESETLOGS;

Database altered.

One Response to “重建控制文件解决ORA-01103”

  1. simplet Says:

    我按您给出的方法做了,可是为什么会出现这样的错误呢?我也是在standby1的数据库下创建controlfile,主数据库为demo的。
    ERROR at line 1:
    ORA-01503: CREATE CONTROLFILE failed
    ORA-01161: database name DEMO in file header does not match given name of
    STANDBY1
    ORA-01110: data file 1: ‘F:\STANDBY1\SYSTEM01.DBF’

Leave a Reply