解决过程如下:
第一步:
对于服务数据库程序,按配置客户端的方式配置好后也可以连接数据库,但要启动本地数据库需要关注listener.ora,sqlnet.ora和tnsnames.ora三个文件配置。在安装数据库软件完成后,需要先配置监听,再配置网络服务名,这样才能够正常启动。
对于这个报错需要配置listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\oracledb)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\oracledb)
(GLOBAL_DBNAME= orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = aXC)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
执行命令lsnrctl stop、lsnrctl start、lsnrctl status就可以看到数据库监听服务已经起来。
PLSExtProc不是oracle实例,是pl/sql external procdure 的意思,就是在pl/sql中调用外部语句,如c,java写的过程。这个里面的配置,是让监听器产生extproc agent,实际上就是一个extproc进程,用于为external procedure 服务。
如果只启动了PLSExtProc,新建的实例orcl没有起来,这样其它计算机使用pl/sql连接的话,会出现“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”。当然原因还是在于listener.ora。一般新建监听之后,listener.ora中会有相应的配置。
第二步:如果第一步完成后还无法正常登录,则执行第二步操作:
cmd下,执行以下命令,启动数据库
1、sqlplus /nolog 登陆数据库
2、conn 用户名/密码 as sysdba 以管理员权限登陆
3、startup 启动数据库