前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >返璞归真:实例会话RAC条件下的笛卡尔积种参数可能性

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

作者头像
数据和云
发布2018-03-06 11:11:08
6180
发布2018-03-06 11:11:08
举报
文章被收录于专栏:数据和云

杨廷琨(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 视图获取的查询

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档