今天突然发现机器上的oracle不行了,plsql连接不了,报ORA-12528: TNS: 监听程序所有适用的例程都不允许建立的错误,查资料后在listener.ora中加上
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
结果 normal连接 报ora-01033:oracle initialization or shutdown in progress 的错误,sysdba可以登录,但去看table什么的出现“ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询”,崩溃,继续去问度娘。
照着网上的敲命令:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 2 16:03:01 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
请输入用户名: sys as sysdba
输入口令:
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> shutdown;
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 532676608 bytes
Fixed Size 1249968 bytes
Variable Size 209718608 bytes
Database Buffers 314572800 bytes
Redo Buffers 7135232 bytes
ORA-00214: ???? ''D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL'' ?? 4967
??? ''D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL'' ?? 4962 ???
苦逼的中文错误信息还不显示,继续百度错误信息:ORA-01507: 未安装数据库 ORA-00214: 控制文件 '' 版本 与文件 '' 版本 不一致
终于有眉目了,也有兄弟说服务器突然断电结果oracle挂了的现象,到这我才知道原来tm是我前两天脚犯贱,把电脑电源给踢掉了,艹!!
该错误一般出现的原因:数据库服务器掉电等导致数据库异常中断。原因很简单:根据oracle db运行原理,数据库在运行期间,由于检查点发生等原因会不断的更新控制文件,同时数据库在关闭和重启过程中都会更新控制文件的内容,但是数据库服务器突 然的掉电,会导致当前的db信息无法适时更新到控制文件中,再次启动数据库后,当oracle检测控制文件和其它文件信息是否一致时,就出现了这个错误。这是网上资料
该错误一般出现的原因:数据库服务器掉电等导致数据库异常中断。原因很简单:根据oracle db运行原理,数据库在运行期间,由于检查点发生等原因会不断的更新控制文件,同时数据库在关闭和重启过程中都会更新控制文件的内容,但是数据库服务器突 然的掉电,会导致当前的db信息无法适时更新到控制文件中,再次启动数据库后,当oracle检测控制文件和其它文件信息是否一致时,就出现了这个错误。原文地址:http://blog.csdn.net/whhitgen/article/details/7688475
这里的说的太玄乎,找到个简单的 直接用CONTROL03.CTL 把CONTROL01.CTL CONTROL02.CTL 给替换了,不知道有啥影响。
再敲命令
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 532676608 bytes
Fixed Size 1249968 bytes
Variable Size 209718608 bytes
Database Buffers 314572800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
ORA-00322: 日志 1 (用于线程 1) 不是当前副本
ORA-00312: 联机日志 1 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'
痛哭流涕啊,数据库终于装载上了。。。
接着在看下面的错误 继续百度http://blog.csdn.net/csucxcc/article/details/3141452
照着前辈的方法继续敲命令
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 532676608 bytes
Fixed Size 1249968 bytes
Variable Size 209718608 bytes
Database Buffers 314572800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> alter database clear logfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.L
OG';
数据库已更改。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-00322: 日志 3 (用于线程 1) 不是当前副本
ORA-00312: 联机日志 3 线程 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'
SQL> alter database clear logfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.L
OG';
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select status from v$instance;
STATUS
------------
OPEN
苍天啊,做菜鸟真要命啊,终于恢复正常了,到最后发现就是控制文件版本不一致的问题,前面的工作都是白瞎,但不知道我那直接拷贝替换控制文件来统一版本的方法会不会有别的问题