“SQL*PLUS 幫助不可用”解決步驟

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表的定義,正好是幫助系統的內容所在。

OkSQL*PLUS的幫助系統大致其問題解決是這樣的,具體的細節探索,大家可以參考其oracle文檔和腳本,來進一步研究oracle的內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章