show parameter 内部执行过程

使用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 FROM V$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

……………..

标签