oracle参数文件spfile和pfile

一、参数文件说明
PFILE(Initialiazation Parameter Files)初始化参数文件,是文本文件,可直使用文本编辑器查看。
如果数据库使用的是初始化参数文件PFILE,要想永久修改初始化参数,DBA必须要先关闭数据库,再修改该文件,然后用修改后的PFILE重新启动数据库。
文件名:init.ora

SPFILE(Server Parameter Files)服务器参数文件,位于服务端,是二进制文件,不能直接修改,在数据库运行的过程中也可以修改该文件。
路径:$ORACLE_HOME/dbs(linux/Unix系统)    默认名字:spfile+sid.ora 如:spfileorcl.ora
windows路径为:%ORACLE_HOMEdatabase
如果数据库使用的是服务器参数文件SPFILE,则DBA使用ALTER SYSTEM SET ... SCOPE=SPFILE命令修改相应参数即可。

临时修改参数文件:
ALTER SYSTEM SET .... SCOPE=MEMORY   -----只对当前实例生效,重启实例失效。
ALTER SESSION SET ....  SCOPE=SPFILE    ----只修改参数文件,重启后才生效。

ALTER SESSION SET ....  SCOPE=BOTH ----立即生效,重启后也生效。即同时修改参数文件和当前memory

二、参数文件查看
SQL> show parameter spfile; --查看参数文件位置
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 /home/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora

SQL> select name,value from v$parameter where name='spfile';
NAME    VALUE
spfile  /home/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora

SQL> show parameter shared_pool_size; --查看具体的某个参数值
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ---------
shared_pool_size                     big integer            0

SQL> select name,value from v$parameter where name='shared_pool_size'; 

SQL> show parameters; 显示所有参数文件


三、使用参数文件启动数据库
可使用SPFILE和PFILE启动数据库。
使用SPFILE启动数据库时,直接startup 即可。
使用PFILE启动数据库时,需要指定pfile文件位置,如:SQL> startup pfile='D: estinit.ora';

四、参数文件的修改及创建
如果DBA使用参数文件启动数据库,要想修改参数文件pfile,则必须停止数据库,用文本编辑工具直接修改pfile文件,再使用pfile启动数据库。
如果数据库使用的是服务器参数文件SPFILE,则DBA使用ALTER SYSTEM SET ... SCOPE=SPFILE命令修改相应参数即可。
临时修改参数文件:
ALTER SYSTEM SET .... SCOPE=MEMORY   -----只对当前实例生效,重启实例失效。
ALTER SESSION SET ....   ----只对当前会话生效    
由于SPFILE文件是二进制文件,无法直接编辑,如果要修改,可先通过SPFILE创建PFILE(客户端初始化参数文件),PFILE可直接用记事本打开编辑。再通过PFILE创建SPFILE即可。
SQL> SHOW PARAMETER SPFILE;
NAME TYPE VALUE
------- ----------- ------------------------------
spfile string D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASESPFILEORCL.ORA

SQL> create pfile = 'D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASEPFILEORCL.ORA' from spfile;--后也可加上绝对路径from spfile='……';

文件已创建。

SQL> create spfile from pfile= 'D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASEPFILEORCL.ORA'; --从PFILE文件创建SPFILE文件。
SQL> create spfile='D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASESPFILEORCL.ORA'  from pfile= 'D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASEPFILEORCL.ORA';       

==============

修改spfile参数的三种模式:

scope=both       立次启动才能生效。

scope=memory     立即并永久生效,(默认模式)

scope=spfile     下即生效但下次启动时失效

SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';
SQL> show parameter spfile;
SQL> show parameter pfile;
如果数据库使用spfile参数文件,那么用show parameter spfile与 show parameter pfile的结果一致,如果数据库使用pfile参数文件,那么上面命令得到的结果都是空

判断数据库从SPFILE还是PFILE启动?
方法1:查询动态视图V$PARAMETER,如果VALUE值为非空,则是SPFILE启动,否则是PFILE。
SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';

方法2:SHOW PARAMETER命令查看
SQL> show parameter spfile;
方法3:通过v$spparameter视图,如果一下查询返回0值,表示你在使用pfile,否则表明你使用的是spfile

SQL> SELECT COUNT(1) FROM v$spparameter where value is not null;

      

原文地址:https://www.cnblogs.com/rusking/p/4259119.html