Allen
2010-03-24
14:13:39
44160
0
0
0
0
oracle9i,oracle10g如何切换使用spfile和pfile
首先,要明确以下几点:
1,spfile缺省目录:
--unix下:$oracle_home/dbs/
--NT下:%oracle_home%database
2,spfile的搜索顺序:
1)spfile<oracle_sid>.ora,
2)spfile.ora,
3)init<oracle_sid>.ora,
创建了spfile,重新启动数据库,oracle会按顺序搜索以上目录,spfile就会自动生效。
3,在widows系统下,虽然创建数据库时,默认会将spfile创建到%oracle_home%dbs目录下,但这个目录不是缺省目录。如果spfile发生变化后,也不会再到此目录下查找了,还是会到spfile缺省目录下查找spfile。
(我就是被这一点给搞糊涂了,总以为oracle会到%oracle_home%dbs目录下去找spfile,所以将生成的spfile也放到此目录下了。然后删除pfile,启动DB时报错,找不到pfile……)
4,当我们用命令由spfile创建pfile,或者由pfile创建spfile时,新的文件也会生成到缺省目录下。
明确了以上问题,数据库使用pfile和spfile的转换也就很容易了。
1,如果当前使用的是spfile,使用命令创建pfile,然后删除或更名缺省目录下的spfile,然后重新启动,数据库就会默认使用pfile启动。
2,如果当前使用的是pfile,使用命令创建spfile,然后删除或更名缺省目录下的pfile,然后重新启动,数据库就会默认使用spfile启动。
这样理解应该没有问题,实际测试也是这样的!
OK,又解决了我心中的一大疑问!
相关讨论:http://www.itpub.net/thread-1280993-1-1.html
以上讨论的只是如何切换pfile和spfile,让数据库默认用pfile或spfile启动。
当然,还有许多其它的用法,例如:
1,启动时加pfile参数文件:
startup pfile='c:iniths01.bak'
注意,不能以这种方式指定spfile.
见实验一。
2,也可以将spfile路径放到pfile中,然后以及pfile启动数据库。
如,在默认使用的pfile文件中加入:spfile='E:oracleproduct10.2.0db_1dbsSPFILEHS01.ORA'
然后重启数据库,查看参数文件,显示使用的就是spfile.
这种方式,还有一点要注意,pfile中加入spfile路径,也可以定义其他参数,如果参数重复设置,后读取的参数将取代先前的设置。
(这种通过在pfile中调用spfile,使用后设置的参数覆盖spfile中的参数设置,是解决spfile中参数设置错误的一种方法。)
见实验二。
实验一:
SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------------------------------------- spfile string E:ORACLEPRODUCT10.2.0DB_1 DATABASESPFILEHS01.ORA SQL> show parameter optimizer_mode NAME TYPE VALUE ------------------------------------ ----------------------------------------- optimizer_mode string CHOOSE SQL> host type c:iniths01.bak hs01.__db_cache_size=356515840 hs01.__java_pool_size=4194304 hs01.__large_pool_size=12582912 hs01.__shared_pool_size=230686720 hs01.__streams_pool_size=0 ... *.optimizer_mode='ALL_ROWS' ... SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup pfile='c:iniths01.bak' ORACLE instance started. Total System Global Area 612368384 bytes Fixed Size 1373308 bytes Variable Size 250219396 bytes Database Buffers 356515840 bytes Redo Buffers 4259840 bytes Database mounted. Database opened. SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------------------------------------- spfile string SQL> show parameter optimizer_mode NAME TYPE VALUE ------------------------------------ ----------------------------------------- optimizer_mode string ALL_ROWS SQL>
|
实验二:
SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string E:ORACLEPRODUCT10.2.0DB_1 DATABASESPFILEHS01.ORA SQL> show parameter optimizer_mode NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ optimizer_mode string CHOOSE SQL> host type c:iniths01.bak hs01.__db_cache_size=356515840 hs01.__java_pool_size=4194304 hs01.__large_pool_size=12582912 hs01.__shared_pool_size=230686720 hs01.__streams_pool_size=0 ... *.optimizer_mode='ALL_ROWS' ... SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup pfile='c:iniths01.bak' ORACLE instance started. Total System Global Area 612368384 bytes Fixed Size 1373308 bytes Variable Size 250219396 bytes Database Buffers 356515840 bytes Redo Buffers 4259840 bytes Database mounted. Database opened. SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string SQL> show parameter optimizer_mode NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ optimizer_mode string ALL_ROWS SQL> 实验二: SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string E:ORACLEPRODUCT10.2.0DB_1 DATABASESPFILEHS01.ORA SQL> show parameter optimizer_mode; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ optimizer_mode string CHOOSE --当前使用的是spfile,并且spfile中参数optimizer_mode=CHOOSE SQL> host cd E:oracleproduct10.2.0db_1database SQL> host ren spfilehs01.ora spfilehs01.bak --修改当前spfile名称,DB启动将报错。 SQL> startup ORA-01078: failure in processing system parameters LRM-00109: 无法打开参数文件 'E:ORACLEPRODUCT10.2.0DB_1DATABASEINITHS01.ORA' SQL> host echo spfile='E:oracleproduct10.2.0db_1databasespfilehs01.bak' >iniths01.ora SQL> host echo *.optimizer_mode=all_rows >>iniths01.ora SQL> host type iniths01.ora spfile='E:oracleproduct10.2.0db_1databasespfilehs01.bak' *.optimizer_mode=all_rows --建立pfile,在其中指定spfile=E:oracleproduct10.2.0db_1databasespfilehs01.bak --并在其后指定参数optimizer_mode=all_rows SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1373308 bytes Variable
Tag:
Oracle
Oracle基础
TTTBLOG
|