oracle参数文件设置spfile

spfile是oracle服务端的参数文件,spfile参数文件是一个二进制文件,不能用文本工具打开。如果要修改它的值,使用alter system来修改。

1、显示目前参数文件位置

show parameter spfile;

2、设置
语法:

alter system set parameter = value <comment='text'> <deferred> <scope=memory | spfile | both> <sid='sid|*'>

说明:
1)parameter = value:设置参数的值。
2)<comment=’text’>:可选,添加注释。
3)<deferred>:可选,有些参数不能立即修改,需要以延迟方式修改。
查看哪些参数必须使用deferred:
select name from v$parameter where ISSYS_MODIFIABLE = ‘DEFERRED’;
4)<scope=memory | spfile | both>:可选,指示这个参数的作用域,默认是both。
SCOPE=memory 只在当前实例中修改,数据库重启后恢复成原先的值。
SCOPE=spfile 只修改spfile中的值,这个值直到数据库重启后才生效。
SCOPE=both 内存和spfile中都修改参数的值。
5)<sid=’sid|*’>:可选,主要用于集群环境;默认值为sid=’*’。这样可以为集群中任何给定的实例惟一地指定参数设置。除非你使用oracle RAC,否则一般不需要指定sid=设置。

3、取消设置
如果修改后想要恢复使用原先默认值,使用如下命令:

alter system reset parameter <scope=memory | spfile | both> sid='sid|*'

4、转换spfile为文本文件
由于spfile是二进制文件,不能打开,转换成文本后可以查看具体的设置。
例子:

create pfile='/tmp/pfile.txt' from spfile;

5、转换文本文件为spfile
文本文档也可以转换成spfile文件。
例子:

create spfile='/tmp/myspfile' from pfile='/tmp/pfile.txt';

6、从spfile文件提取参数
如果spfile文件二进制部分损坏,用strings命令就能提取出参数,然后create spfile重新生成spfile文件。

cd $ORACLE_HOME/dbs
strings spfileXE.ora

XE.__db_cache_size=192937984
XE.__java_pool_size=4194304
XE.__large_pool_size=4194304
XE.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
XE.__pga_aggregate_target=293601280
XE.__sga_target=545259520
XE.__shared_io_pool_size=0
XE.__shared_pool_size=327155712
XE.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/oracle/admin/XE/adump'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/XE/control.dbf'
*.db_name='XE'
*.DB_RECOVERY_FILE_DEST='/u01/app
/oracle/fast_recovery_area'
*.DB_RECOVERY_FILE_DEST_SIZE=10G
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
*.job_queue_processes=4
*.memory_max_target=838860800
*.memory_target=838860800
*.open_cursors=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=20
*.shared_servers=4
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'