返璞归真:Oracle实例级别和会话级别的参数设置辨析

杨廷琨(yangtingkun)

云和恩墨 CTO

高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主

参数文件是Oracle数据库文件中级别最低,也是最基本的文件,但是也是数据库实例启动第一个涉及的文件。如果参数文件缺失或者某些参数设置错误,数据库就无法启动。

Oracle实例级别和会话级别的参数有时候容易混淆,必须清晰的明确这两者的差别,才能在种种变更中成竹在胸。我们来看看V$PARAMETER 和 V$SYSTEM_PARAMETER 视图的区别。

一般在查询初始化参数的时候都习惯性的使用 SHOW PARAMETER,也就是查询 V$PARAMETER 视图。但是有些时候查询V$PARAMETER视图得到的结果并不准确

我们通过query_rewrite_enabled这个参数来做一个验证。

SQL> show parameter query_rewrite_enabled NAME TYPE VALUE ------------------------------------ ----------- -------------------- query_rewrite_enabled string TRUE SQL> select name, value 2 from v$parameter 3 where name = 'query_rewrite_enabled'; NAME VALUE ---------------------------------------- ---------------------------- query_rewrite_enabled TRUE SQL> select name, value 2 from v$system_parameter 3 where name = 'query_rewrite_enabled'; NAME VALUE ---------------------------------------- ---------------------------- query_rewrite_enabled TRUE

这时候如果在会话级修改 query_rewrite_enabled 这个初始化参数:

SQL> alter session set query_rewrite_enabled = false; 会话已更改。 SQL> show parameter query_rewrite_enabled NAME TYPE VALUE ------------------------------------ ----------- ------------------- query_rewrite_enabled string FALSE SQL> select name, value 2 from v$parameter 3 where name = 'query_rewrite_enabled'; NAME VALUE ---------------------------------------- --------------------------- query_rewrite_enabled FALSE SQL> select name, value 2 from v$system_parameter 3 where name = 'query_rewrite_enabled'; NAME VALUE ---------------------------------------- --------------------------- query_rewrite_enabled TRUE

可以看到,show parameter 和查询 v$parameter 视图的结果都是 FALSE,而刚才做的修改只是会话级,并没有修改系统的初始化参数。

我们应该形成的知识常识:V$PARAMETER 视图反映的是初始化参数在当前会话中生效的值,而 V$SYSTEM_PARAMETER 反映的才是实例级上的初始化参数。

再来看看延迟参数修改的情况:

SQL> select name, value 2 from v$parameter 3 where name = 'recyclebin'; NAME VALUE ---------------------------------------- ------------------------------------ recyclebin on SQL> select name, value 2 from v$system_parameter 3 where name = 'recyclebin'; NAME VALUE ---------------------------------------- ------------------------------------ recyclebin on SQL> alter system set recyclebin = off deferred scope = memory; 系统已更改。 SQL> select name, value 2 from v$parameter 3 where name = 'recyclebin'; NAME VALUE ---------------------------------------- ------------------------------------ recyclebin on SQL> select name, value 2 from v$system_parameter 3 where name = 'recyclebin'; NAME VALUE ---------------------------------------- ------------------------------------ recyclebin OFF

结果和前面的恰好反过来,v$parameter 视图中的结果没有发生变化,而 v$system_parameter 视图的结果变成了 OFF。

这是因为延迟修改对数据库中当前存在的会话不生效,因此反映当前会话情况的 v$parameter 视图结果不变,而对于系统而言,初始化参数已经改变,而且所有新建会话的参数也会改变,所以 v$system_parameter 视图的结果发生了改变。

SQL> CONN YANGTK/YANGTK@YTK111 已连接。 SQL> select name, value 2 from v$parameter 3 where name = 'recyclebin'; NAME VALUE ---------------------------------------- --------------------------- recyclebin OFF SQL> select name, value 2 from v$system_parameter 3 where name = 'recyclebin'; NAME VALUE ---------------------------------------- --------------------------- recyclebin OFF

根据这两个例子可以获得的常识是:利用 V$PARAMETER 视图获取系统的启动初始化参数是不准确的,应该从 V$SYSTEM_PARAMETER 视图来获取

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

mysql 索引碎片修复

image.png 在长期的数据更改过程中,索引文件和数据文件,都会产生空洞和碎片,会降低索引的运行效率 查看碎片 SHOW TABLE STATUS LIKE...

3515
来自专栏杨建荣的学习笔记

迁移式升级的测试(二)(r10笔记第35天)

在之前写的一篇博文中,自己是打算对一台数据库使用Data Guard+TTS的方式来完成数据迁移和升级的工作,迁移式升级的新方案测试 (r10笔记第30天) 整...

3354
来自专栏逸鹏说道

触发器在渗透中的利用

0x01 什么是触发器: 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的...

3375
来自专栏乐沙弥的世界

临时表空间的管理与受损恢复

      Oracle 临时表空间是Oracle数据库的重要组成部分,尽管该部分并没有cont体系结构上得以展现,但其重要地位也是不容忽视的。尤其是 对于大...

1083
来自专栏数据和云

返璞归真:实例会话RAC条件下的笛卡尔积种参数可能性

? 杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主 参数文件是Or...

28510
来自专栏Clive的技术分享

Mysql锁相关锁的分类锁的适用场景MyISAM表锁MyISAM写阻塞读的例子MyISAM读阻塞写例子MyISAM并发插入MyISAM读写并发MyISAM锁调度调节MyISAM锁调度行为解决读写冲突的

锁类型/引擎 行锁 表锁 页锁 MyISAM 有 InnoDB 有 有 BDB(被InnoDB取代) 有 有 锁的分类 表...

4255
来自专栏乐沙弥的世界

MySQL 慢查询日志(Slow Query Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日...

802
来自专栏.NET技术

经典SQL语句大全之提升

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1(仅用于S...

1853
来自专栏杨建荣的学习笔记

MySQL在RR隔离级别下的unique失效和死锁模拟

今天在测试MySQL事务隔离级别的时候,发现了一个有趣的问题,也参考了杨一之前总结的一篇。http://blog.itpub.net/22664653/view...

3586
来自专栏.NET技术

经典SQL语句大全之数据开发

1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Str...

1595

扫码关注云+社区