您的位置:首页 > 数据库 > Oracle

访问程序包 DBMS_APPLICATION_INFO 时出现错误 “SP2-0575: Oracle SQL 特征不位于 SQL92 Entry层。”

2013-10-16 14:35 302 查看
在使用某用户身份登陆数据库时,发现以下错误:

“SP2-0575:
Oracle SQL 特征不位于 SQL92 Entry层。”

请问该错误如何解决?

When the entry in the dual dummy table has been deleted, you will get

the SP2-0575 error. To fix it, just insert the 'x' value into the dual table and don't forget to commit it.

1。一种可能是你的虚表出问题了。

SQL> select * from dual;

D

-

X

看看你的结果是不是这样?

2。如果你的结果是空的话,插入一个值

SQL> insert into dual values('x');

3。下面是我做的测试:

1)删除虚表dual的值

SQL> select * from dual;

D

-

X

SQL> delete from dual;

1 row deleted.

SQL> commit;

Commit complete.

SQL> select * from dual;

no rows selected

2)重新连接数据库,发觉出错

SQL> disconnect;

Disconnected from Oracle8i Enterprise Edition Release 8.1.7.1.0 - Production

With the Partitioning option

JServer Release 8.1.7.1.0 - Production

SQL> conn system/manager

SP2-0575: Use of Oracle SQL feature not in SQL92 Entry Level.

Connected.

SQL> select * from dual;

no rows selected

3)在虚表中重新插入值

SQL> insert into dual values('x');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from dual;

D

-

x

4)问题解决

SQL> disconnect;

Disconnected from Oracle8i Enterprise Edition Release 8.1.7.1.0 - Production

With the Partitioning option

JServer Release 8.1.7.1.0 - Production

SQL> conn system/manager

Connected.

SQL> select * from dual;

D

-

x

上面说了第一种情况是虚表中的行被删除了,这里说的第二种情况是用户自己建立了一个虚表,而表中是空的。

1。一般而言,运行下面的语句会有两条记录:

SQL> l

1 Select OWNER,OBJECT_NAME,OBJECT_TYPE,CREATED

2 from dba_objects

3* where object_name='DUAL'

SQL> /

OWNER OBJECT_NAM OBJECT_TYPE CREATED

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

SYS DUAL TABLE 13-8月 -03

PUBLIC DUAL SYNONYM 13-8月 -03

2。每个用户用sqlplus连接数据库的时候,初始化连接会执行一些查询来返回用户的配置文件,其中一些查询需要用到虚表dual。如上面的情况下,每个用户使用的都是'SYS.DUAL'的同义词这个虚表。所以不会出错。

3。如果用户自己创建了一个虚表,而且里面没有数据话,则但以这个用户登录的时候会报错:

SQL> conn kathy/kathy

已连接。

SQL> create table DUAL( dummy varchar2(1));

表已创建。

SQL> select * from dual;

未选定行

SQL> conn system/manager

已连接。

(上面的用户system由于没有建立自己的虚表,所以连接的时候还是用的是SYS.DUAL的同义词,不会出错)

SQL> conn kathy/kathy

SP2-0575: Oracle SQL 特征不位于 SQL92 Entry层。

已连接。

(由于用户kathy建立了自己的虚表,所以连接的时候使用的是自己建立的虚表,而由于虚表是空的,所以连接的时候报错)

3。这时候发现数据库中有两个虚表:

SQL> Select OWNER,OBJECT_NAME,OBJECT_TYPE,CREATED

2 from dba_objects

3 where object_name='DUAL';

OWNER OBJECT_NAM OBJECT_TYPE CREATED

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

SYS DUAL TABLE 13-8月 -03

PUBLIC DUAL SYNONYM 13-8月 -03

KATHY DUAL TABLE 06-9月 -03

4。这里我们可以把这个虚表改名或者删除来解决这个问题。

1)

SQL> conn kathy/kathy

SP2-0575: Oracle SQL 特征不位于 SQL92 Entry层。

已连接。

SQL> rename dual to dual1;

表已重命名。

SQL> disconnect;

从Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

With the Partitioning option

JServer Release 8.1.7.0.0 - Production中断开

SQL> conn kathy/kathy;

已连接。

2)这时候把虚表的名字再该回来,就不出错了。应该是这时候kathy用户的虚表链接已经指向SYS.DUAL,不会再指向重新命名的自己的虚表dual了。

SQL> conn kathy/kathy

已连接。

SQL> rename dual1 to dual;

表已重命名。

SQL> select * from dual;

未选定行

SQL> conn system/manager

已连接。

SQL> Select OWNER,OBJECT_NAME,OBJECT_TYPE,CREATED

2 from dba_objects

3 where object_name='DUAL';

OWNER OBJECT_NAM OBJECT_TYPE CREATED

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

SYS DUAL TABLE 13-8月 -03

PUBLIC DUAL SYNONYM 13-8月 -03

KATHY DUAL TABLE 06-9月 -03

SQL> disconnect ;

从Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

With the Partitioning option

JServer Release 8.1.7.0.0 - Production中断开

SQL> conn kathy/kathy

已连接。

SQL> select * from dual;

未选定行

5。如果不是删除虚表dual,而是增加一行,同样可以解决这个问题。(不过不建议这么做,因为我不确定在数据库的其他地方是否会有影响)

SQL> conn kathy/kathy

已连接。

SQL> create table DUAL( dummy varchar2(1));

表已创建。

SQL> select * from dual;

未选定行

SQL> disconnect ;

从Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

With the Partitioning option

JServer Release 8.1.7.0.0 - Production中断开

SQL> conn kathy/kathy

SP2-0575: Oracle SQL 特征不位于 SQL92 Entry层。

已连接。

SQL> insert into dual values('x');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from dual;

D

-

x

SQL> disconnect ;

从Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

With the Partitioning option

JServer Release 8.1.7.0.0 - Production中断开

SQL> conn kathy/kathy

已连接。

====================================================================

重启了solaris上的oracle8。1。7, 用pl-sql连接时报如下错:

(c) Copyright 2000 Oracle Corporation. All rights reserved.

访问程序包 DBMS_APPLICATION_INFO 时出现错误

ERROR:

ORA-06550: 第 0 行, 第 0 列:

PLS-00907: 无法载入程序库单元 (由 SYS.DBMS_APPLICATION_INFO 引用)

ORA-06550: 第 1 行, 第 7 列:

PL/SQL: Statement ignored

try this one:

sqlplus /nolog

connect internal

select object_name,object_type,status from dba_objects

where object_name = 'DBMS_APPLICATION_INFO';

OBJECT_NAME

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

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

DBMS_APPLICATION_INFO

PACKAGE VALID

DBMS_APPLICATION_INFO

PACKAGE BODY VALID

DBMS_APPLICATION_INFO

SYNONYM VALID

make sure the status of dbms_application_info are all valid, if not, try:

alter package dbms_application_info compile;

alter package dbms_application_info compile body;

If more serious, there 's no row returned, you may try the following:

@$ORACLE_HOME/dbmsapin.sql

to recreate this package. And please note that, you may try :

select object_name from all_objects

where status = 'INVALID';

to make sure there is no invalid objects in your database.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐