本人原来在windows xp系统上装了一个Oracle 9i 的 Database,由于系统崩溃因此需要重新安装windows,系统装好后无法使用数据库。我用了一个最简单的办法来恢复数据库,方法如下:即把原来的数据库文件夹名字改掉,新建一个文件夹名字与原来数据库的文件夹名称一致,然后重新安装Oracle 9i DB到此文件夹中,安装完毕后停止所有Oracle相关的服务,把名称改掉,然后把原来数据库的名称改回来,一般情况下如果计算机名称和SID名称跟原来一样的话,启动监听服务和OracleServiceDB服务就可以访问原来的数据库了。
但是按照上述步骤做完以后访问数据库报错
ORA-12545:因目标主机或对象不存在,连接失败。
马上查看计算机名称为TIGERLONG,然后查看tnsnames.ora如下:
TL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = TL)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TL)
)
一看就知道Host不对,HOST改为Tigerlong,然后Sqlplus访问数据库,新问题又来了,问题描述如下:
ORA-12541:TNS:没有监听器
马上打开Windows服务找到OracleOraHome92TNSListener看到服务没有启动,于是马上启动服务重新访问数据库,问题依然存在,进入Windows服务查看该服务的属性,看到服务状态是“已停止”,点启动按钮启动服务,但是启动后有自动停止。开始分析问题,想到问题可能存在于Listener的配置,于是打开Listener.ora内容如下:
# LISTENER.ORA Network Configuration File: F:\ORA_DATABASE\network\admin\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tl)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = F:\ORA_DATABASE)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = TL)
(ORACLE_HOME = F:\ORA_DATABASE)
(SID_NAME = TLSID)
)
)
首先看到LISTENER 部分有错误,把Host改为Tigerlong,再往下看
SID_LIST_LISTENER部分也有问题,因为这次安装Oracle 9i DB的时候SID_NAME为TL而此处为TLSID,把SID_NAME改为TL,保持退出。
重新运行CMD,SQLPLUS输入连接字符串,连接成功。
欢迎大家共同探讨:E-Mail:Oraclelong@gmail.com QQ:404873488
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7629130/viewspace-555690/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7629130/viewspace-555690/