1、 客户Oracle服务器进入PL/SQL Developer时报ora-01033:oracle initializationg or shutdown in progress 错误提示,应用系统无法连接Oracle服务。
解决方案:
a、 sqlplus "/as sysdba";
b、 shutdown
c、 startup
当进行到b步骤时又出现了新的问题:
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'
——————解决方案:
首先,执行下面的语句看看group1是不是current日志组
select group#,sequence#,archived,status from v$log;
如果被删除的日志不是当前日志组的成员,比较简单
alter database clear logfile group 1;
如果你的库是非归档的,或许要用下面的语句
alter database clear unarchived logfile group 1;
如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用
如果日志组中有活动的事务,那么可能需要利用备份来恢复了,否则只有通过隐含参数强制打开库(不推荐,如果是生产库,最好请求技术支持)
此处引发一个新的问题:
SQL> alter database clear logfile group 1;
*
ERROR 位于第 1 行:
ORA-01624: 线程1的紧急恢复需要日志1
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\REDO01.LOG'
——————再次解决:
1、准备
startup mount;
create pfile='d:\init.ora' from spfile; //路径随选
shutdown immediate;
编辑init.ora,加入该参数_allow_resetlogs_corruption=true //allow_resetlogs_corruption=true 这个参数 让ORACLE不验证数据一致性的情况下强行打开数据库
startup mount pfile='d:\init.ora';
2、重新启动数据库,利用until cancel恢复
SQL>recover database until cancel;
Cancel
如果出错,不再理会,发出
SQL>alter database open resetlogs; //
3、数据库被打开后,马上执行一个full export
4、shutdown数据库,去掉_all_resetlogs_corrupt参数
5、重建库
^_^ ^_^ 2010年1月6日按照上述方法成功解决了问题。
而导致我犯ora-01033的原因为自定义优化工具Lj.bat将一些日志重做文件给删除了!!!
当遇到Oracle出现下面提示时:
ora-01034:oracle not available
ora-27101:shared mermory realm does not exist
看网上说是: ORACLE_HOME或者ORACLE_SID设置不正确。
在以前的版本中,如果ORACLE_SID不正确,一般都只提示ORA-01034。Oracle 8.1.7 给出一个额外的信息:ORA-27101。
参考解决方案:
如果是Windows,一般都是因为系统中有多个实例造成的。
可以在命令行下 C:\>set ORACLE_SID=DEMO
把这里的DEMO换为你相应的实例名。
如果还不行的话,检查注册表中的ORACLE_HOME。
此外,在Windows环境下有的时候连接不上远程的数据库,会报告如此的错误。
解决办法是把sqlnet.ora文件中的
SQLNET.AUTHENTICATION_SERVICES = (NTS) NTS换为NONE.
————————————非常遗憾, 还是没有解决 ... ...
————————ORA-03113: 通信通道的文件结束
这个多半是由于网络问题引起的 ,本身不是oracle的错误,检查一下网络状况和系统核心参数的设定
---------------------------------------------------------------
“通信文道结束”是个含义甚宽泛的错误,它仅仅是oracle的客户端前台进程((svrmgrl, sqlplus,
RMAN, Oracle Forms etc.) 与其后台进程丢失了连接。
错误的原因很多。在oracle开发者提到这个词的时候,总以为是网络故障,但是据报告,任何造成后台进
程crash的事情都是出现这个错误的原因。
该信息或许和其他的错误信息一同出现。如果被损坏的后台进程是oracle的关键进程(PMON, SMON, DBWR
etc.),你会得到“oracle不可用”的错误信息。查看你的日志或者查看任何跟踪文件可以帮助你对问题
进行诊断。
下面是一些造成该错误的原因总结:
(1)Invalid value for processes parameter in init.ora when starting database
当然,要解决它,就是把那些参数值调整为有效范围内的值。
(2)setuid bit needs setting on the oracle executable(Unix only).
The oracle executable in the $ORACLE_HOME/bin directory should have the permissions:
-rwsr-sr-x 1 oracle dba
(3)shared_pool_size too small.
你可以把它设置在200M以上。
(4)timed_statistics=true.
你可以把它设置为false。
(5)An insert into a table which grew into an additional extent allocated in a datafile
which was over 2Gb in size.
这是在你的操作系统文件不允许超过2G的时候才会发生的,而且如果发生了错误,数据库就完蛋了。
(6)Create table as select .... where there was an invalid procedure or function called
from a trigger defined on the table we were selecting from.
那就是把你所有的过程、函数和包全部编译一遍。
(7)Make use of Oracle Support / Metalink
寻求oracle技术支持吧!
^_^ ^_^ 总之被这个问题困扰了好久, 最终还是重装了数据库才解决的。 记录一下过程以备以后用到时快速定位。
补充:
卸载Oracle :
1、停止所有Oracle服务,点Universal Installer卸载
2、删除注册表中的所有关于Oracle项
(1)在HKEY_LOCAL_MACHINE\SOFTWARE下,删除Oracle目录
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services下,删除所有Oracle项
(3)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services下,删除所有Oracle项
(4)在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,删除所有Oracle项
(5)在HKEY_CLASSES_ROOT下,删除所有Oracle项
3、删除硬盘上所有Oracle文件
(1)Oracle安装文件
(2)系统目录下,在Program files文件夹中的Oracle文件
4、重启,完成卸载。
附: 我装的Oracle数据库也包含两个,db_1 和db_2?
只有一个DB_1,db_1主要是数据库系统性质的文件 比如密码文件 SPFILE参数文件等等。出现db_1 和db_2通常是不通过规范的方法将oracle卸载掉,实际没有卸载完全,而继续安装oracle导致的。应该是先通过uninstall程序进行卸载再通过删除注册表中oracle部分,然后从硬盘上删除相关文件
解决方案:
a、 sqlplus "/as sysdba";
b、 shutdown
c、 startup
当进行到b步骤时又出现了新的问题:
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'
——————解决方案:
首先,执行下面的语句看看group1是不是current日志组
select group#,sequence#,archived,status from v$log;
如果被删除的日志不是当前日志组的成员,比较简单
alter database clear logfile group 1;
如果你的库是非归档的,或许要用下面的语句
alter database clear unarchived logfile group 1;
如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用
如果日志组中有活动的事务,那么可能需要利用备份来恢复了,否则只有通过隐含参数强制打开库(不推荐,如果是生产库,最好请求技术支持)
此处引发一个新的问题:
SQL> alter database clear logfile group 1;
*
ERROR 位于第 1 行:
ORA-01624: 线程1的紧急恢复需要日志1
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\REDO01.LOG'
——————再次解决:
1、准备
startup mount;
create pfile='d:\init.ora' from spfile; //路径随选
shutdown immediate;
编辑init.ora,加入该参数_allow_resetlogs_corruption=true //allow_resetlogs_corruption=true 这个参数 让ORACLE不验证数据一致性的情况下强行打开数据库
startup mount pfile='d:\init.ora';
2、重新启动数据库,利用until cancel恢复
SQL>recover database until cancel;
Cancel
如果出错,不再理会,发出
SQL>alter database open resetlogs; //
3、数据库被打开后,马上执行一个full export
4、shutdown数据库,去掉_all_resetlogs_corrupt参数
5、重建库
^_^ ^_^ 2010年1月6日按照上述方法成功解决了问题。
而导致我犯ora-01033的原因为自定义优化工具Lj.bat将一些日志重做文件给删除了!!!
当遇到Oracle出现下面提示时:
ora-01034:oracle not available
ora-27101:shared mermory realm does not exist
看网上说是: ORACLE_HOME或者ORACLE_SID设置不正确。
在以前的版本中,如果ORACLE_SID不正确,一般都只提示ORA-01034。Oracle 8.1.7 给出一个额外的信息:ORA-27101。
参考解决方案:
如果是Windows,一般都是因为系统中有多个实例造成的。
可以在命令行下 C:\>set ORACLE_SID=DEMO
把这里的DEMO换为你相应的实例名。
如果还不行的话,检查注册表中的ORACLE_HOME。
此外,在Windows环境下有的时候连接不上远程的数据库,会报告如此的错误。
解决办法是把sqlnet.ora文件中的
SQLNET.AUTHENTICATION_SERVICES = (NTS) NTS换为NONE.
————————————非常遗憾, 还是没有解决 ... ...
————————ORA-03113: 通信通道的文件结束
这个多半是由于网络问题引起的 ,本身不是oracle的错误,检查一下网络状况和系统核心参数的设定
---------------------------------------------------------------
“通信文道结束”是个含义甚宽泛的错误,它仅仅是oracle的客户端前台进程((svrmgrl, sqlplus,
RMAN, Oracle Forms etc.) 与其后台进程丢失了连接。
错误的原因很多。在oracle开发者提到这个词的时候,总以为是网络故障,但是据报告,任何造成后台进
程crash的事情都是出现这个错误的原因。
该信息或许和其他的错误信息一同出现。如果被损坏的后台进程是oracle的关键进程(PMON, SMON, DBWR
etc.),你会得到“oracle不可用”的错误信息。查看你的日志或者查看任何跟踪文件可以帮助你对问题
进行诊断。
下面是一些造成该错误的原因总结:
(1)Invalid value for processes parameter in init.ora when starting database
当然,要解决它,就是把那些参数值调整为有效范围内的值。
(2)setuid bit needs setting on the oracle executable(Unix only).
The oracle executable in the $ORACLE_HOME/bin directory should have the permissions:
-rwsr-sr-x 1 oracle dba
(3)shared_pool_size too small.
你可以把它设置在200M以上。
(4)timed_statistics=true.
你可以把它设置为false。
(5)An insert into a table which grew into an additional extent allocated in a datafile
which was over 2Gb in size.
这是在你的操作系统文件不允许超过2G的时候才会发生的,而且如果发生了错误,数据库就完蛋了。
(6)Create table as select .... where there was an invalid procedure or function called
from a trigger defined on the table we were selecting from.
那就是把你所有的过程、函数和包全部编译一遍。
(7)Make use of Oracle Support / Metalink
寻求oracle技术支持吧!
^_^ ^_^ 总之被这个问题困扰了好久, 最终还是重装了数据库才解决的。 记录一下过程以备以后用到时快速定位。
补充:
卸载Oracle :
1、停止所有Oracle服务,点Universal Installer卸载
2、删除注册表中的所有关于Oracle项
(1)在HKEY_LOCAL_MACHINE\SOFTWARE下,删除Oracle目录
(2)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services下,删除所有Oracle项
(3)在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services下,删除所有Oracle项
(4)在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,删除所有Oracle项
(5)在HKEY_CLASSES_ROOT下,删除所有Oracle项
3、删除硬盘上所有Oracle文件
(1)Oracle安装文件
(2)系统目录下,在Program files文件夹中的Oracle文件
4、重启,完成卸载。
附: 我装的Oracle数据库也包含两个,db_1 和db_2?
只有一个DB_1,db_1主要是数据库系统性质的文件 比如密码文件 SPFILE参数文件等等。出现db_1 和db_2通常是不通过规范的方法将oracle卸载掉,实际没有卸载完全,而继续安装oracle导致的。应该是先通过uninstall程序进行卸载再通过删除注册表中oracle部分,然后从硬盘上删除相关文件