SQL*PLus帮助手册(SP2-0171)

   
SQL*PLus帮助手册(SP2-0171)
           
转自:http://blog.csdn.net/leshami/article/details/8852568
           
对于经常在SQL*Plus下工作的大师们而言,总是时不时查询SQL*Plus的帮助命令。着实太多了,记不住。
SQL*Plus下直接提供了help命令来帮助描述所有命令的用法。嘎嘎,再也不用查SQL*Plus reference了。
对于Oracle 10g缺省情况下,SQL*Plus的help手册并没有被安装,需要手动安装。
Oracle 10/11g下采用相同的安装方式,下面来描述一下help的安装与使用。

system@CNMMBO> help
SP2-0171: HELP system not available.

robin@SZDB:~> cd $ORACLE_HOME/sqlplus/admin/help      --脚本路径位于$ORACLE_HOME/sqlplus/admin/help目录下

robin@SZDB:/users/oracle/OraHome10g/sqlplus/admin/help> ls
helpbld.sql  helpdrop.sql  helpus.sql  hlpbld.sql

robin@SZDB:/users/oracle/OraHome10g/sqlplus/admin/help> head -40 hlpbld.sql
--
-- Copyright (c) Oracle Corporation 1983, 2003.  All Rights Reserved.
--
-- NAME
--    hlpbld.sql
--
-- DESCRIPTION
--    Builds the SQL*Plus HELP table and loads the HELP data from a
--    data file.  The data file must exist before this script is run.
--
-- USAGE
--    To run this script, connect as SYSTEM and pass the datafile to be
--    loaded as a parameter e.g.
--
--            sqlplus system/ @hlpbld.sql helpus.sql
--
--

DEFINE DATAFILE = &1

--
-- Create the HELP table
--

DROP TABLE HELP;
CREATE TABLE HELP
(
  TOPIC VARCHAR2 (50) NOT NULL,
  SEQ    NUMBER              NOT NULL,
  INFO  VARCHAR2 (80)
) PCTFREE 0 STORAGE (INITIAL 48K PCTINCREASE 0);

GRANT SELECT ON HELP TO PUBLIC;

--
-- Insert the data into HELP.
--

@@&DATAFILE

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

Table created.

Grant succeeded.
...

Commit complete.

View dropped.

--查看刚刚创建的表已经添加了978行
system@CNMMBO> select count(*) from help;

  COUNT(*)
----------
            978

--直接在命令提示符下输入help,则给出SQL*plus help的用法:HELP|? [topic]
--help index or ? index 则列出了当前sqlplus下所有可用命令

system@CNMMBO> help

  HELP
  ----

  Accesses this command line help system. Enter HELP INDEX or ? INDEX
  for a list of topics. In iSQL*Plus, click the Help button to display
  iSQL*Plus online help.
  You can view SQL*Plus resources at http://otn.oracle.com/tech/sql_plus/
  and the Oracle Database Library at http://otn.oracle.com/documentation/

  HELP|? [topic]

--切换别的帐户来测试help是否可用
system@CNMMBO> conn goex_admin/xxxxx
Connected.           

--下面的测试其他帐户也可以使用,因为在创建时创建了视图其授予了其他用户select 权限
goex_admin@CNMMBO> help index

Enter Help [topic] for help.

                        COPY                PAUSE                                      SHUTDOWN
  @@                      DEFINE            PRINT                                      SPOOL
                        DEL                  PROMPT                                    SQLPLUS
  ACCEPT              DESCRIBE        QUIT                                        START
  APPEND              DISCONNECT    RECOVER                                  STARTUP
  ARCHIVE LOG    EDIT                REMARK                                    STORE
  ATTRIBUTE        EXECUTE          REPFOOTER                              TIMING
  BREAK                EXIT                REPHEADER                              TTITLE
  BTITLE              GET                  RESERVED WORDS (SQL)        UNDEFINE
  CHANGE              HELP                RESERVED WORDS (PL/SQL)  VARIABLE
  CLEAR                HOST                RUN                                          WHENEVER OSERROR
  COLUMN              INPUT              SAVE                                        WHENEVER SQLERROR
  COMPUTE            LIST                SET
  CONNECT            PASSWORD        SHOW

--查看每一个命令的具体用法
--直接在提示符下help 或者 ?

goex_admin@CNMMBO> help define

  DEFINE
  ------

  Specifies a substitution variable and assigns a CHAR value to it, or
  lists the value and variable type of a single variable or all variables.

  DEF[INE] [variable] | [variable = text]

goex_admin@CNMMBO> help accept

  ACCEPT
  ------

  Reads a line of input and stores it in a given substitution variable.
  In iSQL*Plus, displays the Input Required screen for you to enter a
  value for the substitution variable.

  ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE]
  [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]

--有了它,再也不必为记不住的命令犯愁了。

-- Author : Robinson
-- Blog    : http://blog.csdn.net/robinson_0612


以下来自另一文
     
           
“SQL*PLUS 帮助不可用”解决步骤
           
转自:http://www.cnblogs.com/spatial/archive/2009/10/20/1587097.html

SQL*PLUS是oracle管理数据库最常用的一个CMD界面,其中的帮助系统会给我们执行一些命令带来快捷的指导和帮助,在oracle安装时此功能是默认安装的。有时候由于一些意外原因会失去此项功能,使用帮助系统会出现下面的错误:

SP2-0171: 帮助系统不可用。

以至于带来很多的不便和麻烦。下面是解决此问题的方法,也是官方推荐的方法步骤,在oracle帮助文档中均可获知,此处只是针对相应环境实践操作,给大家提供一个方便。


实践oracle版本信息:

SQL> select * from v$version;

BANNER
-------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE      11.1.0.6.0          Production
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 – Production

以system帐户登陆查询help情况:

SQL> conn system
输入口令:
已连接。

SQL> help
SP2-0171: 帮助系统不可用。

下面是重建帮助系统的步骤:

1,执行$ORACLE_HOME/sqlplus/admin/help/hlpbld.sql脚本,创建help帮助内容的表模式。

SQL> @E:\app\Administrator\product\11.1.0\db_1\sqlplus\admin\help\hlpbld.sql

2,执行$ORACLE_HOME/sqlplus/admin/help/helpus.sql脚本,则自动填充help内容

SQL> @E:\app\Administrator\product\11.1.0\db_1\sqlplus\admin\help\helpus.sql

3,查看help,则SQL*PLUS帮助系统可用

SQL> help

  HELP
  ----
  Accesses this command line help system. Enter HELP INDEX or ? INDEX for a list of topics.

  You can view SQL*Plus resources at http://www.oracle.com/technology/tech/sql_plus/

  and the Oracle Database Library at http://www.oracle.com/technology/documentation/

  HELP|? [topic]

 
Help帮助系统实则查询的是一张system帐户维护的help表,可以打开hlpbld.sql脚本仔细研究一下。如下表help模式定义摘取hlpbld.sql脚本:

CREATE TABLE HELP
(
  TOPIC VARCHAR2(50)    NOT NULL,
  SEQ    NUMBER              NOT NULL,
  INFO VARCHAR2 (80)
) PCTFREE 0 STORAGE (INITIAL 48K PCTINCREASE 0);

Helpus.sql脚本则是对help表进行内容的insert,下面即是其插入的内容(截取一部分):

INSERT INTO HELP VALUES ('@', 1, NULL);
INSERT INTO HELP VALUES ('@', 2, ' @ ("at" sign)');
INSERT INTO HELP VALUES ('@', 3, ' -------------');
INSERT INTO HELP VALUES ('@', 4, ' Runs the SQL*Plus statements in the specified script. The script can be');
INSERT INTO HELP VALUES ('@', 5, ' called from the local file system or a web server.');
INSERT INTO HELP VALUES ('@', 6, NULL);
INSERT INTO HELP VALUES ('@', 7, ' @ {url|file_name[.ext]} [arg ...]');
INSERT INTO HELP VALUES ('@', 8, NULL);
INSERT INTO HELP VALUES ('@', 9, ' where url supports HTTP and FTP protocols in the form:');
INSERT INTO HELP VALUES ('@', 10, NULL);
INSERT INTO HELP VALUES ('@', 11, '      http://host.domain/script.sql');
INSERT INTO HELP VALUES ('@', 12, NULL);
INSERT INTO HELP VALUES ('@@', 1, NULL);
                      ……

以system帐户登陆也可查询其help表定义:

SQL> conn system
输入口令:
已连接。

SQL> desc help
  名称                                                                          是否为空? 类型
  ----------------------------------------- -------- -------------------------
  TOPIC                                                                        NOT NULL VARCHAR2(50)
  SEQ                                                                            NOT NULL NUMBER
  INFO                                                                                            VARCHAR2(80)

也可以验证help表的定义,正好是帮助系统的内容所在。

Ok,SQL*PLUS的帮助系统大致其问题解决是这样的,具体的细节探索大家可以参考其oracle文档和脚本,来进一步研究oracle的内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值