oracle的参数文件(pfile,spfile)
Posted 头痛不头痛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的参数文件(pfile,spfile)相关的知识,希望对你有一定的参考价值。
参数文件的作用:
它们是在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重要文件。
参数文件分为两类:
- 初始化参数文件pfile(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用PFILE方式存储初始化参数,该文件为文本文件。文件名通常为init<sid>.ora
- 服务器参数文件spfile(Server Parameter Files),从9i开始,Oracle引入了SPFILE文件,该文件为二进制格式,不能通过手工修改。 文件名通常为spfile<sid>.ora,支持RMAN备份。
区别:
PFILE是文本文件的,而SPFILE是二进制格式的。但是pfile也可以通过more或者less查看
SPFILE的修改是可以通过SQL命令在线修改,不再需要通过手工修改,对于动态参数所有更改可以立即生效,而PFILE的修改必须重启实例才能生效。
优先级别:
oracle 启动读取参数文件的顺序,如果个文件都不存在,则Oracle会报错
spfile<sid>.ora --> spfile.ora -->init<sid>.ora
缺省目录:
$ORACLE_HOME/dbs
参数文件之间的转换:
spfile-->pfile
SQL> create pfile from spfile; 文件已创建。 SQL> !ls $ORACLE_HOME/dbs/initorcl.ora /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora
生成在指定路径
SQL> create pfile=\'/tmp/initorcl.ora\' from spfile;
查看pfile的内容
orcl.__db_cache_size=201326592 #数据库告诉缓冲区 orcl.__java_pool_size=4194304 orcl.__large_pool_size=4194304 orcl.__oracle_base=\'/u01/app/oracle\'#ORACLE_BASE set from environment orcl.__pga_aggregate_target=281018368 orcl.__sga_target=528482304 orcl.__shared_io_pool_size=0 orcl.__shared_pool_size=306184192 orcl.__streams_pool_size=0 *._allow_resetlogs_corruption=TRUE *.audit_file_dest=\'/u01/app/oracle/admin/orcl/adump\' /*警告日志路径*/ *.audit_trail=\'db\' *.compatible=\'11.2.0.0.0\' *.control_files=\'/u01/app/oracle/oradata/orcl/control01.ctl\',\'/u01/app/oracle/flash_recovery_area/control02.ctl\'#Restore Controlfile /*控制文件*/ *.db_block_size=8192 /*内存块的大小*/ *.db_domain=\'\' *.db_name=\'orcl\' /*数据库标识符/ *.db_recovery_file_dest=\'/u01/app/oracle/flash_recovery_area\' *.db_recovery_file_dest_size=4070572032 /*闪回区可使用的大小GB*/ *.diagnostic_dest=\'/u01/app/oracle\' *.dispatchers=\'(PROTOCOL=TCP) (SERVICE=orclXDB)\' /*共享服务器的配置参数*/ *.log_archive_dest_1=\'LOCATION=/u01/ARCHLOG/ mandatory\' /*归档文件*/ *.log_archive_dest_2=\'LOCATION=/u02/ARCHLOG/\' *.log_archive_dest_3=\'LOCATION=/u03/ARCHLOG/ optional\' *.log_archive_min_succeed_dest=2 *.memory_target=806354944 *.open_cursors=300 /*可打开的游标数*/ *.processes=150 /*描述当前可以运行的进程数*/ *.remote_login_passwordfile=\'EXCLUSIVE\' /*远程登陆是否要用密码文件*/ *.sga_max_size=838860800 *.undo_tablespace=\'UNDOTBS1\' /*指定使用哪一个undo表空间*/
pfile-->spfile
SQL> create spfile=\'/tmp/spfileorcl.ora\' from pfile;
可以用strings命令查看创建的spfile文件,查出来的结过和pfile是一样的。
判断数据库从SPFILE还是PFILE启动?
方式1:
如果是spfile,则value是有值的
SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ---------- ------------------------------ spfile string /u01/app/oracle/product/11.2.0 /db_1/dbs/spfileorcl.ora
方式2:
SQL> set linesize 120 SQL> col name format a10 SQL> col value format a60 SQL> select name,value from v$parameter where name=\'spfile\'; NAME VALUE -------------------- ------------------------------------------------------------ spfile /opt/oracle11g/app/db/product/11.2/dbs/spfileyldev.ora
修改参数文件的三种模式:
scope=both 立即并永久生效,(默认模式)
scope=spfile 下次启动才能生效。
scope=memory 立即生效但下次启动时失效
需要注意的是有些参数是不可以被修改的
-- 查询视图:v$parameter
isses_modifiable 对应system级别
如果ISSES_MODIFIABLE=true,表明这个参数可以在session级别可以修改,并且立即生效。false就是不能修改
isssys_modifiable 对应system级别
如果issys_modifiable=immediate,表示这个参数可以在system立即修改,并且立即生效。
若如果issys_modifiable=deferred,会话级别参数,直接通过alter session set <> = <>*/
若如果issys_modifiable=false,表示这个参数不能在直接修改在内存中,需要加scope=spfile,重启后才能生效。
比如:
SQL> select name, isses_modifiable,issys_modifiable from v$parameter where name=\'sga_max_size\'; NAME ISSES ISSYS_MOD ------------------------------ ----- --------- sga_max_size FALSE FALSE ##两个都为false SQL> alter system set sga_max_size=900M; alter system set sga_max_size=900M * 第 1 行出现错误: ORA-02095: 无法修改指定的初始化参数
SQL> alter system set sga_max_size=800M scope=spfile;
系统已更改。
恢复参数到默认值
SQL> alter system reset sga_max_size scope=spfile;
以上是关于oracle的参数文件(pfile,spfile)的主要内容,如果未能解决你的问题,请参考以下文章