`
mikixiyou
  • 浏览: 1098751 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353082
社区版块
存档分类
最新评论

用show parameter也能显示隐含参数

阅读更多

Oracle 数据库启动时用到的数据库初始化参数,我们通常是在 sqlplus 中使用 show parameter 命令来获取。但这里看到只会是一些公开的参数,和已经修改的隐含参数。 Oracle 还有一批隐含参数,在 debug 或者实现某些功能时非常有用。

在网上,你可以很方便的查到如何查询这些隐含参数。但是,如果我还想继续使用 show parameter 方法显示隐含参数呢?这该如何实现?

(miki西游 @mikixiyou的文档:原文链接: http://mikixiyou.iteye.com/blog/1550296

我在这里介绍一个方法,来实现这个目标。介绍这个方法的目的不仅仅是为了实现 show parameter 可以显示隐含参数,还包括如何分析 show parameter 的实现过程。在遇到数据库问题诊断需求时,这个方法,您也可以参考一下。

首先,我们分析 show parameter 这个命令是如何实现显示初始化参数值的。

登录 sqlplus / as sysdba

使用 alter session set sql_trace=true; 追踪 show parameter 的执行过程。

 

SQL> alter session set sql_trace=true;

Session altered.

 

SQL> show parameter "_pga_max_size"

SQL> host; 

bash-3.2$ more /u01/oracle/app/oracle/admin/htzq/udump/htzq2_ora_19678.trc

/u01/oracle/app/oracle/admin/htzq/udump/htzq2_ora_19678.trc

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

ORACLE_HOME = /u01/oracle/app/oracle/product/10.2.0/db

System name:     Linux

Node name:       webdg2

Release:         2.6.18-92.el5

Version:         #1 SMP Tue Apr 29 13:16:15 EDT 2008

Machine:         x86_64

Instance name: htzq2

Redo thread mounted by this instance: 2

Oracle process number: 30

Unix process pid: 19678, image: oracle@webdg2 (TNS V1-V3)

 

=====================

=====================

PARSING IN CURSOR #2 len=290 dep=0 uid=0 oct=3 lid=0 tim=1307409201601477 hv=1905048613 ad='c9e347d8'

SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',         6,'big integer', 'un

known') TYPE,DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER('%_pga_max_size%') ORDER BY NAME_

COL_PLUS_SHOW_PARAM,ROWNUM

END OF STMT

PARSE #2:c=4999,e=4042,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=1307409201601471

EXEC #2:c=0,e=63,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1307409201601611

FETCH #2:c=4999,e=5583,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1307409201607254

bash-3.2$ exit

exit

 

 

结果显示 ,show parameter 就是查询一下 V$PARAMETER 视图。

 

接着,我们就分析 V$PARAMETER 视图的定义

 

SQL> SELECT * FROM v$fixed_view_definition WHERE view_name = 'V$PARAMETER';

VIEW_NAME
------------------------------
VIEW_DEFINITION
--------------------------------------------------------------------------------
V$PARAMETER
select  NUM , NAME , TYPE , VALUE , DISPLAY_VALUE, ISDEFAULT , ISSES_MODIFIABLE
, ISSYS_MODIFIABLE , ISINSTANCE_MODIFIABLE, ISMODIFIED , ISADJUSTED , ISDEPRECAT
ED, DESCRIPTION, UPDATE_COMMENT, HASH  from GV$PARAMETER where inst_id = USERENV
('Instance')

 

SQL> r

   1* SELECT * FROM v$fixed_view_definition WHERE view_name = 'GV$PARAMETER'

 

VIEW_NAME

------------------------------

VIEW_DEFINITION

--------------------------------------------------------------------------------

GV$PARAMETER

select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl, ksppstdf,   decode

(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),   decode(bitand(ksppiflg/65536,3),1,'I

MMEDIATE',2,'DEFERRED',                                   3,'IMMEDIATE','FALSE'),

   decode(bitand(ksppiflg,4),4,'FALSE',                                      decod

e(bitand(ksppiflg/65536,3), 0, 'FALSE', 'TRUE')),      decode(bitand(ksppstvf,7),

1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),   decode(bitand(ksppstvf,2),2,'TRUE','FALSE

'),   decode(bitand(ksppilrmflg/64, 1), 1, 'TRUE', 'FALSE'),   ksppdesc, ksppstcmn

t, ksppihash   from x$ksppi x, x$ksppcv y where (x.indx = y.indx) and   ((translat

e(ksppinm,'_','#') not like '##%') and     ((translate(ksppinm,'_','#') not like

'#%')       or (ksppstdf = 'FALSE') or       (bitand(ksppstvf,5) > 0)))

 

 

V$PARAMETER 的定义主要来源于 GV$PARAMETER 两个都是同义词,来源于v_$parameter和gv_$parameter。

这个定义语句中最关键部分 (translate(ksppinm,'_','#') not like '#%') 的条件。就是它把开头为 "_"  的隐含参数给过滤掉了。因为加了 ksppstdf = 'FALSE'  的条件,这保证如果已经手动改过隐含参数, show parameter 时会显示已经修改的隐含参数。

最后,重建 gv$parameter视图

create or replace view gv_$parameter(INST_ID, NUM, NAME , TYPE , VALUE, DISPLAY_VALUE, ISDEFAULT, ISSES_MODIFIABLE , ISSYS_MODIFIABLE , ISINSTANCE_MODIFIABLE, ISMODIFIED , ISADJUSTED , ISDEPRECATED , DESCRIPTION, UPDATE_COMMENT , HASH ) as 
select x.inst_id,
       x.indx + 1,
       ksppinm,
       ksppity,
       ksppstvl,
       ksppstdvl,
       ksppstdf,
       decode(bitand(ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
       decode(bitand(ksppiflg / 65536, 3),
              1,
              'IMMEDIATE',
              2,
              'DEFERRED',
              3,
              'IMMEDIATE',
              'FALSE'),
       decode(bitand(ksppiflg, 4),
              4,
              'FALSE',
              decode(bitand(ksppiflg / 65536, 3), 0, 'FALSE', 'TRUE')),
       decode(bitand(ksppstvf, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE'),
       decode(bitand(ksppstvf, 2), 2, 'TRUE', 'FALSE'),
       decode(bitand(ksppilrmflg / 64, 1), 1, 'TRUE', 'FALSE'),
       ksppdesc,
       ksppstcmnt,
       ksppihash
  from sys.x$ksppi x, sys.x$ksppcv y
 where (x.indx = y.indx) and (translate(ksppinm, '_', '#') not like '##%');


有一个疑问:
show parameter 时查的是同义词gv$parameter。该同义词无法删除重建。
SQL> create synonym GV$PARAMETER for GV_$PARAMETER;
create synonym GV$PARAMETER for GV_$PARAMETER
               *
ERROR at line 1:
ORA-00955: name is already used by an existing object


SQL> drop synonym GV$PARAMETER;
drop synonym GV$PARAMETER
             *
ERROR at line 1:
ORA-02030: can only select from fixed tables/views

 

0
0
分享到:
评论

相关推荐

    Oracle数据库游标连接超出解决方案

    show parameter open_cursors 2.修改游标数 alter system set open_cursors = 10000; 3.获取打开的游标数 select o.sid, osuser, machine, count(*) num_curs from v$open_cursor o, v$session s where user_...

    C# MessageBox.Show 方法重载

    2. `MessageBox.Show(string messageBoxText, string caption, MessageBoxButtons buttons)`:通过`buttons`参数,我们可以选择对话框上显示的按钮类型,例如`OK`、`Cancel`、`Yes`、`No`等,以适应不同的用户响应...

    x+show电子显示屏

    "X+Show电子显示屏"是一款专为各类活动、演出、展览等场合设计的专业级多媒体显示软件。这款绿色版软件强调的是轻便、无安装、即用即走的特点,旨在为用户提供便捷、高效的屏幕控制体验。在不牺牲功能的前提下,绿色...

    Oracle 11G参数文件

    ### Oracle 11G 参数文件详解 #### 一、参数文件概述 在Oracle 11G中,参数文件主要用于存储数据库实例所需的初始化参数。...通过本文档的介绍,希望能帮助读者更好地理解Oracle 11G参数文件的管理和使用方法。

    c语言显示位图ShowBMP

    标准c显示bmp useage: showbmp jjw.bmp ...1.图形要是8位或24位的bmp图象,否则不能显示 2.本程序已经编译通过,但是显示图形的时候有点慢,毕竟是边转换边显示嘛 ++++++++++++++ 铁木箱子 2005-5-15 ++++++++++++++

    计算上证50ETF期权隐含波动率并验证波动率

    # 使用implied_volatility函数计算隐含波动率 implied_sigma = implied_volatility(opt_data['last_price'][0], opt_data['pre_close'][0], opt_data['strike_price'][0], opt_data['days_to_exp'][0] / 365, ...

    Mysql show命令全面详解

    - show processlist:显示MySQL系统中正在运行的所有进程,也就是当前正在执行的查询。一般用户可以看到他们自己的进程,如果用户拥有process权限,可以查看所有人的进程,包括密码。 4. 显示表的详细信息 - show...

    解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    3. **使用`ImageShow`管理器**:`matplotlib`提供了一个交互式图像显示管理器`ImageShow`,它能更好地处理窗口的生命周期,可能有助于解决内存泄漏问题。可以通过设置`matplotlib`的后端来使用这个管理器。 ```...

    stm32之TFT触摸屏(ILI9320):通过LCD_ShowChar显示

    本知识点的讨论重点在于通过LCD_ShowChar函数在TFT触摸屏(使用ILI9320驱动芯片)上显示字符的过程。这个函数通常被视为实现文本显示的核心函数之一,尽管实现起来比较直接,但对于初次接触的人而言,细节可能稍显...

    Image Show 百度图片显示效果

    【标题】"Image Show 百度图片显示效果"主要涉及的是如何在网页中展示图片,尤其是借鉴百度图片的展示方式,提升用户体验。在互联网中,图片的展示方式直接影响到用户对网站内容的理解和感知,因此优化图片显示效果...

    ShowHidden(右键菜单中添加显示隐藏系统文件及扩展名)

    这使得用户无需进入文件夹选项或使用命令行就能快速切换显示隐藏文件的状态。这对于那些不熟悉操作系统的用户来说尤其方便。 静默安装参数"/s"表示该程序支持无提示安装,这意味着在执行安装过程中,用户不会看到...

    yuv_Show.rar_YUV vc_show_show YUV format_yuv显示_显示YUV

    这个"yuv_Show.rar_YUV vc_show_show YUV format_yuv显示_显示YUV"的压缩包似乎包含了一个用于在Windows环境下,使用Visual C++(VC)编译器直接显示YUV格式图像(具体为YV12格式)的源代码项目。下面将详细解释YUV...

    C# WinForm 之间调用、传递参数的例子 Owner

    3. **显示新窗体**:你可以使用`Show()`或`ShowDialog()`方法来显示新窗体。`Show()`会在不阻塞父窗体的情况下打开新窗体,而`ShowDialog()`会阻塞父窗体直到新窗体关闭。 4. **传递参数**:在创建新窗体实例时,...

    vga__show__extend.zip_J66_show_vga_vga显示

    "vga显示"是指使用VGA接口进行图像显示,这涉及到对显示器分辨率、刷新率等参数的设置。常见的VGA分辨率有640x480、800x600、1024x768等,而刷新率通常在60Hz以上,以避免闪烁现象。在FPGA实现的VGA显示中,开发者...

    C# MessageBox.show()的类型和使用

    C# MessageBox.show() 的类型和使用 C# 中的 MessageBox.show() 函数是一个非常常用的对话框函数,它可以弹出一个消息框,提示用户某些信息或让用户选择某些选项。在本文中,我们将详细介绍 MessageBox.show() 函数...

    text-show插件,容器大小固定,根据文字多少来调节显示的字体大小

    `text-show`插件的出现,使得开发者无需手动计算和调整字体尺寸,就能确保文本在不同设备和屏幕尺寸下都有良好的显示效果。这在创建响应式网页、移动端应用或者任何需要动态调整文本显示的应用场景中显得尤为实用。 ...

    Android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态

    本文将深入探讨如何使用Fragment配合底部菜单,通过show()和hide()方法来切换Fragment并保持其状态。 首先,让我们理解Fragment的基本概念。Fragment是一个可以包含UI组件的部分,它可以独立于Activity存在,也可以...

    mysql中show指令使用方法详细介绍

    本文主要介绍mysql数据库下show命令的主要用法  a. show tables或show tables from database_name; — 显示当前数据库中所有表的名称。  b. show databases; — 显示mysql中所有数据库的名称。  c. show columns ...

    DirectShow实现视频的实时显示并抓图,可以设置视频参数

    在本文中,我们将深入探讨如何使用DirectShow在Visual Studio 2013环境下实现视频的实时显示,并进行抓图功能,同时允许用户自定义图像参数和视频格式。 首先,要进行DirectShow编程,你需要在你的开发环境中安装...

    server_parameter_files.rar_oracle

    - **查看参数:** 使用`SHOW PARAMETER`或`SELECT * FROM V$PARAMETER`查询当前的参数设置。 - **修改参数:** 使用`ALTER SYSTEM SET`命令,如`ALTER SYSTEM SET db_block_size=8192 SCOPE=BOTH;`。 - **恢复到...

Global site tag (gtag.js) - Google Analytics