ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle RAC 修改 spfile 文件位置

2021-09-16 12:31:05  阅读:217  来源: 互联网

标签:spfile RAC srvctl oracle Oracle dbs dwrac ora


在RAC下spfile位置的修改与单节点环境不完全一致,有些地方需要特别注意,否则可能修改会失败。 下面用一个例子说明:SPFILE放在ASM中一个不正确的目录(+ARCH)中,现在想把它放在另外一个目录(+DBSYS)下。 以下是具体步骤: 1.原spfile位置 SQLshowparameter




在RAC下spfile位置的修改与单节点环境不完全一致,有些地方需要特别注意,否则可能修改会失败。
下面用一个例子说明:SPFILE放在ASM中一个不正确的目录(+ARCH)中,现在想把它放在另外一个目录(+DBSYS)下。
以下是具体步骤:

1. 原spfile位置

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +ARCH/dwrac/spfiledwrac.ora

2. 拷贝spfile到其他目录

由于在ASM中,不能直接cp,需要通过迂回的办法实现。

sys@dwrac2> create pfile='/tmp/pfile.ora' from spfile;

File created.

sys@dwrac2> create spfile='+DBSYS/dwrac/spfiledwrac.ora' from pfile='/tmp/pfile.ora';

File created.

3. 修改所有节点$ORACLE_HOME/dbs/init下的参数文件

[oracle@dwdb04 dbs]$ vi initdwrac2.ora

SPFILE='+ARCH/dwrac/spfiledwrac.ora'

==>

SPFILE='+DBSYS/dwrac/spfiledwrac.ora'

4. 通过sqlplus方式重启实例

sys@dwrac2> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

sys@dwrac2> startup

ORACLE instance started.

Total System Global Area 5.2429E+10 bytes

Fixed Size 2193872 bytes

Variable Size 3707766320 bytes

Database Buffers 4.8671E+10 bytes

Redo Buffers 48136192 bytes

Database mounted.

Database opened.

sys@dwrac2> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +DBSYS/dwrac/spfiledwrac.ora

可以发现,spfile已经修改成功。

5. 但是如果用过srvctl重启数据库,

发现spfile又变回来了:

[oracle@dwdb02 dbs]$ srvctl stop instance -d dwrac -i dwrac1,dwrac2,dwrac3,dwrac4

[oracle@dwdb02 dbs]$ srvctl start instance -d dwrac -i dwrac1,dwrac2,dwrac3,dwrac4

[oracle@dwdb02 dbs]$ sqlplus "/as sysdba"

sys@dwrac2> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +ARCH/dwrac/spfiledwrac.ora

6. 原因及解决

这是为什么呢?实际上在RAC环境中,我们更多时候是用srvctl来管理RAC资源,而srvctl的信息来自ocr,包括spfile的位置信息。我们刚才那样做虽然修改了参数文件的位置,但是ocr并不知道,它还用原来的文件启动数据库。

我们可以用srvctl查看数据库的配置信息来确认:

[oracle@dwdb01 dbs]$ srvctl config database -d dwrac -a

dwdb01 dwrac1 /oracle/product/10.2.0/db

dwdb02 dwrac2 /oracle/product/10.2.0/db

dwdb03 dwrac3 /oracle/product/10.2.0/db

dwdb04 dwrac4 /oracle/product/10.2.0/db

DB_UNIQUE_NAME: dwrac

DB_NAME: dwrac

ORACLE_HOME: /oracle/product/10.2.0/db

SPFILE: +ARCH/dwrac/spfiledwrac.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

可以看到,SPFILE的位置指向是+ARCH。解决方法是通过srvctl修改SPFILE的位置。

[oracle@dwdb01 dbs]$ srvctl modify database -d dwrac -p '+DBSYS/dwrac/spfiledwrac.ora'

[oracle@dwdb01 dbs]$ srvctl config database -d dwrac -a

dwdb01 dwrac1 /oracle/product/10.2.0/db

dwdb02 dwrac2 /oracle/product/10.2.0/db

dwdb03 dwrac3 /oracle/product/10.2.0/db

dwdb04 dwrac4 /oracle/product/10.2.0/db

DB_UNIQUE_NAME: dwrac

DB_NAME: dwrac

ORACLE_HOME: /oracle/product/10.2.0/db

SPFILE: +DBSYS/dwrac/spfiledwrac.ora

DOMAIN: null

DB_ROLE: null

START_OPTIONS: null

POLICY: AUTOMATIC

ENABLE FLAG: DB ENABLED

[oracle@dwdb01 dbs]$ srvctl stop database -d dwrac

[oracle@dwdb01 dbs]$ srvctl start database -d dwrac

sys@dwrac2> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +DBSYS/dwrac/spfiledwrac.ora

可以看到,此时Oracle是用新的spfile启动的。

总结一下,在RAC环境下修改spfile:

1. 需要修改$ORACLE_HOME/dbs下的相关文件,指向新文件

2. 需要用srvctl修改config信息,指向新文件

(责任编辑:admin)

标签:spfile,RAC,srvctl,oracle,Oracle,dbs,dwrac,ora
来源: https://www.cnblogs.com/lkj371/p/15292966.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有