sqlplus help system 的创建

sqlplus的命令很多,我们不可能全部都记住,这时候就需要使用帮助文档,sqlplus提供了一个help命令,类似于linux系统的man命令。

sqlplus 的help命令不是很神奇,就是在system用户下建了一张help表,然后将帮助信息插入,当用户在sqlplus 下敲 help command_name时,sqlplus就访问system.help表,返回结果。

用法:help command_name

但是oracle database建好之后,help system(帮助系统)不一定创建,这时候我们就需要手工的创建help system.

我的环境是oracle 10g,Linux redhat4

进入目录:$ORACLE_HOME/sqlplus/admin/help, 该目录下有四个文件:helpbld.sql、helpdrop.sql、helpus.sql、hlpbld.sql

这4个sql脚本内容也不是很多,建议在安装sqlplus help system之前,先阅读下这几个scripts

helpbld.sql : 安装help system的脚本,需要两个参数。参数1是$ORACLE_HOME/sqlplus/admin/help,参数2是$ORACLE_HOME/sqlplus/admin/help/helpus.sql

helpdrop.sql : 删除help system

helpus.sql : Inserts English language SQL*Plus HELP text into the HELP table

hlpbld.sql : 真正干活的脚本,由helpbld.sql调用

下面就以我的系统为例,来创建sqlplus help system. (注意:一定要以system用户来创建)

[oracle@redhat4 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 6月 14 20:37:09 2014
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn system/manager
Connected.
SQL> show user
USER is "SYSTEM"

SQL> help set
SP2-0171: HELP system not available.  -- 当前帮助系统不可用

SQL> @@?/sqlplus/admin/help/helpbld.sql   $ORACLE_HOME/sqlplus/admin/help  $ORACLE_HOME/sqlplus/admin/help/helpus.sql
DROP TABLE HELP
           *
ERROR at line 1:
ORA-00942: table or view does not exist

Table created.

Grant succeeded.

1 row created.

. . .   (OK,下面来校验下help system是否按照成功)

[oracle@redhat4 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 6月 14 20:51:41 2014
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn scott/tiger
Connected.
SQL> help exec
 EXECUTE
 -------
 Executes a single PL/SQL statement or runs a stored procedure.
 EXEC[UTE] statement

SQL>

安装成功。

验证sqlplus help信息的来源

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\zlf>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 6月 15 16:35:58 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn scott/tiger@demodb
已连接。
SQL> show user
USER 为 "SCOTT"

SQL> alter session set sql_trace=true;  -- 打开 sql trace功能

会话已更改。

SQL> help exec

 EXECUTE
 -------

 Executes a single PL/SQL statement or runs a stored procedure.

 EXEC[UTE] statement


SQL>

此时,查看后台的user trace文件,位置:$ORACLE_BASE/admin/SID/udump,找到对应的trace 文件

下面是我的trace file内容:

由于trace文件内容很多,这里我只列出关键的部分

[oracle@redhat4 udump]$ cat demo_ora_4654.trc | grep HELP
SELECT INFO FROM SYSTEM.HELP WHERE UPPER(TOPIC) LIKE :1 ORDER BY TOPIC,SEQ
SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB) opt_param('parallel_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C2),0) FROM (SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("HELP") FULL("HELP") NO_PARALLEL_INDEX("HELP") */ 1 AS C1, CASE WHEN UPPER("HELP"."TOPIC") LIKE :B1 THEN 1 ELSE 0 END AS C2 FROM "SYSTEM"."HELP" "HELP") SAMPLESUB
STAT #2 id=2 cnt=978 pid=1 pos=1 obj=9949 op='TABLE ACCESS FULL HELP (cr=9 pr=7 pw=0 time=2448 us)'

注意标红色的SELECT语句,此语句体现了信息存放在SYSTEM.HELP表中。

[oracle@redhat4 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 6月 15 16:55:42 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn system/manager
Connected.
SQL> desc help
 Name                                                                                Null?    Type
 ----------------------------------------------------------------------------------- -------- --------------------------------------------------------
 TOPIC                                                                               NOT NULL VARCHAR2(50)
 SEQ                                                                                 NOT NULL NUMBER
 INFO                                                                                         VARCHAR2(80)

SQL> select info from help where lower(topic)='exec';

no rows selected

SQL> select info from help where lower(topic)='execute';

INFO
--------------------------------------------------------------------------------

 EXECUTE
 -------

 Executes a single PL/SQL statement or runs a stored procedure.

 EXEC[UTE] statement


8 rows selected.

SQL>

证明了sqlplus的help信息确实是来自system.help表

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

历史五千年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值