引用
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.
等着启动吧.
哈哈..
终于搞定了...