环境:linux
数据库:oracle 10g
数据库安装完成,并且使用dbca建立了一个数据库,并且使用dbstart启动,而且使用netca建立了一个监听并使用lsnrctl启动,现在碰到一个这样的问题,在oracle用户下,我使用sqlplus sys/qwe123 as sysdba是可以连接空闲实例,但是我使用sqlplus sys/qwe123@orc_test as sysdba就不能连接,报错:
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
而且我也设置过netmgr,请问这是怎么回事啊?谢谢。请赐教。
数据库:oracle 10g
数据库安装完成,并且使用dbca建立了一个数据库,并且使用dbstart启动,而且使用netca建立了一个监听并使用lsnrctl启动,现在碰到一个这样的问题,在oracle用户下,我使用sqlplus sys/qwe123 as sysdba是可以连接空闲实例,但是我使用sqlplus sys/qwe123@orc_test as sysdba就不能连接,报错:
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
而且我也设置过netmgr,请问这是怎么回事啊?谢谢。请赐教。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.1.0\Db_10g)
(PROGRAM = extproc)
)
)LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
)
)
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
)SID_LIST_ORCTEST =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orc_test)
(ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
(SID_NAME = orctest)
)
)
有什么问题么?
我使用netmgr重新设置了listener,现在使用sqlplus sys/qwe123@orc_test as sysdba是可以连接上了,但是又出现一个问题,我连接上以后,出现Connected to an idle instance字样,貌似还是没有连接到我需要的数据库上,不管用什么命令,都是显示这个错误:
ERROR at line 1:
ORA-01034: ORACLE not available
貌似说ORACLE不可用,奇怪了,这又是怎么回事啊?
你的连接字符串错了么 sys/qwe123@orc_test as sysdba 看看你的tnsnames.ora 例如
24 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.55.24)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = power)
)
)
那连接字符串就是 24 username/password@24
要明白 连接字符串、 sid service_name 等关系而sid与service_name是没有关系的。
sid是实例名,service_name=db_name.domain 之所以经常会把几者混淆,是因为大多数都是单实例数据库,而常常数据库名db_name又与实例名sid相同。
在rac环境下就很容易看到各个名称间的区别。
ORC_TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orc_test)
)
)
我认为我的这个文件应该是没有问题的。
再想请教一下,我如何看数据库服务已经启动,使用什么命令进行查看,是用ps -awx | grep oracle 进行查看么,监听服务是否是使用lsnrctl services orctest进行查看?谢谢。
那一般如果你没做特殊修改的话 你建立 实例的时候 SID_name 和SERVICE_NAME 应该是一样的
呵呵,问题已经解决了,第一个问题主要是listener没有开启,以及listener.ora文件里面的设置有问题,重新设置后,可以使用sqlplus进行连接了。
后面一个问题是因为数据库没有启动,我在使用sqlplus连接到数据库后,使用startup启动数据库后,就可以进行正常操作了。主要是刚才总是认为dbstart就可以把数据库启动,貌似这个文件需要修改一下才能够进行使用,而且后来使用ps -ef|grep oracle查看系统进程,这样就可以知道数据库是否启动了。看来dbstart这个命令不太好用,估计如果要实现自启动还需要研究一下。
谢谢以上两位对我的帮助,十分感谢。