Oracle初始化参数文件pfile和spfile

前端之家收集整理的这篇文章主要介绍了Oracle初始化参数文件pfile和spfile前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

pfile和spfile的区别

pfile :Oracle 9i之前,ORACLE一直采用PFILE方式存储初始化参数,该文件为文本文件,可以在操作系统级别修改。当spfile文件修改出现错误导致oracle无法启动时,可以使用 pfile文件启动数据库

spfile:从Oracle 9i开始,Oracle引入了SPFILE文件,该文件为二进制格式,不能通过手工修改,只能在sql下通过alter system set 修改其中的参数。

如 ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE SCOPE = SPFILE ;

其中 scope有三个参数,分别为

scope=both 立即并永久生效,(默认模式)
scope=spfile 下次启动才能生效。
scope=memory 立即生效但下次启动时失效

查看spfile的位置

sql> show parameter spfile ;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /opt/oracle/app/product/11.2.0
/dbhome_1/dbs/spfileorcl.ora


或者:

sql> SELECT NAME,VALUE,DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';

NAME
--------------------------------------------------------------------------------
VALUE
----------------------------------------------------------------------------------------------------
DISPLAY_VALUE
----------------------------------------------------------------------------------------------------
spfile
/opt/oracle/app/product/11.2.0/dbhome_1/dbs/spfileorcl.ora
/opt/oracle/app/product/11.2.0/dbhome_1/dbs/spfileorcl.ora


验证是否是spfile启动

1.执行SELECT ISSPECIFIED,count(*) FROM v$spparameter group by ISSPECIFIED;

如果结果又true值,说明是spfile启动

2.show parameter spfile 如果value值不为空,则为spfile启动


使用spfile启动的实例,如何修改动态参数的内存值?
alter system set open_cursors=500 scope=memory;
使用spfile启动的实例,如何修改动态参数在参数文件中的取值?
alter system set open_cursors=400 scope=spfile;
使用spfile启动的实例,如何同时修改动态参数在参数文件中的取值和内存中的取值?
alter system set open_cursors=600 scope=both;
alter system set open_cursors=600;
使用spfile启动的实例,如何修改静态参数在参数文件中的取值?重新启动实例生效!!! startup force
alter system set db_unique_name='mydb' scope=spfile;


使用pfile:
create pfile from spfile;
create spfile from pfile;

*使用pfile启动实例alter system set命令没有scope选项!alter system set命令只能修改内存!
使用pfile启动的实例,如何修改动态参数的内存值?
alter system set open_cursors=500;
使用pfile启动的实例,如何修改动态参数在参数文件中的取值?
使用vi直接修改
使用pfile启动的实例,如何同时修改动态参数在参数文件中的取值和内存中的取值?
先用alter system set命令,再使用vi!
使用pfile启动的实例,如何修改静态参数在参数文件中的取值?
使用vi直接修改


实战:###############################################################

查看open_cursors参数值

strings $ORACLE_HOME/dbs/spfileorcl.ora | grep open_cursors

show parameter name;
alter system set db_unique_name = 'test' scope=spfile;
startup force;


(1)、如何创建pfile?
create pfile from spfile;
如何用pfile启动实例?
需要把spfile修改名字!spfile优先级高于pfile!!!!!!


show parameter spfile ;
有值 spfile启动实例
没有值 pfile

cat initorcl.ora | grep open_cursors

(2)使用pfile启动实例,如何修改动态参数的内存值和参数文件的值?
1、alter system set open_cursors=600
2、 initorcl.ora

(3)修改pfile位置

shutdown immediate

mv initorcl.ora /home/oracle/

startup pfile='/home/oracle/initorcl.ora'

(4)修改spfile位置
1、将spfile拷贝到指定路径

shutdown immediate

mv spfileorcl.ora /home/oracle/2.ora

2、spfile指向pfile
vim initorcl.ora
spfile='/home/oracle/2.ora'

(5)将spfile写入设备

将参数文件写入字符设备,使用字符设备充当spfile启动实例!
使用dd创建二进制文件
dd if=/dev/zero of=/disk1 bs=1M count=10
将二进制文件变块设备
losetup /dev/loop1 /disk1
将块设备变字符设备
raw /dev/raw/raw1/ /dev/loop1
chown oracle. /dev/raw/raw1
将spfile写入设备:
create spfile='/dev/raw/raw1' from pfile;

[oracle@install12 dbs]$ cat initorcl.ora spfile='/dev/raw/raw1'sql> show parameter spfile;NAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string /dev/raw/raw1##########create pfile='/home/oracle/test.ora' from memory;

猜你在找的Oracle相关文章