ITPub博客

首页 > 数据库 > Oracle > RAC环境修改spfile的位置

RAC环境修改spfile的位置

原创 Oracle 作者:space6212 时间:2019-07-03 08:27:04 0 删除 编辑

在RAC下spfile位置的修改与单节点环境不完全一致,有些地方需要特别注意,否则可能修改会失败。

下面用一个例子说明:SPFILE放在ASM中一个不正确的目录(+ARCH)中,现在想把它放在另外一个目录(+DBSYS)下。

以下是具体步骤:

[@more@]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信息,指向新文件

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/231499/viewspace-1044056/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: RAC的VIP切换测试
请登录后发表评论 登录
全部评论

注册时间:2005-01-25

  • 博文量
    245
  • 访问量
    226948