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

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

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

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了。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值