ora-01190和ora-01110的解决方法

SQLPLUS>ALTER DATABASE DATAFILE 2 ONLINE;

ALTER DATABASE DATAFILE 2 ONLINE

*

ERROR 位于第 1 行:

ORA-01190: 控制文件或数据文件2来自于最后一个 RESETLOGS 之前

ORA-01110: 数据文件 2: ‘E:\ORACLE9I\ORA9I\UNDOTBS01.DBF‘

接下来由于V$DATAFILE中的CHECKPOINT_CHANGE#仍然大于V$RECOVER_FILE中的CHANGE#,决定用ADJUST_SCN来调整SCN. 首先需要设置_allow_resetlogs_corruption参数,否则不能成功(实验了)

SQLPLUS>ALTER SYSTEM SET "_allow_resetlogs_corruption"=TRUE SCOPE=SPFILE;
系统已更改。
SQLPLUS>SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQLPLUS>STARTUP MOUNT;

ORACLE 例程已经启动。

Total System Global Area 135339940 bytes
Fixed Size 454564 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。

SQLPLUS>ALTER DATABASE OPEN;

数据库已更改。

SQLPLUS>ALTER SESSION SET EVENTS ‘IMMEDIATE TRACE NAME ADJUST_SCN LEVEL 1‘;

会话已更改。

SQLPLUS>SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQLPLUS>STARTUP MOUNT;

ORACLE 例程已经启动。

Total System Global Area 135339940 bytes
Fixed Size 454564 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。

SQLPLUS>SELECT TS#,FILE#,NAME,STATUS,CHECKPOINT_CHANGE# FROM V$DATAFILE;

TS# FILE# NAME STATUS CHECKPOINT_CHANGE#

---- ----- ---------------------------------------- ------- ------------------

0 1 E:\ORACLE9I\ORA9I\SYSTEM01.DBF SYSTEM 1041478416

1 2 E:\ORACLE9I\ORA9I\UNDOTBS01.DBF OFFLINE 0

3 3 E:\ORACLE9I\ORA9I\DRSYS01.DBF OFFLINE 0

4 4 E:\ORACLE9I\ORA9I\INDX01.DBF OFFLINE 0

5 5 E:\ORACLE9I\ORA9I\TOOLS01.DBF OFFLINE 0

6 6 E:\ORACLE9I\ORA9I\USERS01.DBF OFFLINE 0

7 7 E:\ORACLE9I\ORA9I\XDB01.DBF OFFLINE 0

8 8 E:\ORACLE9I\ORA9I\OEM_REPOSITORY.DBF OFFLINE 0

13 9 E:\ORACLE9I\ORADATA\GAXZTEMP.DB OFFLINE 0

14 10 E:\ORACLE9I\ORADATA\GAXZUSR.DB OFFLINE 0

15 11 E:\ORACLE9I\ORADATA\GAXZRBS.DB OFFLINE 0

TS# FILE# NAME STATUS CHECKPOINT_CHANGE#

---- ----- ---------------------------------------- ------- ------------------

16 12 E:\ORACLE9I\ORADATA\GAXZWEB.DB OFFLINE 0

已选择12行。

SQLPLUS>SELECT * FROM V$RECOVER_FILE;

FILE# ONLINE ONLINE_ ERROR CHANGE# TIME

----- ------- ------- -------------------- --------------- ----------

2 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

3 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

4 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

5 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

6 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

7 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

8 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

9 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

10 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

11 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

12 OFFLINE OFFLINE WRONG FILE CREATE 37667 18-12月-04

已选择11行。

SQLPLUS>RECOVER UNTIL CANCEL;

完成介质恢复。

上面这一步很重要,虽然不做这个操作也能打开数据库,但是我们是要用RESETLOGS来打开数据库,否则仍然将其它数据文件联机的时候

仍然会报ORA-01189.

然后将数据文件状态联机。

SQLPLUS>ALTER DATABASE DATAFILE 2,3,4,5,6,7,8,9,10,11,12 ONLINE;

数据库已更改。

打开数据库。

SQLPLUS>ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

查看V$DATAFILE,文件状态已经是ONLINE了。

TS# FILE# NAME STATUS CHECKPOINT_CHANGE#

--- ----- ---------------------------------------- ------- ------------------

0 1 E:\ORACLE9I\ORA9I\SYSTEM01.DBF SYSTEM 1041478418

1 2 E:\ORACLE9I\ORA9I\UNDOTBS01.DBF ONLINE 1041478418

3 3 E:\ORACLE9I\ORA9I\DRSYS01.DBF ONLINE 1041478418

4 4 E:\ORACLE9I\ORA9I\INDX01.DBF ONLINE 1041478418

5 5 E:\ORACLE9I\ORA9I\TOOLS01.DBF ONLINE 1041478418

6 6 E:\ORACLE9I\ORA9I\USERS01.DBF ONLINE 1041478418

7 7 E:\ORACLE9I\ORA9I\XDB01.DBF ONLINE 1041478418

8 8 E:\ORACLE9I\ORA9I\OEM_REPOSITORY.DBF ONLINE 1041478418

13 9 E:\ORACLE9I\ORADATA\GAXZTEMP.DB ONLINE 1041478418

14 10 E:\ORACLE9I\ORADATA\GAXZUSR.DB ONLINE 1041478418

15 11 E:\ORACLE9I\ORADATA\GAXZRBS.DB ONLINE 1041478418
TS# FILE# NAME STATUS CHECKPOINT_CHANGE#

--- ----- ---------------------------------------- ------- ------------------

16 12 E:\ORACLE9I\ORADATA\GAXZWEB.DB ONLINE 1041478418

至此,数据库已经恢复了,接下来的工作就简单了: 将临时表空间文件找回: SQLPLUS>ALTER TABLESPACE TEMP ADD TEMPFILE ‘E:\ORACLE9i\ORA9I\TEMP01.DBF‘ REUSE;

表空间已更改。

将UNDO管理方式改成自动

SQLPLUS>ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO SCOPE=SPFILE;

系统已更改。

SQLPLUS>ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS SCOPE=SPFILE;

系统已更改。

用EXP导出数据,重建数据库。

总结:刚解决完的时候,有点不敢相信竟然解决了。因为这种由SYSTEM表空间造成的ORA-01189这个错误,我一直以为只能通过DUL来解决了。 在网上也同样找不到真正解决的资料,一般都是解决ORA-01190的。这两个问题的区别在于,创建控制文件的时候如果不产生01189(用resetlogs选项)那么创建时不用将其它的数据文件去掉,而且打开数据库的时候只要设置_allow_resetlogs_corruption就可以了,另外也不用adjust_scn来修改change#。于是在自己的机器上又做了几次实验:

1关掉数据库;

2备份SYSTEM表空间;

3打开数据库;

4切换日志;

5关数据库;

6替换旧的SYSTEM表空间。

模拟出了同样的问题。然后用同样的方法解决了。

时间: 2024-08-02 16:54:59

ora-01190和ora-01110的解决方法的相关文章

安装ORACLE_RAC遇到的问题与解决方法

while running: /u01/app/oracle/product/10.2.0/db_1/root.sh Checking to see if Oracle CRS stack is already configured/etc/oracle does not exist. Creating it now.Setting the permissions on OCR backup directorySetting up NS directoriesPROT-1:Failedtoini

ORA-01034: 、ORA-01078: 和 LRM-00109 的解决方法

环境:Linux 5.4 Oracle 11.2.0.3 在Linux上连接Oracle时遇到报错: SQL> show parameter sgaORA-01034: ORACLE not availableProcess ID: 0Session ID: 0 Serial number: 0 SQL> startupORA-01078: failure in processing system parametersLRM-00109: could not open parameter fi

cognos安装过程各种问题跟解决方法

上篇博文cognos安装配置完整教程说了cognos server在window系统下的安装过程 由于篇幅,没有把安装中可能遇到的坑具体说明,这篇博文补上 1.测试连接资源库报错 [ERROR]Content Manager failed to start because it could not load driver "oralce.jdbc.OracleDriver",具体报错如下图 分析及解决方法:很明显,是缺少连接oracle的jdbc驱动包,只要把oracle官方的驱动包(

windows平台下的oracle ORA-01031的解决方法

今天下午遇到一个很怪异的问题,在windows平台下sqlplus  / as sysdba登陆数据库,提示权限不足, 当时就纳闷了,sys用户登陆数据库还能权限不足,问题出现了,就开始寻找解决方法呗 首先查看$ORACLE_HOME/network/admin/sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES项的配置信息, 网上的大多数帖子一致结论为: 在windows平台上,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者AL

ORA-27100 shared memory realm already exists错误解决方法

环境:win 2003   + oracle 10g win 2003服务器物理内存4G oracle10g SGA             1504M 事故背景: 调整SGA大小,因为OS的内存只有4G,建议SGA的大小不要超过60%,我调整为2G SQL> alter systemset sga_max_size=2000m scope=spfile; 重启数据库报错ORA-27100 shared memory realm already exists 分析原因:对于32位机器ORACLE

windows下sqlplus / as sysdba报ora-12560的解决方法

环境:win7_64位.数据库版本ORACLE11G_R2 在CMD窗口,使用下面三个命令可正常连接数据库:C:\Users\Administrator> sqplus /nolog C:\Users\Administrator> sqlplus  sys/[email protected] as sysdba;SQL> conn scott/[email protected]; 但是使用下面的命令连接数据库就报ora-12560错误:C:\Users\Administrator>

连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!

1.出现如下错误:ORA-12541:TNS:no listener,如下图所示: 错误原因是我们没有开启Listener监听器服务,解决方法是在服务中开启这个服务,如下图所示. 2.出现如下错误:ORA-12514:TNS:监听程序当前无法识别链接描述符中请求的服务.如下图所示: 解决方法是需要打开服务OracleServiceORCL,如下图所示: 3.出现错误:ORA-01017:invalid username/password;logon denied. 解决方法:原来配置数据库连接的

RMAN-06026报错解决方法

环境:oracle 11g rac asm for linux 6.7 将系统备份,准备恢复至备机上,将pfile备份拷贝至备机 1.删除备机的现有库 sql> shutdown immediate sql> startup mount restrict sql> drop database; 2.使用spfile创建pfile sql>create pfile from spfile='/home/oracle/pfileogg.ora'; 3.修改pfile,并使用pfile启

win7 64位 ,安装配置cx_Oracle,遇到的一些问题及解决方法

首先安装配置时,必须把握一个点,就是版本一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本,然后安装配置就容易了! 因为我的系统是win7 64位,python版本也是64位的,所以下载安装的Oracle Client 也是64位 10g的,相应的cx_Oracle 也要是64位10g的,当然也要注意python的版    本python2.X还是python3.X,也要下相应的版本的 1.oracle client 下载地址:http://www.ora

ORA-12560: TNS: 协议适配器错误的解决方法

造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务. 2.database instance没有起起来.windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID. 3.注册表问题.regedit,然后进入HK