Oracle 11g. 12505错误 已解决. 仔细看哦.

引用

2009-06-23 11:07最新修改.
  虽然oracle 11g. 的12505错误 解决了.
  第二天上班来了. 想把昨天新建的数据库实例删掉.
  结果因为testdb数据库无法启动.无法删除.
  当然无法启动了.. 哈哈..
  没有解决不了的问题.
  暂时的想法:
  把配置文件改回新建的数据库示例的配置信息,主要还是修改tnsnames.ora文件.
  把监听器配置成新的数据库实例 当然三个配置文件要在修改之前备份一下哦.
  因为删除数据库会把数据库所有的信息都删掉. 因为之前的数据库已经修复 所有最好删除新的数据库之前把配置文件备份一下.
  这样删除数据库就应该没有问题了.
  删除成功之后. 在把备份好的配置文件 放到原来的目录$ORACLE_HOME$/NETWORK/ADMIN/下.
  应该就没有问题了.
  因为鄙人还没有测试. 只是想法. 呵呵..
  不过应该是没有什么问题的.
  如果有问题. 大家一起探讨啊.!十分欢迎!
  小弟有礼了.
 
修复步骤.
1->创建新的数据库示例.
2.修改tnsnames.ora. 把新建的数据库实例修改为出现异常的.
3.打开注册表修改oracle_sid
4.cmd->sqlplus /nolog->conn sys/change_on_install as sysdba->startup
5.等待数据库装载、启动..

等命令行出现数据库已启动.就大功告成了.
随便去测试吧..
功夫不负有心人啊..
大家膜拜吧!
2009-07-01 修改:
  windows 事件查看器 看来要定期清除一下. 1M 几天就满了.. 大家都设置多大啊.!
转到正题 大家如果startup启动不了数据库。
可能是因为oracle实例还是开启着.
SQL>shutdown abort;
SQL>startup;


  我现在用的是.Oracle 11g. 这两天做项目 又碰到棘手的问题了.ORA-12505错误.
也许是现在人们用的Oracle 11g的人和公司不多吧..
Oracle 11g. 的3个配置文件. 在出错以后. 发现跟网上人们所讲的3个配置文件完全不一样.
上一次出现错误. 几天无果. 新建数据库. 结果报windows记录事件错误. 卸载Oralce c重装.也不可以. 当时也没找到解决方案. 只好重装系统. 才算搞定.
  今天找到windows记录事件Exception答案. 可以在. 开始->控制面板->管理工具->事件查看器
可以看到 应用程序、安全性、系统3个日志文件. 原来是应用程序的日志文件已经满了. 无奈只好手动把最大限制改到1024. 因为不敢清除. 所以只好改大.
  关于ORA-12505错误 11G版本的数据库还是没有找到解决方案.
  只有重新创建一个数据库. 凑活使用.
  但问题暂时还没有解决.
  现将没有问题的数据库的3个主要的配置文件源码贴出. 记录一下.等出问题的时候. 覆盖不知啊好使不好使.
tnsnames.ora
# tnsnames.ora Network Configuration File: E:\app\Administrator\product\11.1.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

TESTDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = MICROSOF-CB7F22)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testdb)
    )
  )

sqlnet.ora
# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES = (NTS)

listener.ora
# listener.ora Network Configuration File: E:\app\Administrator\product\11.1.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = MICROSOF-CB7F22)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

..
另附.网络上.Oralce 10g. ORA-12505错误的解决办法.
因为本人装的是11g 所以也验证不了.
暂时代码贴出.
连接 jdbc Oracle10g 错误 ,JDBC代码无问题,服务也启动,连接字符串也是对的,但是在eclipse 下报错,错误信息如下:

java.sql.SQLException: Listener refused the connection with the following error:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

The Connection descriptor used by the client was:

localhost:1521:orcl


at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:279)

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:318)

at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:343)

at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:147)

at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:545)

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at cn.com.db.DBAccess.getConnection(DBAccess.java:33)

at cn.com.db.DBAccess.main(DBAccess.java:95)

Null

在CMD下snrctl status  ,tnsping orcl 显示都正常。 

在pl/SQL下用

select open_mode from v$database;

show parameter instance;

select INSTANCE_NAME from v$instance;

sqlplus sys/oracle@orcl

查询都显示正常,就是用pl/sql 登录时 填“数据库名” orcl  就无法登陆,报ora -12514 

l最后有效的解决方法:

修改listener.ora文件 

原listener.ora文件:

# listener.ora Network Configuration File: D:\oracle\product\10.1.0\Db_4\network\admin\listener.ora

# Generated by Oracle configuration tools.


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = D:\oracle\product\10.1.0\Db_4)

      (PROGRAM = extproc)

    )

  )


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

      )

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

      )

    )

  )



修改后的文件:

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

# listener.ora Network Configuration File: D:\oracle\product\10.1.0\Db_4\network\admin\listener.ora

# Generated by Oracle configuration tools.


SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = D:\oracle\product\10.1.0\Db_4)

      (PROGRAM = extproc)


    )


 (SID_DESC =

       (GLOBAL_DBNAME = orcl)

       (ORACLE_HOME =  D:\oracle\product\10.1.0\Db_4)  

       (SID_NAME = orcl)

      )

   )


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

      )

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

      )

    )

  )

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

如果错误还存在,也可以那试一下:
set oracle_sid=<sid_name>
sqlplus /nolog
connect sys/pwd as sysdba
startup




希望能对大家有所帮助..
Ps:
终于搞定了......
如上方法...
1.修改tnsnames吧Oracle_SID修改为坏掉的数据库名字.
2.cmd->regedit--找到Oracle 修改Oracle_SID=XXXXXX,自己的数据库示例.
   或 cmd->set oracle_sid=XXXXXX;
3.conn sys/pwd as sysdba
4.startup.
  等着启动吧.
  哈哈..
  终于搞定了...

你可能感兴趣的:(oracle,sql,jdbc,SQL Server,配置管理)