1、为了测试程序是否确实接入测试库,所以关闭测试库。然后重新启动,执行STARTUP命令,就发生了ORA-12528错误。
2、数次启动数据库,启动方式如下:
connect / as sysdba
startup
启动是正常的,但是每次启动完成之后,用lsnrctl status查看时,发现指定的服务状态为BLOCKED,比较奇怪。
3、后来才想明白,这个测试服务器上安装了两个数据库,默认情况下,关闭并重启了另外一个数据库,没有启动我需要的那个数据库。
4、CMD下:set ORACLE_SID=orcl
然后执行sqlplus /nolog,去正常启动ORCL数据库,这时候故障就排除了。
5、但是始终没有明白,为什么ORCL数据库会停止在NOMOUNT阶段,从执行过程看,自己认为应该是数据库关闭的事情,停滞在了NOMOUNT阶段.
6、这里还需要说明一下,我使用的是动态注册,动态监听注册由PMON进程负责向监听器注册。
7、经过试验发现,在数据库的NOMOUNT和MOUNT阶段,PMON进程在NOMOUNT阶段已经启动,但可能是由于数据库没有打开,所以PMON进程向监听器注册的服务状态都是BLOCKED,并不是READY状态,所以导致所有连接全部中断。最后一次测试,发现,NOMOUNT阶段,PMON向监听器注册的状态确实为BLOCKED,但是在MOUNT阶段,大概数据库MOUNT之后1分钟左右,监听服务状态已经改为READY,但是远程仍然连接不进。
8、进一步测试,发现各个阶段出现的错误提示不太相同,注意哈,这里的连接方式是通过简易连接字符串连接的,就是@ip地址:1521/服务名,这种方式连接的,不是IPC,也不是TNSNAME解析:
NOMOUNT阶段,任何用户包括SYS用户,登录的时候,均提示ora-12528错误。
MOUNT阶段,任何用户包括SYS用户,登录的时候,均提示ora-01033错误。
提示的错误号居然不一样,提示的错误内容不一样。
9、用IPC进行连接测试:
SYS用户,所有阶段均可以连接。
SYSTEM用户,在NOMOUNT阶段和MOUNT阶段,均提示ora-01033错误。
10、用TNSNAME解析连接,在客户机上进行:
NOMOUNT阶段,SYS和SYSTEM用户均提示ora-12528错误。
MOUNT阶段,SYS用户连接正常,但是SYSTEM用户连接错误,提示:ora-01033错误。
11、综述
8、9、10中关于出现的错误的描述,不完全正确,但是可以概括为NOMOUNT阶段连接不上出现的错误大多为ora-12528错误,MOUNT阶段连接不上出现的错误大多为ora-01033错误,这个基本上可以确定。这两个错误,估计原因为NOMOUNT阶段,监听服务状态还在BLOCKED,所以出现的是ORA-12528错误,到了MOUNT阶段,MOUNT成功之后1分钟左右,监听服务状态改为READY,但是由于数据库还没有打开,所以导致出现的错误时ORA-01033错误。
可以看出,在不同阶段,可以连接的用户不同,这个是肯定的,在本机上IPC连接,SYS全部连接。在远程连接上,连接方式的不同,可以导致不同用户出现不同的错误,根据出现的错误,基本可以判断出,主机数据库现在处于何种状态。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9606200/viewspace-745700/ ,如需转载,请注明出处,否则将追究法律责任。