Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236042
  • 博文数量: 39
  • 博客积分: 2108
  • 博客等级: 大尉
  • 技术积分: 432
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-03 16:02
文章存档

2010年(38)

2009年(1)

我的朋友

分类: Oracle

2010-03-19 13:22:18

oracle9i,oracle10g如何切换使用spfile和pfile

首先,要明确以下几点:

1,spfile缺省目录:
--unix下:$oracle_home/dbs/
--NT下:%oracle_home%\database

2,spfile的搜索顺序:
1)spfile.ora,
2)spfile.ora,
3)init.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

转帖请注明:
本文源自TTT BLOG,原文地址:http://blog.chinaunix.net/u3/107265/showart_2198810.html

PS:

以上讨论的只是如何切换pfile和spfile,让数据库默认用pfile或spfile启动。

当然,还有许多其它的用法,例如:

1,启动时加pfile参数文件:
startup pfile='c:\iniths01.bak'
注意,不能以这种方式指定spfile.

见实验一。

2,也可以将spfile路径放到pfile中,然后以及pfile启动数据库。
如,在默认使用的pfile文件中加入:spfile='E:\oracle\product\10.2.0\db_1\dbs\SPFILEHS01.ORA'
然后重启数据库,查看参数文件,显示使用的就是spfile.

这种方式,还有一点要注意,pfile中加入spfile路径,也可以定义其他参数,如果参数重复设置,后读取的参数将取代先前的设置。
(这种通过在pfile中调用spfile,使用后设置的参数覆盖spfile中的参数设置,是解决spfile中参数设置错误的一种方法。)

见实验二。

实验一:

SQL> show parameter spfile

NAME TYPE VALUE
------------------------------------ -----------------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEHS01.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:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEHS01.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:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEHS01.ORA
SQL> show parameter optimizer_mode;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode string CHOOSE

--当前使用的是spfile,并且spfile中参数optimizer_mode=CHOOSE

SQL> host cd
E:\oracle\product\10.2.0\db_1\database

SQL> host ren spfilehs01.ora spfilehs01.bak

--修改当前spfile名称,DB启动将报错。

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: 无法打开参数文件 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITHS01.ORA'

SQL> host echo spfile='E:\oracle\product\10.2.0\db_1\database\spfilehs01.bak' >iniths01.ora

SQL> host echo *.optimizer_mode=all_rows >>iniths01.ora

SQL> host type iniths01.ora
spfile='E:\oracle\product\10.2.0\db_1\database\spfilehs01.bak'
*.optimizer_mode=all_rows

--建立pfile,在其中指定spfile=E:\oracle\product\10.2.0\db_1\database\spfilehs01.bak

--并在其后指定参数optimizer_mode=all_rows

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size 1373308 bytes
Variable Size 216664964 bytes
Database Buffers 390070272 bytes
Redo Buffers 4259840 bytes
数据库装载完毕。
数据库已经打开。

SQL> show parameter spfile

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEHS01.BAK

--可以看到当前使用的就是pfile中指定的spfile

SQL> show parameter optimizer_mode

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode string all_rows

--可以看到pfile中的参数取代了spfile中的参数。

SQL>

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> host echo *.optimizer_mode=all_rows >iniths01.ora

SQL> host echo spfile='E:\oracle\product\10.2.0\db_1\database\spfilehs01.bak' >>
iniths01.ora

SQL> host type iniths01.ora
*.optimizer_mode=all_rows
spfile='E:\oracle\product\10.2.0\db_1\database\spfilehs01.bak'

--重新建立pfile,在其中指定spfile=E:\oracle\product\10.2.0\db_1\database\spfilehs01.bak

--并在指定spfile前,指定参数optimizer_mode=all_rows

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size 1373308 bytes
Variable Size 220859268 bytes
Database Buffers 385875968 bytes
Redo Buffers 4259840 bytes
数据库装载完毕。
数据库已经打开。

SQL> show parameter spfile

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEHS01.BAK
SQL> show parameter optimizer_mode

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode string CHOOSE

--可以看到spfile中的参数取代了pfile中的参数。

SQL>


转帖请注明:
本文源自TTT BLOG,原文地址:http://blog.chinaunix.net/u3/107265/showart_2201600.html

阅读(3012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~