今早刚上班、客户打电话过来说系统访问不了,输入用户名、用户号不能加载出来!听到这个问题,第一时间想到的是不是服务器重新启动了,Oracle数据库的相关服务没有启动的原因、查看服务的时候,发现相关的服务都是启动的状态。第二想法就是查看的程序配置文件是否被修改过、也没有异常;第三个就是用PL/SQL连接Oracle数据库,输入登录名和密码后,提示如下错误:ora-01033:oracle initialization or shutdown in progress;
在网上搜索了一圈,终于发现几个比较有详细步骤的解决方案,参考如下:
第一种解决方法:
第一步,运行cmd
第一步、sqlplus /NOLOG
第二步、SQL>connect sys/change_on_install as sysdba
提示:已成功
第三步、SQL>shutdown normal
提示:数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭
第四步、SQL>startup mount
第五步、SQL>alter database open;
提示:(我在操作的时候没有遇到下边着中错误)
第1 行出现错误: ORA-01157: 无法标识/锁定数据文件19 - 请参阅DBWR 跟踪文件
ORA-01110: 数据文件19: ''''C:\oracle\oradata\oradb\FYGL.ORA''
这个提示文件部分根据每个人不同情况有点差别。
继续输入 第六步、SQL>alter database datafile 19 offline drop;
第七步、重复使用第五第六步,直到出现“数据库已更改”的提示,然后如下图,
继续输入shutdown normal,startup mount就OK啦
内容来源:http://www.2cto.com/database/201202/118194.html
http://yuxisanren.iteye.com/blog/1754018
测试了一遍,发现还是没有解决我这个问题;
第二种方法:
把Oracle的相关服务都停止后、在重新启动、发现可以正常登录。
--------------------------
一、错误描述
登陆PL/SQL Developer登陆本地数据库时先报没有监听程序,查看服务发现Oracle监听服务没有启动。右击启动监听程序,报错:
错误描述:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如 "性能日志和警报 "服务。
二、原因分析
你安装oracle的时候是连网的,那么listener.ora文件里的HOST=网络给你分配的IP地址,而在你断网的时候就会出现这样的情况。
三、解决办法
方法一:监听器
通过listener.ora或者Net Manager修改监听器配置。将原来本地字符串127.0.0.1或者localhost改为主机名。
首先查阅你的**\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下的"tnsnames.ora"和"listener.ora"这两个文件,然后看看里面的"HOST"信息,看看是不是你当前的ip地址,如果不是尝试着把这个2个文件改成你的ip地址,或直接就改成127.0.0.1(或计算机名字):
注意:此时的监听配置文件"listener.ora"里面的HOST=的内容(IP或者主机名)必须和,服务配置文件"tnsnames.ora"里面,你想要链接的服务的HOST=的内容完全一致。意思就是说要么都是IP地址,要么都是主机名。如果有多个服务(Net Manager中配置的网络服务)那么查看"tnsnames.ora"文件中与监听HOST内容一致的PL/SQL才可正常登录进去,否则无监听程序。如:
上面这里是"listener.ora"里面的HOST,我的是主机名。
上面这里是"tnsnames.ora"的配置信息,由于我的机子上面装了两个数据库DB1,DB2。分别建立了连接服务也叫做DB1,DB2。(不知道什么情况,建好后tnsnames.ora里一个HOST是IP地址,另一个是我的主机名。)结果导致DB1的PL/SQL正常连接进入(因为是IP地址和listener.ora的HOST地址完全匹配),而DB2的PL/SQL却提示没有监听程序。(什么情况,DB1不是都正常进入了么咋还没有监听呢。我去~~)后来网上找教程说是【修改"listener.ora"的HOST地址,如果是IP则改成主机名】于是照搬。运行PL/SQL,DB2登陆成功,爽啊。结果DB1没有监听程序(什么情况啊)。后来查看"listener.ora"发现此问题,说明两个文件的HOST的内容需要完全匹配才行,全部改成主机名,两个数据库登陆都成功,搞定!
方法二:环境变量
环境变量中ORACLE_HOME改为:***(你自己的安装路径)\product\11.2.0\dbhome_1
有的情况,装貌似安装客户端被自动改为**:\Ora11InstantClient了
方法三:注册表
KEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/OracleOraDb11g_home1TNSListener
中的ImagePath改为:D:\oracle\product\10.2.0\db_1/BIN/TNSLSNR.EXE(之前后面的.EXE没有)。
-----------------
今儿一直在测试服务器的迁移问题,不断地创建表空间、创建数据库、创建用户。后来感觉创建这么多东西太占用磁盘空间,心想删除一下吧,于是,我们执行了dbca命令,将没用的数据库统统删除,将dbf和dmp文件也统统删除了,再后来发现服务无法启动了,连接时会提示oracle initialization or shutdown in progress,后来经过查询发现,原来这些dbf和dmp不是说删除就能删除的(当时我们明明发现有的不允许删除,我还是故意停停掉oracle服务,然后将其删除滴),最终导致数据库实例无法启动。