刚好今天看到有人在群里问了一个问题,自己刚好有点兴趣。
以下是数据库的测试版本:
-
SYS@proc> select * from v$version where rownum=1;
-
-
BANNER
-
--------------------------------------------------------------------------------
-
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
问题是如何让下边value的内容显示在一行上边。
-
SYS@proc> show parameter control_files
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
control_files string /u01/app/oracle/oradata/proc/c
-
ontrol01.ctl, /u01/app/oracle/
-
oradata/proc/control02.ctl
于是做了下10046:
-
SYS@proc> alter session set events '10046 trace name context forever,level 12';
-
-
Session altered.
-
-
SYS@proc> show parameter control_files
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
control_files string /u01/app/oracle/oradata/proc/c
-
ontrol01.ctl, /u01/app/oracle/
-
oradata/proc/control02.ctl
-
SYS@proc> alter session set events '10046 trace name context off';
-
-
Session altered.
-
-
SYS@proc> select value from v$diag_info where name like '%De%';
-
-
VALUE
-
--------------------------------------------------------------
-
/u01/app/oracle/diag/rdbms/proc/proc/trace/proc_ora_3282.trc
查看10046产生的trace,可以看到show parameter control_files实际上是执行了下边的sql语句:
-
SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',6,'big integer', 'unknown') TYPE,DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM
-
FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER(:NMBIND_SHOW_OBJ)
-
ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM
-
END OF STMT
-
PARSE #139976962042672:c=0,e=429,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=1483720550329399
-
BINDS #139976962042672:
-
Bind#0
-
oacdty=01 mxl=32(30) mxlc=00 mal=00 scl=00 pre=00
-
oacflg=20 fl2=1000000 frm=01 csi=852 siz=32 off=0
-
kxsbbbfp=7f4eed1966e0 bln=32 avl=15 flg=05
-
value="%control_files%"
所以,value列实际上就是VALUE_COL_PLUS_SHOW_PARAM,所以对该列col VALUE_COL_PLUS_SHOW_PARAM for a100即可。
-
SYS@proc> show parameter control_files
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
control_files string /u01/app/oracle/oradata/proc/c
-
ontrol01.ctl, /u01/app/oracle/
-
oradata/proc/control02.ctl
-
SYS@proc> col VALUE_COL_PLUS_SHOW_PARAM for a100
-
SYS@proc> show parameter control_files
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ----------------------------------------------------------------------------------------------------
-
control_files string /u01/app/oracle/oradata/proc/control01.ctl, /u01/app/oracle/oradata/proc/control02.ctl
尝试执行该sql语句:
-
SYS@proc> SELECT NAME NAME_COL_PLUS_SHOW_PARAM,
-
DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',6,'big integer', 'unknown') TYPE,
-
DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM
-
FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER('%control_files%') ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM;
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ----------------------------------------------------------------------------------------------------
-
control_files string /u01/app/oracle/oradata/proc/control01.ctl, /u01/app/oracle/oradata/proc/control02.ctl
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30174570/viewspace-2139919/
,如需转载,请注明出处,否则将追究法律责任。