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

杨廷琨(yangtingkun)

云和恩墨 CTO

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

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

我们知道:使用 SHOW PARAMETER 查询,看到的是当前会话可以看到的初始化参数,那么这个参数导致是全局设置还是当前实例设置的,是从这个命令中看不到的

虽然 Oracle 提供了 GV$ 开头的初始化参数,可以用来查询两个实例上的设置,但是情况并不是这么简单的。我们可以初步思考一下:从实例级别和会话级别,再加上多个实例,这是一个笛卡尔积的可能性,如果没有清晰的思路,极有可能被输出搞得迷惑不已。

我们通过一个简单的例子来分析一下:

SQL> show parameter open_cursors NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300 SQL> alter system set open_cursors = 500 scope = both sid = 'test1'; 系统已更改。 SQL> disc 从 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options 断开 SQL> set instance test2 Oracle Database 11g Release 11.1.0.0.0 - Production SQL> conn sys as sysdba 输入口令: 已连接。 SQL> alter system set open_cursors = 400 scope = both sid = 'test2'; 系统已更改。 SQL> disc 从 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options 断开 SQL> set instance local Oracle Database 11g Release 11.1.0.0.0 - Production SQL> conn / as sysdba 已连接。

现在来看看不同的查询方法得到的结果:

SQL> select name, value 2 from v$parameter 3 where name = 'open_cursors'; NAME VALUE ------------------------------ -------------------------------- open_cursors 500 SQL> select inst_id, name, value 2 from gv$parameter 3 where name = 'open_cursors'; INST_ID NAME VALUE ---------- ------------------------------ --------------------------- 1 open_cursors 500 2 open_cursors 400 SQL> show parameter open_cursors NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 500 SQL> select sid, name, value 2 from v$spparameter 3 where name = 'open_cursors'; SID NAME VALUE ---------- ------------------------------ --------------------------- * open_cursors 300 test1 open_cursors 500 test2 open_cursors 400 SQL> show spparameter open_cursors SID NAME TYPE VALUE -------- ----------------------------- ----------- --------------- * open_cursors integer 300 test2 open_cursors integer 400 test1 open_cursors integer 500

似乎除了看不到全局设置外,GV$PARAMETER 参数和 V$SPPARAMETER 没有什么不同,其实不然,如果 alter system set 的时候只修改了 spfile 或只修改了 memory 参数,结果就会不同:

SQL> alter system set open_cursors = 600 scope = memory sid = 'test1'; 系统已更改。 SQL> alter system set open_cursors = 700 scope = spfile sid = 'test2'; 系统已更改。 SQL> select name, value 2 from v$parameter 3 where name = 'open_cursors'; NAME VALUE ------------------------------ -------------------------------------------------- open_cursors 600 SQL> select inst_id, name, value 2 from gv$parameter 3 where name = 'open_cursors'; INST_ID NAME VALUE ---------- ------------------------------ -------------------------------------------------- 1 open_cursors 600 2 open_cursors 400 SQL> select sid, name, value 2 from v$spparameter 3 where name = 'open_cursors'; SID NAME VALUE ---------- ------------------------------ -------------------------------------------------- * open_cursors 300 test1 open_cursors 500 test2 open_cursors 700

从上面的对比就可以看出,通过 GV$ 视图访问的结果和 SPFILE 中包含的信息其实是两回事。

除了上面介绍的几种视图之外,CREATE PFILE 其实也是一个不错的选择,在10g 以前只能 CREATE PFILE FROM SPFILE,得到的结果类似于对 VSPPARAMETER 视图的查询,而11g增加了 CREATE PFILE FROM MEMORY 选项,这个得到的结果类似于从 GV$SYSTEM_PARAMETER 视图获取的查询

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MYSQL轻松学

MySQL 面试选择题15道(单选)

1、MySQL数据库四种特性,不包括() A.原子性 B.事务性 C.一致性 D.隔离性 2、MySQL报错error 1062 的意思是() A.连接数据库失...

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

MySQL Profile在5.7的简单测试(r10笔记第50天)

MySQL Profile对于分析执行计划的开销来说,还是有一定的帮助,至少在分析一些性能问题的时候有很多的参考依据。 我在5.6, 5.7版本中进行了测试,没...

3285
来自专栏用户2442861的专栏

MySQL详解--锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如...

963
来自专栏文渊之博

比较列存储索引与行索引

原因:     之前已经写过一篇关于列存储索引的简介https://cloud.tencent.com/developer/article/1032222,很粗...

2256
来自专栏腾讯云Elasticsearch Service

mysql数据实时同步到Elasticsearch

业务需要把mysql的数据实时同步到ES,实现低延迟的检索到ES中的数据或者进行其它数据分析处理。本文给出以同步mysql binlog的方式实时同步数据到ES...

4.5K7
来自专栏企鹅号快讯

从商用到开源:15个维度,全面剖析DB2与MySQL数据库的差异

编辑手记 MySQL是目前最流行的开源数据库,由于其部署方便,运维简单,被广泛用于互联网的各个领域。随着整体IT架构的变更,传统的金融,电信业务,也逐渐走上从商...

2419
来自专栏乐沙弥的世界

PL/SQL 下SQL结果集以html形式发送邮件

      在运维的过程中,有时候需要定时将SQL查询的数据结果集以html表格形式发送邮件,因此需要将SQL查询得到的结果集拼接成html代码。对于这种情形通...

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

数据紧急修复之启用错误日志 (r2第12天)

昨晚对测试环境进行了升级,同步了部分生产的数据。整个过程比较顺利,但是在最后一步启用foreign key constraint的时候报了错误。 ora-022...

3019
来自专栏Clive的技术分享

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

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

4595
来自专栏数据和云

【云和恩墨大讲堂】谈Oracle表新增字段的影响

作者简介 ? 刘晨,网名bisal,Oracle 10g/11g OCM,并国内首批Oracle YEP成员,博客:blog.itpub.net/bisal 很...

3207

扫码关注云+社区

领取腾讯云代金券