Oracle 10g 提供的软件包不可用
Posted
技术标签:
【中文标题】Oracle 10g 提供的软件包不可用【英文标题】:Oracle 10g Supplied Packages Unavailable 【发布时间】:2011-04-20 17:08:07 【问题描述】:我是一名学习 PL/SQL 的学生。我有一个 10g 的本地安装,我正在运行我的查询。每当我尝试使用 DBMS_ALERT、DBMS_PIPE 或其他默认包时,都会收到“invalid SQL”消息。我已经尝试过 TOAD 和 SQL+Plus 中的查询,结果相同。这会让我相信这些软件包没有安装,或者我的用户会话无法访问。我正在使用“SYS”用户登录,所以我认为权限不会是问题。
有人可以教我如何使这些软件包可用吗?我的印象是它们是默认提供的?
非常感谢,
凯尔
【问题讨论】:
请告诉我们您正在运行的 SQL 【参考方案1】:您可能做错的一件事是尝试在 PL/SQL 块之外调用 PL/SQL 函数或过程。您可能需要将过程调用封装在begin
和end
中,例如:
(一行中的单个/
本身告诉SQL*Plus 那是输入的结束。通常,SQL*Plus 使用分号来标记语句的结束。但是,PL/SQL 可以包含分号,并且如果 SQL*Plus 识别出您正在输入 PL/SQL,它会在将其输入传递给数据库之前自行等待单个 /
。)
您看到的错误的另一个可能原因是您试图在查询中调用存储过程。这是不可能的,因为存储过程不返回任何结果。诚然,如果您尝试在查询中调用过程时得到的错误并不是特别有用:
SQL> select dbms_alert.register('test') from dual; 从 dual 中选择 dbms_alert.register('test') * 第 1 行的错误: ORA-00904: "DBMS_ALERT"."REGISTER": 标识符无效这个错误的原因很可能是 Oracle 没有费心在存储过程中查找名称 dbms_alert.register
,而是给出了一个通用的“我找不到这个名称”错误。
如果您的问题不是我所描述的任何一个,请告诉我。
【讨论】:
【参考方案2】:这些软件包可能根本没有安装。如果您想安装它们,请查看 $ORACLE_HOME/rdbms/admin 目录并以 SYS 身份运行脚本。我包含了您上面列出的软件包的文件参考。
DBMS_ALERT dbmsalrt.sql 和 prvtalrt.plb
DBMS_PIPE dbmspipe.sql 和 prvtpipe.plb
【讨论】:
以上是关于Oracle 10g 提供的软件包不可用的主要内容,如果未能解决你的问题,请参考以下文章
安装oracle10g 和oralce11g之后,plsql连接正常。有一个软件需要连接oracle,提示报错ORA-01804: 时区信息