☘️博主介绍☘️:
✨又是一天没白过,我是奈斯,DBA一名✨
✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️
❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣️❣️❣️
今天给大家介绍一下参数文件在11gRAC和12cRAC的启动位置,因为在12c之后参数文件在单机环境没有发生变化,但是在rac环境中发生了变化,所以了解新版本的新改变是在之后的运维工作中是非常重要的。
众所周知参数文件是在数据库启动时,第一步(nomount状态)就会调用读取参数文件,并且数据库的设置、配置、优化都是在参数文件中完成的。实例启动时会按照spfile
今天我将以修改参数文件位置案例的形式介绍一下11gRAC和12cRAC的启动位置。
先介绍一下参数文件在11gRAC或12cRAC的启动位置的区别,然后再开始修改参数文件位置的学习。
11gRAC中参数文件的位置:
存在于每个节点的$ORACLE_HOME/dbs目录和OCR的数据库资源信息中。
12gRAC中参数文件的位置:
不存在与$ORACLE_HOME/dbs目录下,只存在于OCR的数据库资源信息中。
ps介绍一下OCR是什么:OCR是oracle cluster register集群注册表,包括了rac中集群和数据库的配置信息。信息包括集群节点的列表,集群数据库实例的节点的映射以及crs应用程序资源信息。
铁子别忘了点个关注!!!
在集群环境下,参数文件是共享的,在11g中的oracle用户下每一个节点的$ORACLE_HOME/dbs目录下都存在一个init
内容如下:
查看$ORACLE_HOME/dbs目录:
[oracle@rac1 dbs]$ more initorcl1.ora
SPFILE='+DATA/orcl/spfileorcl.ora'
[oracle@rac2 dbs]$ more initorcl2.ora
SPFILE='+DATA/orcl/spfileorcl.ora'
查看OCR数据库资源信息:
[oracle@rac2 ~]$ srvctl config database -d orcl
修改11gRAC中参数文件的位置:
在11gRAC中修改参数文件位置时,不仅需要修改本地操作系统init
1)确定spfile的位置
[oracle@rac1 dbs]$ more initorcl1.ora
SPFILE='+DATA/orcl/spfileorcl.ora'
[oracle@rac2 dbs]$ more initorcl2.ora
SPFILE='+DATA/orcl/spfileorcl.ora'
[oracle@rac2 ~]$ srvctl config database -d orcl
2)临时位置生成pfile
注意:RAC环境下严禁使用create pfile from spfile;会覆盖默认位置下pfile内容。也不可以使用create spfile from pfile,那么会覆盖掉spfile,需要指定具体的位置。
SQL> create pfile='/oracle/app/oracle/product/12.2/db_1/dbs/pfile.ora' from SPFILE='+DATA/orcl/spfileorcl.ora';
3)新位置重新生成spfile
注意:pfile和spfile都需要指定目录
ASMCMD> mkdir +DATA/orcl/SPFILE/
SQL> create SPFILE='+DATA/orcl/SPFILE/spfileorcl.ora' from pfile='/oracle/app/oracle/product/12.2/db_1/dbs/pfile.ora';
4)修改pfile中spfile位置
[oracle@rac1 dbs]$ vi initorcl1.ora
#SPFILE='+DATA/orcl/spfileorcl.ora' SPFILE='+DATA/orcl/SPFILE/spfileorcl.ora'
[oracle@rac2 dbs]$ vi initorcl2.ora
#SPFILE='+DATA/orcl/spfileorcl.ora' SPFILE='+DATA/orcl/SPFILE/spfileorcl.ora'
5)修改OCR中spfile位置(是在oracle用户下的任意一个节点操作,不是grid用户下执行)
组件使用注意:
1、rac的name(db_name、db_unique_name、instance_name、service_names)不要随便乱改。
2、grid用户下可以执行crsctl、srvctl、ocr命令。oracle restart和rac是grid软件安装的一部分,所以执行命令时应在grid用户下进行
3、oracle用户下只可以执行srvctl命令,集群实例的注册添加删除等只能在oracle用户下进行,在grid下注册集群实例报PRKH-1014 : Current user "grid" is not the oracle owner user "oracle" of oracle home "/oracle/app/oracle/product/11.2.0/db_1"。
[oracle@rac2 ~]$ srvctl modify database -d orcl -p '+DATA/orcl/SPFILE/spfileorcl.ora'
[oracle@rac2 ~]$ srvctl config database -d orcl
6)重启数据库并查看是否生效(oracle用户下只可以执行srvctl命令)
节点一:
[oracle@rac1 ~]$ srvctl stop instance -d orcl -i orcl1
[oracle@rac1 ~]$ srvctl start instance -d orcl -i orcl1
[oracle@rac1 ~]$ srvctl status instance -d orcl -i orcl1
SQL> show parameter spfile
节点二:
[oracle@rac2 ~]$ srvctl stop instance -d orcl -i orcl2
[oracle@rac2 ~]$ srvctl start instance -d orcl -i orcl2
[oracle@rac2 ~]$ srvctl status instance -d orcl -i orcl2
SQL> show parameter spfile
每个节点的$ORACLE_HOME/dbs目录下已经不存在init
从12c开始,spfile信息只记录在OCR的数据库资源信息中,当数据库启动时,直接读取OCR中记录的spfile参数文件。
内容如下:
不存在于$ORACLE_HOME/dbs目录下:
查看OCR数据库资源信息:
修改12cRAC中参数文件的位置:
在12cRAC中修改参数文件位置时,不需要修改本地操作系统init
1)确定spfile的位置
[oracle@rac1 ~]$ srvctl config database -d orcl
2)临时位置生成pfile
注意:RAC环境下严禁使用create pfile from spfile;会覆盖默认位置下pfile内容。也不可以使用create spfile from pfile,那么会覆盖掉spfile,需要指定具体的位置。
SQL> create pfile='/oracle/app/oracle/product/12.2/db_1/dbs/pfile.ora' from SPFILE='+DATA/ORCL/PARAMETERFILE/spfile.268.1155580573';
3)新位置重新生成spfile
注意:pfile和spfile都需要指定目录,
ASMCMD> mkdir +DATA/orcl/SPFILE/
SQL> create SPFILE='+DATA/orcl/SPFILE/spfileorcl.ora' from pfile='/oracle/app/oracle/product/12.2/db_1/dbs/pfile.ora';
4)修改OCR中spfile位置(是在oracle用户下的任意一个节点操作,不是grid用户下执行)
组件使用注意:
1、rac的name(db_name、db_unique_name、instance_name、service_names)不要随便乱改。
2、grid用户下可以执行crsctl、srvctl、ocr命令。oracle restart和rac是grid软件安装的一部分,所以执行命令时应在grid用户下进行
3、oracle用户下只可以执行srvctl命令,集群实例的注册添加删除等只能在oracle用户下进行,在grid下注册集群实例报PRKH-1014 : Current user "grid" is not the oracle owner user "oracle" of oracle home "/oracle/app/oracle/product/11.2.0/db_1"。
[oracle@rac2 ~]$ srvctl modify database -d orcl -p '+DATA/orcl/SPFILE/spfileorcl.ora'
[oracle@rac2 ~]$ srvctl config database -d orcl
5)重启数据库并查看是否生效(oracle用户下只可以执行srvctl命令)
节点一:
[oracle@rac1 ~]$ srvctl stop instance -d orcl -i orcl1
[oracle@rac1 ~]$ srvctl start instance -d orcl -i orcl1
[oracle@rac1 ~]$ srvctl status instance -d orcl -i orcl1
SQL> show parameter spfile
节点二:
[oracle@rac2 ~]$ srvctl stop instance -d orcl -i orcl2
[oracle@rac2 ~]$ srvctl start instance -d orcl -i orcl2
[oracle@rac2 ~]$ srvctl status instance -d orcl -i orcl2
SQL> show parameter spfile