返璞归真:RAC环境下不同实例的参数文件选择与设置

杨廷琨(yangtingkun)

云和恩墨 CTO

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

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

我们思考一个问题: V$SPPARAMETER 参数本身就包含了 SID 列,SPFILE 中本身就包含了所有实例的设置,那么查询 GV$SPPARAMETER 视图是否就意义不大呢,GV$SPPARAMETER 是否有意义?

看看这样一种情形:RAC 的各个节点可以使用统一的 SPFILE 启动,同样也可以选择不同的 SPFILE 来进行启动,这时 GV$SPPARAMETER 视图中获取结果,才是真正各个实例 SPFILE 中设置的结果,其意义由此体现。

这样说比较难以理解,看一个简单的例子:

SQL> select inst_id, name, value 2 from gv$system_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 SQL> select inst_id, sid, name, value 2 from gv$spparameter 3 where name = 'open_cursors'; INST_ID SID NAME VALUE ---------- ---------- ------------------------------ ------------------------------------ 1 * open_cursors 300 1 test1 open_cursors 500 1 test2 open_cursors 700 2 * open_cursors 300 2 test1 open_cursors 500 2 test2 open_cursors 700 已选择6行。 SQL> select inst_id, name, value 2 from gv$system_parameter 3 where name = 'spfile'; INST_ID NAME VALUE ---------- ------------------------------ -------------------------------------------------- 1 spfile +DATA/test/spfiletest.ora 2 spfile +DATA/test/spfiletest.ora

下面里面内存中参数来创建 SPFILE,并利用新建的 SPFILE 来启动当前实例:

SQL> create spfile='/export/home/oracle/spfiletest1.ora' from memory; 文件已创建。 SQL> host $ vi /export/home/oracle/inittest1.ora "/export/home/oracle/inittest1.ora" [New file] spfile=/export/home/oracle/spfiletest1.ora "/export/home/oracle/inittest1.ora" [New file] 2 lines, 44 characters $ exit SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup pfile=/export/home/oracle/inittest1.ora ORACLE 例程已经启动。 Total System Global Area 776896512 bytes Fixed Size 2098776 bytes Variable Size 246069672 bytes Database Buffers 524288000 bytes Redo Buffers 4440064 bytes 数据库装载完毕。 数据库已经打开。

下面检查 spfile 中的设置:

SQL> select inst_id, name, value 2 from gv$system_parameter 3 where name = 'spfile'; INST_ID NAME VALUE ---------- ------------------------------ -------------------------------------------------- 1 spfile /export/home/oracle/spfiletest1.ora 2 spfile +DATA/test/spfiletest.ora SQL> select inst_id, name, value 2 from gv$system_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 ---------- ------------------------------ -------------------------------------------------- test1 open_cursors 600 test2 open_cursors 400 SQL> select inst_id, sid, name, value 2 from gv$spparameter 3 where name = 'open_cursors'; INST_ID SID NAME VALUE ---------- ---------- ------------------------------ -------------------------------- 2 * open_cursors 300 2 test1 open_cursors 500 2 test2 open_cursors 700 1 test1 open_cursors 600 1 test2 open_cursors 400

可以看到,由于两个实例采用了不同的 SPFILE,导致两个实例上设置的对方实例的初始化参数值,与对方实例上当前设置值不符

在上面的例子中,两个实例上真正的参数设置查询方式为:

SQL> select inst_id, sid, name, value 2 from gv$spparameter 3 where name = 'open_cursors' 4 and substr(sid, -1) = to_char(inst_id); INST_ID SID NAME VALUE ---------- ---------- ------------------------------ ----------------------------------- 2 test2 open_cursors 700 1 test1 open_cursors 600

由此我们可以看到,在不同场景之下,获取真实参数的过程可能是一波三折,疏为不易的。

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

SQL Server 使用全文索引进行页面搜索

概述 全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询。全文索引将有关重要的词及其位置的信息存储在数据库表的一列或多列中。全文索引是一...

3017
来自专栏Linyb极客之路

Java面试中常问的数据库方面问题

B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

893
来自专栏大闲人柴毛毛

Mysql性能优化

 1. 优化SQL   1)通过show status了解各种sql的执行频率         show status like 'Com_%' ...

35811
来自专栏Spark学习技巧

Java面试中常问的数据库方面问题

B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

962
来自专栏Java技术

告诉你38个MySQL数据库的小技巧!

培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习MySQL 5.6也不例外。 夯实基础 计算机领域的技术非常强调基础,刚开始...

501
来自专栏互联网杂技

SQL注入攻防入门详解

毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口。这几...

39710
来自专栏林欣哲

MySQL数据库开发规范知识点速查

数据库设计规范 命名规范 基本设计规范 索引设计规范 字段设计规范 SQL开发规范 操作行为规范 命名规范 对象名称使用小写字母并用下划线分割 禁止使用MySQ...

36611
来自专栏乐沙弥的世界

RMAN 提示符下执行SQL语句

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下...

913
来自专栏*坤的Blog

注入学习1:SQL注入语句大全

之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防.

2112
来自专栏Rgc

mysql数据库优化(二)

https://www.cnblogs.com/sevck/p/6733702.html

1282

扫码关注云+社区