返璞归真:实例会话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 条评论
登录 后参与评论

相关文章

来自专栏Greenplum

Greenplum常见创建表方式与说明

drop table if exists test_head; create table test_head(id int primary key) dist...

1180
来自专栏乐沙弥的世界

ORA-31623: a job is not attached to this session via the specified handle

    在使用Oracel Datapump API时碰到ORA-31623(a job is not attached to this session via...

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

归档模式下四种完全恢复的场景(r6笔记第8天)

在数据的备份恢复中,基本都在使用rman来做了,但是从数据库的内部原理来说,对于介质恢复,其实还是做两件事,restore和recover. restore是一...

3137
来自专栏大魏分享(微信公众号:david-share)

PowerVM虚拟化环境下 CPU 利用率的监控与探究

本文主要介绍在 PowerVM 虚拟化环境下,微分区 CPU 利用率的监控方法,并且深入讨论在虚拟化环境下,CPU 的调度原理。 普通 LPAR CPU 利用率...

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

关于long类型的转换(r3笔记第84天)

在oracle中对于long类型的处理时很纠结的。最开始引入这个数据类型的时候是对原有数据类型的补充,但是后面发现还是碰到了一些问题,使用Lob类型代替了。但是...

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

使用impdp不当导致的数据丢失问题(r5笔记第1天)

今天有个朋友问我们一个问题,说他在使用了impdp导入数据的时候,使用了TABLE_EXISTS_ACTION=REPLACE这个选项,结果现在数据都给覆盖了。...

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

手工创建/删除数据库的步骤

今天和大家分享下数据库的创建和删除的步骤,里面有很多细节需要大家考虑。创建数据库不只是一个create database语句。删除数据库 drop databa...

3046
来自专栏数据库新发现

CTAS、Nologging以及数据库运行模式

http://www.itpub.net/showthread.php?threadid=242761

634
来自专栏数据和云

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

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

3406
来自专栏技术小黑屋

BashBites:Check Files

Here is a reference material from Stackoverflowhttp://stackoverflow.com/question...

742

扫码关注云+社区