您的位置:首页 > 数据库 > Oracle

oracleDBA关于控制文件被移动的问题

2012-10-11 20:04 423 查看
最近按照书上的例子敲命令,部分是对控制文件的操作,可是谁料将控制文件移动之后,就出问题了。。。老是提醒我“文件比控制文件更新 - 旧的控制文件”,弄得我没法用数据库。

******************************************************************************************************************************************************************************************************

1.SQL> connect /as sysdba

2.SQL> shutdown abort 如果数据库是打开状态,强行关闭

3.SQL> startup

ORACLE 例程已经启动。

Total System Global Area 293601280 bytes

Fixed Size 1248624 bytes

Variable Size 121635472 bytes

Database Buffers 167772160 bytes

Redo Buffers 2945024 bytes

数据库装载完毕。

ORA-01122: 数据库文件 1 验证失败

ORA-01110: 数据文件 1:

'F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCLDW\SYSTEM01.DBF'

ORA-01207: 文件比控制文件更新 - 旧的控制文件

4.SQL> alter database backup controlfile to trace as 'e:\controlfile';

数据库已更改。

5.SQL> shutdown immediate 如果数据库是打开状态,则关闭

ORA-01109: 数据库未打开

已经卸载数据库

6.SQL> startup nomount;

ORACLE 例程已经启动。

Total System Global Area 105979576 bytes

Fixed Size 454328 bytes

Variable Size 79691776 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

7.Editplus之类的编辑器打开在第4步生成的e:\controlfile'文件;

其实在这个文件中的已经告诉你咋样恢复你的数据库了,找到STARTUP NOMOUNT字样(有好几处),然后下面可以看到类似语句,这个文件有好几个类似的生成控制文件语句,主要针对不同的环境执行不同的语句,象我的数据库没有做任何备份,也不是在归档模式,就执行这句(删除其中的注释行,删除不需要的数据文件,中间不要有任何空行; 碰到错误执行SQL> shutdown abort ;SQL> startup
nomount;
)

SQL>

CREATE CONTROLFILE REUSE DATABASE "ZFXFZB" RESETLOGS NOARCHIVELOG

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 680

LOGFILE

GROUP 1 'E:\ORACLE\ORADATA\ZFXFZB\REDO01.LOG' SIZE 100M,

GROUP 2 'E:\ORACLE\ORADATA\ZFXFZB\REDO02.LOG' SIZE 100M,

GROUP 3 'E:\ORACLE\ORADATA\ZFXFZB\REDO03.LOG' SIZE 100M

DATAFILE

'E:\ORACLE\ORADATA\ZFXFZB\SYSTEM01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\UNDOTBS01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\CWMLITE01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\DRSYS01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\EXAMPLE01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\INDX01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\ODM01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\TOOLS01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\USERS01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\XDB01.DBF',

'E:\ORACLE\ORADATA\ZFXFZB\ZFXFZB.ORA'

CHARACTER SET ZHS16GBK

;

执行上面这段语句,这个语句重建控制文件,然后你可以看着e:\controlfile'文件完成下面的恢复工作了,

8.SQL>RECOVER DATABASE (恢复指定表空间、数据文件或整个数据库) ; 即使出现错误也可以正常使用。

SQL>ALTER DATABASE OPEN resetlogs; 。

9.SQL>ALTER DATABASE OPEN; 打开数据库 。******************************************************************************************************************************************************************************************************以上内容是从网上找的,事实是,我按照上面的内容执行的时候,第7点的命令,出现了许多问号而且SQL>
shutdown abort
;SQL> startup nomount;之后,问号也没消失。于是我没有管问号,把第7点的命令执行了之后,就按照e:\controlfile中的命令执行,还是有问号,还是没有管,而执行完了之后,依旧不能用scott连接。

于是SQL>exit从数据库断开,我觉得可能是因为我改过控制文件的路径,于是执行了下列命令:

1.SQL> alter system set control_files =

2 'F:\Oracle\product\10.2.0\oradata\orcl\CONTROL01.CTL',

3 'F:\Oracle\product\10.2.0\oradata\orcl\CONTROL02.CTL',

4 'F:\Oracle\product\10.2.0\oradata\orcl\CONTROL03.CTL' SCOPE=SPFILE;


系统已更改。

2.SQL> shutdown immediate

ORA-01507: ??????

ORACLE 例程已经关闭。

3.SQL> startup pfile='F:\Oracle\product\10.2.0\db_1\database\initorcl.ora';

ORACLE 例程已经启动。

Total System Global Area 293601280 bytes

Fixed Size 1248600 bytes

Variable Size 96469672 bytes

Database Buffers 188743680 bytes

Redo Buffers 7139328 bytes

数据库装载完毕。

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

******************************************************************************************************************************************************************************************************

这里,问题又来了,于是,在网上查了哈,原因如下:

日志是连续的,而我做了不完全恢复,这样之后,数据库就无法使用未使用过的日志,无法在未使用过的日志基础上继续日志序列。

解决:

SQL> alter database open resetlogs;

数据库已更改。

更改之后,用scott登陆试试,

SQL> conn scott/tiger

已连接。

到此,一切OK了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: