ORA错误
一oracle数据库无法登录,报:ORA-01034: ORACLE not available 错误
解决方法:
step 1 先看oracle的监听和oracle的服务是否都启动了。启动oracle监听: cmd的命令行窗口下,输入lsnrctl start,回车即启动监听。
step 2 查看oracle的sid叫什么,比如创建数据库的时候,实例名叫“abc”,那么先手工设置一下oralce的sid,cmd命令窗口中,set ORACLE_SID=abc
step 3 再输入sqlplus /nolog,回车 再输入 conn / as sysdba;回车
step 4 再输入startup,回车.这步是启动oracle服务。如果startup启动被告知已经启动了,可以先输入shutdown immediate;等shutdown结束之后,再输入startup。
step 5 过几秒钟等命令运行完成,就能连接了。这个时候,可以输入"select * from user_tables;"测试一下,看是否有查询结果。
step 6 出现ORA-01034和ORA-27101的原因是多方面的:主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-01034和ORA-27101两个启动异常了。
二ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连
原因:断电或者断网可能出现的
首先在cmd中执行lsnrctl status命令,会显示如下信息
监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=svctag-5dk652x)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) 服务摘要.. 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orcl" 包含 1 个例程。 例程 "orcl", 状态 BLOCKED, 包含此服务的 1 个处理程序... 服务 "orcl_XPT" 包含 1 个例程。 例程 "orcl", 状态 BLOCKED, 包含此服务的 1 个处理程序... 命令执行成功
如果看到 BLOCKED 则为出错的状态。服务摘要.. 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orcl" 包含 1 个例程。 例程 "orcl", 状态 BLOCKED, 包含此服务的 1 个处理程序... 服务 "orcl_XPT" 包含 1 个例程。 例程 "orcl", 状态 BLOCKED, 包含此服务的 1 个处理程序... 命令执行成功
如果看到 BLOCKED 这个问题说明数据库没有Mount。
连接的问题可以通过修改listener.ora的参数,把动态的参数设置为静态的参数,蓝色标注部分,然后从新启动监听,就OK
位置D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.1.0\db_1)
(PROGRAM = extproc) )
(SID_DESC =
(GLOBAL_DBNAME = orcl) //如果已经有这个orcl了,这个文件就不用修改
(ORACLE_HOME = D:\oracle\product\10.1.0\db_1) //这里要根据你的实际路径来
(SID_NAME = orcl) ) )
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)(HOST = lypch )(PORT = 1521)) )
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
) ) )
通过修改tnsnames.ora的参数,红色表注部分
# tnsnames.ora Network Configuration File: D:\oracle\product\10.1.0\db_1 \network\admin\tnsnames.ora # Generated by Oracle configuration tools.
AMMICLY =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)(HOST = lypch )
(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(UR=A) //加上这个,不知道是什么意思
) )
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) )
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
) )
然后 sqlplus /nolog SQL>alter database mount; SQL>alter database open;
这样就可以启动数据库了;
或者用Oradim -shutdown -sid ammicly -shuttype srvc,inst -shutmode immediate -syspwd ammic;关闭数据库 在用oradim -startup -sid ammicly -starttype srvc,inst -syspwd ammic;启动数据库解决;也可以在截面上从启动数据库服务来解决;
总结RA-12528问题是因为监听中的服务使用了动态服务,系统启动后,数据库没有正常的MOUNT,因此在动态模式下,就会出现这个问题,用静态的就不会有这个问题,因此上面的方法就是把监听设置为静态,或者在tnsnames.ora中追加(UR=A)或者从启动服务,三种方法解决问题;
一 oracle ORA-01033 断电或者断网可能出现的
1、进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID;
2、运行sqlplus "/as sysdba" SQL>shutdown immediate 停止服务 SQL>startup
启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号 SQL>shutdown immediate
再次停止服务 SQL>startup mount SQL> recover datafile 2
恢复出错的数据文件 SQL>shutdown immediate 再次停止服务 SQL>startup 启动服务,此次正常。
3、进入PL/SQL Developer检查,没有再提示错误。

浙公网安备 33010602011771号