oracle 11g ORA-12514问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 11g ORA-12514问题相关的知识,希望对你有一定的参考价值。

用sqlplus登陆数据库时,会出现12514的问题。
sqlplus sys@test as sysdba输入密码后出现ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor,上网查询许多未果。希望有经验的朋友指教
查看listener.ora内容为:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = HUAANserv)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /opt/oracle

查看status信息为:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HUAANserv)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 11.2.0.1.0 - Production
Start Date 31-MAR-2010 10:58:28
Uptime 0 days 0 hr. 8 min. 22 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/11.2/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/HUAANserv/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=HUAANserv)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
用"/ as sysdba"进去会提示Connected to an idle instance
什么都做不了啊。

谢谢 linuxocp。不过我用的是solaris 10,不是windows

Connected to an idle instance

证明你实例未启动,先:
在cmd中输入net start|find "Ora"
一般有下面的两行:
OracleOraDb10g_home1TNSListener 监听器
OracleServiceORCL 数据库服务

如果没有的话,在运行里面输入
services.msc 找到相关实例服务,启动之

然后在sqlplus / as sysdba;
执行启动startup nomount;
alter database mount;
alter database open;
如果上面的三条语句顺利执行,数据库就能打开了,不行的话,查看alert_sid.ora文件中的错误信息。

然后The listener supports no services,这个信息显示,你的监听器还未配置服务,如果要添加服务可以在listener.ora这个文件中输入下面信息:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test) 服务名
(ORACLE_HOME = E:\oracle\product\10.2.0\db_1) db_home
(SID_NAME = ORCL) ##这个是你要添加的服务
)
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:\oracle\product\10.2.0\db_1) ##这个服务保证你可以使用外部过程,如C程序
)
)

然后再配置tnsnames.ora文件,加入下面的内容:

ZHANGYU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test) 与上面的服务名对应
)
)

在连接时你就可以这样测试下:
tnsping zhangyu;
最后几行出现下面类似的文本信息就表明服务配置成功:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = test)))
OK (110 msec)

还有监听器的动态注册特征,感兴趣的可以参见一些资料,由于篇幅有限,就介绍这么多。

以上都是自己写的,绝无CTL+c,ctl+v.

监听器的配置跟所用平台无关,主要问题是这两个脚本文件;unix我没用过,不过linux我倒是用过的。
参考技术A 你语句sqlplus sys@test as sysdba 中的@后面的test是什么意思??如果是实例名的话。。。你可以先set oracle_sid=test后再 sqlplus sys/密码 as sysdba登陆。

用"/ as sysdba"进去会提示Connected to an idle instance
什么都做不了啊。
如果像你说的这样。。那么你的数据库就没有完全启动。。你可以执行alter database open;来启动它
参考技术B BEN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(sid = ben )
(SERVER = dedicated)
(SERVICE_NAME = bEn)
)
)
贴一个我本机的连接串,你发现你少了什么东西没
注:(SERVER = dedicated) 这个不是必要的,有默认

Connected to an idle instance
数据库没有被MOUNT
参考技术C 配置tnsnames.ora,里面加入要监听的地址

oracle 11g dataguard ORA-10458问题求助

参考技术A [oracle@dg2 dbs] $ sqlplus / as sysdba
SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdb1.ora'
ORA-10458: standby database requires recovery
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: '/u01/app/oracle/oradata/db1/system01.dbf'

2 原因分析
在pfile中有个参数
*.control_files='/u01/app/oracle/oradata/db1/control01.ctl','/u01/app/oracle/oradata/db1/control02.ctl'
这里有两个控制文件,但实际上创建的时候多建了一个control03.ctl。控制文件要与*.control_files参数规定的一致才可以。
另外,传控制文件给备库时要处于宕机状态。

3 解决方案
删除/u01/app/oracle/oradata/db1/control03.ctl文件本回答被提问者采纳
参考技术B [oracle@dg2 dbs] $ sqlplus / as sysdba
SQL> startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdb1.ora'
ORA-10458: standby database requires recovery
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: '/u01/app/oracle/oradata/db1/system01.dbf'

2 原因分析
在pfile中有个参数
*.control_files='/u01/app/oracle/oradata/db1/control01.ctl','/u01/app/oracle/oradata/db1/control02.ctl'
这里有两个控制文件,但实际上创建的时候多建了一个control03.ctl。控制文件要与*.control_files参数规定的一致才可以。
另外,传控制文件给备库时要处于宕机状态。

3 解决方案
删除/u01/app/oracle/oradata/db1/control03.ctl文件
参考技术C Oracle DBA神器:PRM-DUL灾难恢复工具可以直接从这种受损的Oracle数据库中将数据拯救出来。
当你的数据库因为ORA-00600/ORA-07445或其他ORA-报错,或丢失关键的system表空间数据文件,或ASM diskgroup损坏时均可以考虑采用PRM-DUL来做恢复。PRM-DUL采用独创的DataBridge恢复技术,直接从数据文件中抽取数据后可以像DBLINK那样直接插入到新建数据库中,而无需数据落地成为DMP文件占用空间。
参考技术D 可能是设置的不一样导致归档导致的

以上是关于oracle 11g ORA-12514问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

ORA-12514:TNS 监听问题

oracle 11g安装好后,测试提示:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

ORA-12514:TNS:监听程序当前无法识别链接描述符中请求的服务

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(急)

ORA-12514: TNS: no listener 解决方案