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

来源:互联网 发布:怎么装修手机淘宝店铺 编辑:程序博客网 时间:2024/05/20 23:04
  
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 HELPtable and loads the HELP data from a
--   data file. The data file must exist before this script is run.
--
-- USAGE
--   To run this script, connectas SYSTEM and pass the datafile to be
--   loaded as a parametere.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. EnterHELP INDEX or ? INDEX
 for a list of topics. In iSQL*Plus, click theHelp button to display
 iSQL*Plus online help.
 You can view SQL*Plus resources athttp://otn.oracle.com/tech/sql_plus/
 and the Oracle Database Library athttp://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 aCHAR value to it, or
 lists the value and variable type of a singlevariable or all variables.

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

goex_admin@CNMMBO> help accept

 ACCEPT
 ------

 Reads a line of input and stores it in a givensubstitution variable.
 In iSQL*Plus, displays the Input Required screenfor 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] [PROMPTtext | 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. EnterHELP INDEX or ? INDEX for a list of topics.

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

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

 HELP|? [topic]

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

CREATE TABLE HELP
(
 TOPICVARCHAR2(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 inthe specified script. The script can be');
INSERT INTO HELP VALUES ('@', 5, ' called from the local filesystem 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 FTPprotocols 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
原创粉丝点击