前言:本实验主要是为了测试orcl数据库加载过程中,对参数文件选择的优先权。对此我们需要准备 initorcl.ora,spfileorcl.ora,init.ora,spfile.ora 四个参数文件,修改参数文件中的一个参数,以便区分每次加载的是哪个参数。
一、测试环境:
(1)OS:Red Hat Enterprise Linux Server release 5.5
(2)DB:Enterprise Oracle Server 10g release 2
二、模拟准备:
(1)备份 $ORACLE_HOMEs 目录
cd $ORACLE_HOME/
ls
hc_orcl.dat initdw.ora init.ora lkORCL orapworcl spfileorcl.ora
cp -r dbs dbs_bk
(2)在 $ORACLE_HOMEs 下创建四个测试参数文件
(2.1)修改spfileorcl.ora 参数文件,设置processes参数为150,默认存在
strings spfileorcl.ora | grep processes /**确认当前processes为150**/
(2.2)创建 initorcl.ora 参数文件,修改processes参数为200,保存退出
startup;
create pfile from spfile;
vi initorcl.ora
processes=200
cat initorcl.ora | grep processes /**确认当前processes为200**/
(2.3)修改 init.ora 参数文件,修改processes参数为250,保存退出
cp initorcl.ora init.ora
vi init.ora
processes=250
cat init.ora | grep processes /**确认当前processes为250**/
(2.4)创建spfile.orc参数,设置processes参数为300,保存退出
cp spfileorcl.ora spfileorcl.ora_bak
startup mount;
alter system set processes=300 scope=spfile;
shutdown immediate;
mv spfileorcl.ora spfile.ora;
mv spfileorcl.ora_bak spfileorcl.ora;
strings spfile.ora | grep processes /**确认当前processes为300**/
--至此:4个测试参数文件制作成功!!!
三、测试演练:
(1)启动数据库,查看processes大小,确认启动的是哪个参数文件
startup mount;
show parameter processes; /**当前process参数为150,说明Oracle优先选择spfileorcl.ora参数**/
(2)删除 spfileorcl.ora,重启数据库,查看processes大小,确认启动的是哪个参数文件
shutdown immediate;
ho rm -rf spfileorcl.ora;
startup mount;
show parameter processes; /**当前process参数为300,说明Oracle优先选择spfile.ora参数**/
(3)删除spfile.ora,重启数据库,查看processes大小,确认启动的是哪个参数文件
shutdown immediate;
ho rm -rf spfile.ora;
startup mount;
show parameter processes; /**当前process参数为200,说明Oracle优先选择initorcl.ora参数**/
--至此,最后剩下init.ora,无需测试,我们得出Oracle实例加载对参数的优先选择顺序是:
spfileorcl.ora --> spfile.ora --> initorcl.ora --> init.ora !!!
四、小结:
通过上面的测试我们发现,只要数据库中存在spfile,数据库在加载实例时,优先选择spfile,并且是带有SID的spfile参数文件。因为spfile.ora是特定数据库定制的参数文件,只有当定制不存在时,才走由默认值构成的spfile.ora;其次选择具有定制参数的init.ora,最后走由默认值构成的init.ora参数文件。