1、每一个数据库中,都有一个操作系统文件,叫初始化参数文件,在10g版本中位于“C:oracleproduct10.1.0db_1database”目录下,它决定了数据库的物理结构、内存、数据库的极限值及大量的默认值。是进行数据库设计和优化的重要文件。
2、可以分为文本参数文件(pfile text parameter file)和服务器参数文本文件(spfile server parameter file)两种。9i以后才有此spfile。
3、Oracle在起动时,必须要一个参数文件。在使用startup时,它先找spfile,如果没有,再找pfile。数据库启动时spfile和pfile的加载顺序
初始化参数是在数据库实例启动时(startup nomount)加载。
如果startup命令中未指定pfile参数,在windows系统中数据库启动时会按如下顺序查找启动参数文件:
%ORACLE_HOME%databaseSPFILE.ora
%ORACLE_HOME%databaseSPFILE.ora
%ORACLE_HOME%databaseinit.ora
在unix或linux系统中数据库启动时会按如下顺序查找启动参数文件:
%ORACLE_HOME%dbsSPFILE.ora
%ORACLE_HOME%dbsSPFILE.ora
%ORACLE_HOME%dbsinit.ora[@more@]也就是说先找spfile.ora文件,如果spfile.ora没有则找spfile.ora文件,最后才会去找 init.ora的pfile文件.
如果要使用pfile,则必须使用pfile子句:startup force pfile=’d: PFILEORCL.ORA’。
4、参数文件的导出:原因有三
。服务器参数文件的备份
。列出例程当前使用的所有参数,以便查找原因。
。通过先导出spfile,再编辑pfile,再创建spfile,达到修改服务器参数的目的。
5、导出spfile文件的操作方法:
。创建pfile
SQL> create pfile from spfile;
在参数文件目录下,会产生一个INITorcl.ORA文件,该文件可以用记事本打开编辑,千万记住spfile不能这样做。也可以指定路径和文件名:
SQL> create pfile='d:backup.ora' from spfile
。导出spfile
SQL> create pfile='c:test.ora' from spfile='c:oracleproduct10.1.0db_1databaseSPFILEORCL.ORA';
6、创建spfile,
SQL> create spfile from pfile='c:test.ora';
会在默认位置产生按默认规则命名的spfile文件。
该语句应该在使用startup pfile启动的数据库环境下或在startup命令完成以前,否则会出现下面的提示错误:
7、更改参数文件
修改
alter system set parameter_name = parameter_value [, parameter_value ]...
[ COMMENT 'text' ]
[ DEFERRED ]
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = { 'sid' | * } ]
删除
alter system reset parameter_name
[ SCOPE = { MEMORY | SPFILE | BOTH } ]
[ SID = 'sid' ]
也可以使用 ALTER SYSTEM SET PARAMETER=''达到相同的效果;
使用alrer system语句来设置、更改或删除(还原到默认值)初始化参数的值。注意,对于使用pfile参数文件启动的例程的修改只在当前例程中有效,要想将修改应用在未来的例程中,必须手动更新pfile文本参数文件,而spfile则不需要,所以尽量使用spfile启动。
另外,还要用scope子句来指明范围,通常有三种:
Scope=spfile只更改服务器参数文件,适用于动态和静态参数,并且在下一次启动时才生效
Scope=memory只更改内存中的参数,对于动态参数,立即生效,但由于没有更改spfile所以更改不能永久保留。不允许更改静态参数
Scope=both既更改服务器参数文件的参数,也更改内存中的参数。结果是对于动态参数立即生效并永久保留。不允许更改静态参数。
SQL> alter system set open_cursors=30 scope=both;
如果没有使用spfile参数文件,那么在指定scope=spfile或scope=both时会出错。
如果使用spfile参数文件启到例程,默认设置scope=spfile;如果使用pfile,默认设置scope=memory。
对于动态参数,可以指定deferred关键值,这样更改只影响将来的会话。
8、查看初始化参数
。show parameters 查看当前使用的参数值。
SQL> show parameters open_cursors;
NAME TYPE VALUE
------------------------------------ ----------- ------
open_cursors integer 30
也可以导出所有的参数
SQL> show parameters > c:t.txt
。show parameter spfile 查看当前的spfile文件,
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string C:ORACLEPRODUCT10.1.0DB_1
DATABASESPFILEORCL.ORA
如果没有使用该文件启动例程,则返回值为空。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- -------------
spfile string
。v$parameter 该视图显示当前使用的参数值
SQL> select name,value from v$parameter where name='open_cursors';
NAME
-----------------------------------------------------------------------
VALUE
-----------------------------------------------------------------------
open_cursors
300
。v$spparameter 该视图显示spfile参数文件中的当前内容,如果没有使用Spfile,则返回为空。
SQL> select name,value from v$spparameter where name='open_cursors';
NAME
---------------------------------------------------------------------
VALUE
---------------------------------------------------------------------
open_cursors
300