ORA-12514 ,ORA-00119, ORA-00132

 

今天使用pl/sql链接oracle的时候遇到点小麻烦,主要是对oracle的监听理解不透所致,在这里把遇到的问题记录一下,其实真正的原理的东西还有待研究

为了避免有个叫做什么“云朵网络”的网站恶意转摘,特加此博客说明,估计它们会屏蔽这个地址(Blog:    http://blog.csdn.net/perfect_db);


SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production


用pl/sql链接数据库,出现了下列错误:

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

于是就用oracle的网络配置助手配置监听和tns

因为之前我升级过数据库,从服务中也能看到有两个版本的监听服务,就感觉是这个原因,就一遍遍的尝试删除、创建监听,创建tns,结果弄的焦头烂额的也没有搞定;打算看看spfile里的变量设置,因为监听只是用在客户端链接的时候用,所以我在服务器端用sql*plus是可以链接上的,谁知当我链接上的时候发现数据库没有启动(低级错误),当数据库没有启动的时候用网络配置助手配置的时候就是会出现这个错误;  于是就启动数据库,无奈,屋漏偏锋连阴雨,有出现了下列的错误:

SQL> startup
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'

看错误应该是跟监听有关的系统变量的设置出了问题;用下列方法解决:

SQL> create pfile='c:\pfile2.ora' from spfile;
文件已创建。

打开之后找到,变量 *.local_listener='LISTENER_ORCL'  

先干掉,然后保存该文件,用它先来启动;

SQL> startup pfile='c:\pfile2.ora';
ORACLE 例程已经启动。

Total System Global Area  836976640 bytes
Fixed Size                  1377812 bytes
Variable Size             683674092 bytes
Database Buffers          146800640 bytes
Redo Buffers                5124096 bytes
数据库装载完毕。
数据库已经打开。


看来是可以了,那么用此pfile 创建spfile;
SQL> create spfile from pfile=‘c:\pfile2.ora’;

再次试验

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  836976640 bytes
Fixed Size                  1377812 bytes
Variable Size             683674092 bytes
Database Buffers          146800640 bytes
Redo Buffers                5124096 bytes
数据库装载完毕。
数据库已经打开。

查看那个变量的情况:

SQL> show parameter loc


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers                     integer     0
db_block_checking                    string      FALSE
db_block_checksum                    string      TYPICAL
db_block_size                        integer     8192
db_file_multiblock_read_count        integer     16
ddl_lock_timeout                     integer     0
distributed_lock_timeout             integer     60
dml_locks                            integer     1088
local_listener                       string
lock_name_space                      string
lock_sga                             boolean     FALSE

值为空,既然能够正常使用就先不去设置了;


Blog:    http://blog.csdn.net/perfect_db


官方文档对此变量的解释:

LOCAL_LISTENER

Property Description
Parameter type String
Syntax LOCAL_LISTENER = network_name
Default value (ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)) where hostname is the network name of the local host.
Modifiable ALTER SYSTEM
Basic No

LOCAL_LISTENER specifies a network name that resolves to an address or address list of Oracle Net local listeners (that is, listeners that are running on the same machine as this instance). The address or address list is specified in the TNSNAMES.ORA file or other address repository as configured for your system.


最后在说一下那个ORA-12514错误,由于数据库的启动也自动解决了,呵呵


出现ora-12514还有一种情况就是主动和被动注册的问题,如果出现这正问题,那么在监听里加上这么一段就行;

    (SID_DESC =
      (GLOBAL_NAME = orcl)
      (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)
      (SID_NAME = orcl)
    )



-----------------------------------------------------------------------------------------------------------------------

博文所有内容均属原创,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:    http://blog.csdn.net/perfect_db

Email:   p[email protected]

   QQ:   787266309


你可能感兴趣的:(ORA-12514,ORA-00119,ORA-00132)