Allen
2010-03-24
14:13:39
42757
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
【版權聲明】
本文爲原創,遵循CC 4.0 BY-SA版權協議!轉載時請附上原文鏈接及本聲明。
原文鏈接:https://tdlib.com/am.php?t=OXONUOasTZb8
Tag:
Oracle
Oracle基础
TTTBLOG