重庆思庄Oracle、Redhat认证学习论坛

标题: spfile在共享存储上启动数据库实例的要点及解决办法 [打印本页]

作者: changlexuan    时间: 2013-5-31 11:57
标题: spfile在共享存储上启动数据库实例的要点及解决办法

问题描述

这里希望提醒大家的是:在RAC环境中轻易不要使用“create pfile from spfile;”命令创建PFILE。
因为在RAC环境,默认情况下的SPFILE会放到共享存储上(裸设备或ASM磁盘组上),RAC的每台主机上是使用PFILE指向SPFILE的方法来完成SPFILE的定位的。
一旦使用“create pfile from spfile;”命令创建PFILE后,新生成的PFILE将覆盖原有dbs目录下的PFILE,此后数据库实例启动时读取的将不再是共享存储上的SPFILE,转而读取本地的PFILE文件的内容。

1.默认情况下$ORACLE_HOME/dbs目录下的PFILE initracdb.ora中只有一行记录,记录着SPFILE的路径指向。
/oracle/app/oracle/product/10.2.0/db_1/dbs$ cat initracdb1.ora
spfile=+DATA/racdb/spfileracdb.ora

2.此时可以从数据库参数得到目前使用的是SPFILE启动的数据库
SQL> show parameter spfile
NAME            TYPE        VALUE
--------------- ----------- ------------------------------
spfile          string      +DATA/racdb/spfileracdb.ora

3.此时如果使用“create pfile from spfile;”命令创建PFILE,原有PFIEL中的SPFILE指向将被具体的数据库参数所取代。
当数据库再次启动时,因为无法找到SPFILE的位置,将使用PFILE文件中记录的具体参数值完成数据库的启动,这样将会给数据库的管理带来比较大的影响,不再享受到SPFILE参数的便捷。

4.小结
本文描述的是一个常识性的问题,希望大家在对RAC数据库进行维护和管理的过程中不要因此给自己带来不必要的麻烦。
如果出现了这样的问题该如何处理呢?方法比较简单,将PFILE的内容恢复为具有SPFILE指向的内容即可,也许在具体场景中需要重新创建SPFILE。

 
解决办法
创建spfile
SQL>create spfile=’/oradata/oracle/spfileoracle.ora'from pfile=’/home/oracle/initoracle.ora’;
以上spfile位置是没有限制的,而且最好不要把spfile放入到默认位置下
接下来如果在共享存储中的双机或集群环境下直接使用startup启动数据库实例
那么就要做一下步骤了:
在oracle用户下进入$ORACLE_HOME找到dbs如果没有手动创建
[root@localhost dbs]# su - oracle
[oracle@localhost ~]$ cd $ORACLE_HOME/dbs
[oracle@localhost dbs]$ ll
total 60
-rwxrwxr-x 1 oracle dba     1544 May 28 09:06 hc_oracle.dat
-rwxrwxr-x 1 oracle dba     8385 Sep 11  1998 init.ora
-rwxrwxr-x 1 oracle dba    12920 May  3  2001 initdw.ora
-rwxrwxr-x 1 oracle dba       35 May 31 03:47 initoracle.ora
-rw-rw---- 1 oracle oracle    24 May 31 02:53 lkORACLE
[oracle@localhost dbs]$ cat initoracle.ora
spfile='/oracle/spfileoracle.ora'

[oracle@localhost dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri May 31 03:47:47 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  289406976 bytes
Fixed Size                  1218992 bytes
Variable Size              92276304 bytes
Database Buffers          188743680 bytes
Redo Buffers                7168000 bytes
Database mounted.
Database opened.

搞定!!






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2