Oracle篇—参数文件在11gRAC或12cRAC的启动位置介绍

☘️博主介绍 ☘️**:**

✨又是一天没白过,我是奈斯,DBA一名✨

✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面**✌**✌️

❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣️❣️❣️

今天给大家介绍一下参数文件在11gRAC和12cRAC的启动位置,因为在12c之后参数文件在单机环境没有发生变化,但是在rac环境中发生了变化,所以了解新版本的新改变是在之后的运维工作中是非常重要的。

众所周知参数文件是在数据库启动时,第一步(nomount状态)就会调用读取参数文件,并且数据库的设置、配置、优化都是在参数文件中完成的。实例启动时会按照spfile<SID>.ora --> spfile.ora --> init<SID>.ora(同pfile.ora)顺序启动实例启动时必要的参数文件,如果文件都不存在那么oracle会报错。

今天我将以修改参数文件位置案例的形式介绍一下11gRAC和12cRAC的启动位置。

先介绍一下参数文件在11gRAC或12cRAC的启动位置的区别,然后再开始修改参数文件位置的学习。

11gRAC中参数文件的位置:

存在于每个节点的$ORACLE_HOME/dbs目录和OCR的数据库资源信息中。

12gRAC中参数文件的位置:

不存在与$ORACLE_HOME/dbs目录下,只存在于OCR的数据库资源信息中。

ps介绍一下OCR是什么:OCR是oracle cluster register集群注册表,包括了rac中集群和数据库的配置信息。信息包括集群节点的列表,集群数据库实例的节点的映射以及crs应用程序资源信息。


铁子别忘了点个关注!!!

一、11gRAC参数文件的管理和修改,11gRAC中参数文件的位置:先找init<SID>.ora,在由该文件所指向的ASM中的spfile

在集群环境下,参数文件是共享的,在11g中的oracle用户下每一个节点的$ORACLE_HOME/dbs目录下都存在一个init<SID>.ora文件,该文件用于指向共享存储中参数文件spfile的位置。所以11gR2实例启动过程是先找init<SID>.ora,在由该文件所指向的ASM中的spfile。

内容如下:

查看$ORACLE_HOME/dbs目录:

oracle@rac1 dbs$ more initorcl1.ora

bash 复制代码
SPFILE='+DATA/orcl/spfileorcl.ora'

oracle@rac2 dbs$ more initorcl2.ora

bash 复制代码
SPFILE='+DATA/orcl/spfileorcl.ora'

查看OCR数据库资源信息:

oracle@rac2 \~$ srvctl config database -d orcl

修改11gRAC中参数文件的位置:

在11gRAC中修改参数文件位置时,不仅需要修改本地操作系统init<SID>.ora的spfile记录文件,也需要修改OCR(OCR是oracle cluster register集群注册表,包括了rac中集群和数据库的配置信息。信息包括集群节点的列表,集群数据库实例的节点的映射以及crs应用程序资源信息)中的数据库资源信息。

1)确定spfile的位置

oracle@rac1 dbs$ more initorcl1.ora

bash 复制代码
SPFILE='+DATA/orcl/spfileorcl.ora'

oracle@rac2 dbs$ more initorcl2.ora

bash 复制代码
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

bash 复制代码
#SPFILE='+DATA/orcl/spfileorcl.ora'
SPFILE='+DATA/orcl/SPFILE/spfileorcl.ora'

oracle@rac2 dbs$ vi initorcl2.ora

bash 复制代码
#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

二、12cRAC(包含12c以后的所有版本) 参数文件的管理和修改12cRAC中参数文件的位置: 12c之后 spfile信息只记录在OCR的数据库资源信息

每个节点的$ORACLE_HOME/dbs目录下已经不存在init<SID>.ora文件。那么各个节点是如何找到共享盘中的spfile参数文件呢,或者说哪里记录了参数文件spfile位置信息。

从12c开始,spfile信息只记录在OCR的数据库资源信息中,当数据库启动时,直接读取OCR中记录的spfile参数文件。

内容如下:

不存在于$ORACLE_HOME/dbs目录下:

查看OCR数据库资源信息:

修改12cRAC中参数文件的位置:

在12cRAC中修改参数文件位置时,不需要修改本地操作系统init<SID>.ora的spfile记录文件,因为从12c开始,spfile信息只记录在OCR(OCR是oracle cluster register集群注册表,包括了rac中集群和数据库的配置信息。信息包括集群节点的列表,集群数据库实例的节点的映射以及crs应用程序资源信息)的数据库资源信息中,当数据库启动时,直接读取OCR中记录的spfile参数文件。

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

相关推荐
Amy1870211182325 分钟前
告别“爬楼抄表”时代:电梯计量自动化改造,让每一度电都“开口说话”
运维·自动化
咏方舟【长江支流】30 分钟前
【开源】跨语言·跨平台·跨数据库(2) —— 用宝轻量框架设计必读
数据库·架构·开源·ai编程·咏方舟-长江支流·用宝框架
dadaobusi33 分钟前
在 Buildroot 中为 RISC-V 64 架构集成 numactl
运维·服务器
手握风云-1 小时前
Redis:不只是缓存那么简单(十五)
数据库·redis·缓存
weixin_307779131 小时前
Linux下Docker Compose里运行PostgreSQL数据库故障诊断Shell脚本
linux·运维·数据库·docker·postgresql
醉城夜风~1 小时前
MySQL 常用内置函数全解:字符串、数值、日期、流程控制实战教程
数据库·mysql
AI创界者1 小时前
安全测试环境搭建:在 Kali Linux 中部署与配置开源 WebShell 管理工具 AntSword(蚁剑)
linux·运维·安全
程序猿秃头之路2 小时前
DDD 系列:实体和值对象详解
数据库·oracle·ddd·领域驱动设计
运维大师2 小时前
【Linux运维极简教程】04-进程与服务管理
linux·运维
keke.shengfengpolang2 小时前
自动化考什么证书对就业有帮助?
运维·自动化