让sqlplus 里的show parameter 直接显示oracle隐含参数

简介: 本文整理自网络:http://f.dataguru.cn/thread-171753-1-1.html Oracle启动用到了初始化参数,通常我们都可以在sqlplus里用show parameter 来获得。

本文整理自网络:http://f.dataguru.cn/thread-171753-1-1.html

Oracle启动用到了初始化参数,通常我们都可以在sqlplus里用show parameter 来获得。而Oracle为了debug 或者解决一些特殊的问题,还提供了一些以“_”开头的隐含参数。 网络上有一些script可以让我们轻松检查这些隐含参数. 但是,有没有想过,我们可以直接在sqlplus 用show parameter 来获取这些隐含参数呢?

答案是可以的。

下面,我将演示一下如何用sqlplus 里的 show parameter来直接查看Oracle隐含参数.

1。首先,我们先要知道,sqlplus怎样通过show parameter获得参数的。通过sql_trace的方式可以发现。
[php]
sqlplus serol/luo

alter session set sql_trace=true;

show parameter optimizer

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------

optimizer_dynamic_sampling           integer                          1
optimizer_features_enable            string                           9.2.0.1
optimizer_index_caching              integer                          0
optimizer_index_cost_adj             integer                          1
optimizer_max_permutations           integer                          2000
optimizer_mode                       string                           RULE

exit
...
[/php]
到udump底下找到trace文件,里面的最主要的语句是:
[php]
SELECT NAME name_col_plus_show_param,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',6,'big
integer','unknown') TYPE,VALUE value_col_plus_show_param 
FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPP
ER('%optimizer%') ORDER BY name_col_plus_show_param,
ROWNUM

...
[/php]
可以看到,sqlplus的show parameter实际上就是查询V$PARAMETER .



2.  看看 v$parameter的定义。
[php]
SELECT * FROM v$fixed_view_definition
WHERE view_name = 'V$PARAMETER';

select  NUM , NAME , TYPE , VALUE , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIABLE , ISMODIFIED , 
ISADJUSTED , DESCRIPTION, UPDATE_COMMENT from GV$PARAMETER where inst_id = USERENV('Instance')


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

  select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,  
decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),  
decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,
'DEFERRED',
   3,'IMMEDIATE','FALSE'),  decode(bitand
(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'), 
    decode(bitand(ksppstvf,2),2,'TRUE','FALSE'),  ksppdesc, ksppstcmnt  
from x$ksppi x, x$ksppcv y 
where (x.indx = y.indx) and  (  (translate(ksppinm,'_','#') not like '#%')
  or (ksppstdf = 'FALSE') )
...
[/php]
看到上面最关键的 (translate(ksppinm,'_','#') not like '#%')的条件了吗?,就是它把开头为"_" 的隐含参数给过滤掉了。当然,ksppstdf = 'FALSE' 的条件是为了保证如果已经手动改过隐含参数,show parameter还会显示改隐含参数

3。我们可以伪造一个v$parameter, 去掉过滤"_"的条件,就可以大功告成了。

不过,毕竟是改动系统的内部设置,大家一定要小心为上。

一定要以一个仅用于数据库管理,不会参加任何程序活动的管理性数据库用户来伪造这个v$parameter,以免发生意外。而且,最好是在测试环境中玩,而不要跑到生产环境里面。下面假设这个用户名为:rollingpig.

以sys 登陆
[php]
connect / as sysdba

create view my_v$parameter_with_hidden  (NUM,NAME , TYPE 
, Value , ISDEFAULT  , ISSES_MODIFIABLE , ISSYS_MODIFIABLE ,ISMODIFIED  , ISADJUSTED, 

DESCRIPTION, UPDATE_COMMENT)

as 

  select x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,  
decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),  
decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',
   3,'IMMEDIATE','FALSE'),  decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'), 
    decode(bitand(ksppstvf,2),2,'TRUE','FALSE'),  
ksppdesc, ksppstcmnt  
from x$ksppi x, x$ksppcv y 
where (x.indx = y.indx);

grant select on my_v$parameter_with_hidden  to rollingpig;

以 rollingpig 用户连接,创建同义词:

create synonym v$parameter for sys.my_v$parameter_with_hidden  ;
...
[/php]


4。大功告成,测试一下吧

以rollingpig 用户登陆:
[php]
show parameter optimizer

SQL> show parameter optimizer

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
_optimizer_adjust_for_nulls          boolean                          TRUE
_optimizer_choose_permutation        integer                          0
_optimizer_cost_model                string                           CHOOSE
_optimizer_degree                    integer                          0
_optimizer_dyn_smp_blks              integer                          32
_optimizer_join_sel_sanity_check     boolean                          FALSE
_optimizer_mode_force                boolean                          TRUE
_optimizer_new_join_card_computation boolean                          TRUE
_optimizer_percent_parallel          integer                          101
_optimizer_search_limit              integer                          5
_optimizer_skip_scan_enabled         boolean                          TRUE
_optimizer_sortmerge_join_enabled    boolean                          TRUE
_optimizer_system_stats_usage        integer                          0
_optimizer_undo_changes              boolean                          FALSE
_optimizer_undo_cost_change          string                           9.2.0.1
optimizer_dynamic_sampling           integer                          1
optimizer_features_enable            string                           9.2.0.1
optimizer_index_caching              integer                          0
optimizer_index_cost_adj             integer                          1
optimizer_max_permutations           integer                          2000
optimizer_mode                       string                           RULE

...
[/php]
以"_"开头的隐含参数一个给跑出来了,optimizer开头的还真不少  

还有一些明显是测试用的hidden parameter
[php]
SQL> show parameter test

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
_ipc_test_failover                   integer                          0
_ipc_test_mult_nets                  integer                          0
_test_ksusigskip                     integer                          5
_test_param_1                        integer                          25
_test_param_2                        string
_test_param_3                        string
_test_param_4                        string
_test_param_5                        integer                          25
_test_param_6                        big integer                      0
...
[/php]
最后重申一点:

是在测试环境中玩,不要跑到生产环境里面中玩哦……


相关文章
|
5月前
|
SQL Oracle 关系型数据库
Oracle的cursor_sharing参数详解
总的来说,cursor_sharing参数是一个非常重要的参数,它可以影响Oracle数据库的性能和稳定性。因此,我们需要根据我们的应用程序的特性和需求,以及我们的性能和稳定性的需求,来选择最合适的值。
248 23
|
10月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
235 1
|
Oracle 关系型数据库 Java
Oracle 19c 查看隐含参数视图
Oracle 19c 查看隐含参数视图
244 7
|
SQL Oracle Unix
Oracle sqlplus failed on AIX platform(/usr/lib/lib
Oracle sqlplus failed on AIX platform(/usr/lib/lib
107 1
|
SQL 监控 Oracle
Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
|
运维 Oracle 关系型数据库
Oracle服务器参数文件:数据王国的“调控大师”
【4月更文挑战第19天】Oracle服务器参数文件,数据库的“调控大师”,掌控着内存管理、进程调度等关键设置。通过参数调整如SGA_MAX_SIZE和PROCESSES,实现性能优化和故障防控。虽然挑战重重,但成功的性能调优带来无尽成就感。它在备份恢复中也扮演重要角色,保障数据一致性与可用性。成为真正的“调控大师”,为数据王国效力!
修改oracle11g的awr快照参数
修改oracle11g的awr快照参数
124 0
|
12天前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
185 93
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
24天前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
89 8

推荐镜像

更多