使用sql_trace的跟踪当前对话,可以获得show parameter 的内部操作,跟踪步骤如下:
SQL> alter session set sql_trace=true;
会话已更改。
SQL> show parameter sga;
NAME TYPE VALUE
----------------------------------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 1888M
sga_target big integer 700M
SQL> alter session set sql_trace=false;
会话已更改。
在跟踪文件中,我们可以找到这样一句话:
SELECT NAMENAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number', 6,'big integer', 'unknown') TYPE,DISPLAY_VALUEVALUE_COL_PLUS_SHOW_PARAM FROMV$PARAMETER WHEREUPPER(NAME) LIKE UPPER(:NMBIND_SHOW_OBJ) ORDERBY NAME_COL_PLUS_SHOW_PARAM,ROWNUM
注意:
这里的upper函数,使得show parameter 命令可以忽略大小写
这儿的别名设置:
NAME NAME_COL_PLUS_SHOW_PARAM
DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM
为什么执行show parameter命令的输出内容并未显示这两个别名,是因为在glogin.sql文件(SQLPLUS 启动时会执行的文件)中有如下设置:
COLUMN name_col_plus_show_param FORMAT a36heading NAME;
COLUMN value_col_plus_show_param FORMAT a30heading VALUE;
注意这里:
11g中的glogin.sql文件已经没有这些内容了,但是在sqlplus中依然有默认设置:
sys@ORCL>col
COLUMN global_name ON
NEW_VALUE GNAME
COLUMN value ON
FORMAT a40
COLUMN event ON
FORMAT a40
COLUMN file_name ON
FORMAT a50
COLUMN segment_name ON
FORMAT a30
……………..