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

相关文章

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

通过shell定制ash脚本(r3笔记第33天)

ash是在10g以来一个很有用的特性,能够作为awr的补充,对于排查一些历史的问题能够提供更加详细和针对性的数据。 当然个人在使用ash的时候感觉最慢的地方就是...

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

一个oracle蠕虫病毒 (r4笔记第60天)

关于计算机病毒,说起来内容就很丰富了,但是第一次听到关于oracle中的病毒时,却感觉很新鲜。这是一个蠕虫病毒,距离现在已经有10年了,但是现在看起来还是能够借...

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

关于两个简单问题的分析(r9笔记第10天)

工作中碰到问题当然是见怪不怪了,而处理这些问题也是我们的价值所在。 今天处理了几个看起来比较有意思的小问题,当然究其原因,要不是不规范,要不就是基本功不够扎实。...

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

alert日志中的两种ORA错误分析(r6笔记第21天)

今天在巡检系统的时候,发现alert日志中有两种类型的ora错误。 Errors in file /U01/app/oracle/diag/rdbms/XX/...

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

浅谈exp/imp(下) (r5笔记第84天)

相关链接:浅谈exp/imp(上) (r5笔记第81天) 你可能 不了解的dump文件 在工作中,dump文件对于dba而言是再平常不过的文件了。不过因为dum...

3099
来自专栏沃趣科技

Log Miner 挖挖挖

Log Miner是Oracle自Oracle 8i以后推出的一个可以分析数据库redo log和archivelog内容的工具,可以通过日志分析所有对数据库的...

695
来自专栏数据和云

案发现场:被注入的软件及 ORA-600 16703 灾难的恢复

最近帮助一个客户恢复数据库,遇到了如下这个问题。让我们再一次惊醒于数据安全,如果不做好防范,问题总是会来得猝不及防。

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

浅谈MySQL中的事务隔离级别(r11笔记第86天)

之前写了一篇浅谈事务(一),算是对事务的一个基本认识,今天来简单总结一下事务的隔离级别,虽然是老掉牙的知识点,重温一下还是值得的。 在MySQL中基...

3269
来自专栏逸鹏说道

在SQL Server里如何进行页级别的恢复

在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作。假设在SQL Server里你有一个损坏的页,你要从最近...

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

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

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

3244

扫码关注云+社区