最近遭遇了 oralce 监听服务启动了 又自行关闭的 悲惨经历
我把我的过程和大家分享一下!
1)排查原因
程序员是懒惰的,我始终都希望能够成功启动监听服务,但是就是事与愿违
有一下方式可能不能成功启动监听
1.端口占用,oralce 要用到1521,2100..等在cmd下 netstate -ao;看是否有oralce
的端口被占用;
2.就是监听文件%oraclebase%\network\admin\listener.ora 是否被修改过,或者是
修改过本机的用户名
3.在database的sid 是否修改过在注册表下查找,或者通过命令修改
4.cmd lsnrctl status 看哈具体的原因,百度 google 下 看能不能解决,这里我不祥说
具体原因具体分析。
有一种情况我说哈
在运行处执行REGEDIT进入注册表到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener
发现ImagePath关键值没有了,增加他,选择可扩充字符串值,编辑字符串的
数值数据为:e:\Oracle\Ora92\BIN\TNSLSNR;
2)
如果不是以上还是无法启动,我们只好用很笨的方法了(我当时是重装的系统,安装数据 库 的)
重装的oracle和以前损坏的数据库是一模一样的结构。(路径,机器名,数据库名)
1。停止oracle当前服务,删除掉新建数据库的所有数据文件、控制文件和日志文件
Cmd>sqlplus /nolog ;
Sql>conn as sysdba
用户名:system
密码:(此处密码为新创建数据库的密码)
Sql>shutdown immediate ;
Copy原数据库的数据文件、控制文件和日志文件到对应目录下;
Sql>startup nomount
Sql>alter database mount ;
此时看数据库是不是能mount起来,有时会提示没有口令文件PWDdemo.ora文件找不到。
查看对应的目录(database下)会发现该文件是存在的。此时需要注意,该口令文件是新
安装数据库后创建实例时生成的口令文件,不是以前所用数据库的口令文件,而现在,
我们是用以前数据库的控制文件和数据文件来打开以前的数据库,所以此时需要重新创
建一个口令文件。
Sql>shutdown immediate
Sql>host orapwd file=c:\oracle9i\database\PWDdemo.ora password=oracle
Entries=10 (放在database 目录下)
Sql>startup nomount
Sql>alter database mount
Sql>alter database open
是不是恢复好了啊!ok
还有种办发说 安装好数据库后 用
startup pfile=参数文件名
带初始化参数文件的启动方式
先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:\Oracle\admin\oradb\pfile\init.ora
我没有试过,哈哈
希望以上对你有帮助,goodluck!