ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于ORACLE数据库监听自动停止解决一例

关于ORACLE数据库监听自动停止解决一例

原创 Linux操作系统 作者:64549991 时间:2009-02-19 16:00:59 0 删除 编辑

本人原来在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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-10-09

  • 博文量
    2
  • 访问量
    51237