sqlplus文件查看自帶oracle命令的執行過程

問題描述:看到一篇文章 在$ORACLE_HOME/bin/sqlplus中可以查看到數據庫命令的查詢語句。可以直接編輯sqlplus文件,查到到我們平時標準系統命令的原腳本,但是自己進行編輯查看卻是個二進制亂碼文件,這個應該怎麼樣才能看到sqlplus原本的腳本文件呢?

 

 

手動編輯文件得到的結果是亂碼

[oracle@orcl sqlplus]$ vim /u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus

 

 

 

 

經過大佬指點,使用這個命令可以得到源碼

[oracle@orcl bin]$ strings $ORACLE_HOME/lib/libsqlplus.so

[oracle@orcl admin]$ strings $ORACLE_HOME/lib/libsqlplus.so > /home/oracle/sqlplus.txt

 

測試了一些命令,基本只能得到show 一些命令的查詢過程,後續接着看一看

show sga

[oracle@orcl admin]$ strings $ORACLE_HOME/lib/libsqlplus.so | grep SGA
SELECT DECODE(null,'','Total System Global Area','') NAME_COL_PLUS_SHOW_SGA,   SUM(VALUE), DECODE (null,'', 'bytes','') units_col_plus_show_sga FROM V$SGA    UNION ALL    SELECT NAME NAME_COL_PLUS_SHOW_SGA , VALUE,    DECODE (null,'', 'bytes','') units_col_plus_show_sga FROM V$SGA

 

 

 

 

查看show的命令

SQL> help show

 SHOW
 ----

 Shows the value of a SQL*Plus system variable, or the current
 SQL*Plus environment. SHOW SGA requires a DBA privileged login.

 SHO[W] option

 where option represents one of the following terms or clauses:
     system_variable
     ALL
     BTI[TLE]
     ERR[ORS] [{FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER
        | VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS} [schema.]name]
     LNO
     PARAMETERS [parameter_name]
     PNO
     RECYC[LEBIN] [original_name]
     REL[EASE]
     REPF[OOTER]
     REPH[EADER]
     SGA
     SPOO[L]
     SPPARAMETERS [parameter_name]
     SQLCODE
     TTI[TLE]
     USER

 

show SQLCODE  沒有過濾出來相關命令

[oracle@orcl ~]$ strings $ORACLE_HOME/lib/libsqlplus.so | grep sqlcode
sqlcode

 

show RECYCLEBIN

[oracle@orcl ~]$ strings $ORACLE_HOME/lib/libsqlplus.so | grep RECYCLEBIN
objectname_plus_show_recyc FORMAT a30 HEADING 'RECYCLEBIN NAME'
SHOW RECYCLEBIN
SELECT ORIGINAL_NAME ORIGNAME_PLUS_SHOW_RECYC,OBJECT_NAME OBJECTNAME_PLUS_SHOW_RECYC,TYPE OBJTYPE_PLUS_SHOW_RECYC,DROPTIME DROPTIME_PLUS_SHOW_RECYC FROM USER_RECYCLEBIN WHERE CAN_UNDROP='YES'

 

 

 

可以看到,在這裏面也只是能查看到很少一部分腳本的查詢語句,對sqlplus中一些系統自帶的執行命令是怎麼來的和執行的一個過程比較好奇,希望大佬可以指點

Tags: