oracle连锁反应

    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部分,然后从硬盘上删除相关文件

你可能感兴趣的:(oracle,sql,windows,应用服务器,网络应用)