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; (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|