http://www.cnblogs.com/spatial/archive/2009/10/20/1587097.html
“SQL*PLUS 帮助不可用”解决步骤
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模式定义摘取hepbld.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的内容。