首页 > 代码库 > 参数文件管理

参数文件管理

初始化文件用来记录oracle数据库的基本配置信息,包括内存分配信息及控制文件等。通常启动数据库时,系统读取初始化文件启动oracle数据库到nomount阶段。参数文件通常在$ORACLE_HOME/dbs/目录下,有两种文件格式保存,如下:

1、pfile:静态参数文件,一般名为init<sid>.ora,文本文件格式,linux下vi编辑器访问及修改内容,所作更改在下次启动时生效,oracle 9i后引进。

2、spfile:服务器参数文件,一般名为spfile<sid>.ora,二进制格式文件,linux下strings命令查看文件内容,所做更改永久有效,不受关闭和启动的影响,永久驻留于服务器端。支持rman备份。

oracle访问参数文件的顺序:
– spfile<SID>.ora   --oracle数据库创建时自动建立的spfile文件
– spflie.ora        --oracle缺省的spfile文件
– init<SID>.ora     --oracle数据库创建时自动建立的pfile文件
– init.ora          --oracle缺省的pfile文件

pfile和spfile文件相互转换:

pfile-->spfile:SQL>create spfile[=‘*****‘] from pfile[=‘******‘];

spfile-->pfile:SQL>create pfile[=‘******‘] from spfile[=‘******‘];

11g中的新指令,从memory中生成

create spfile = ‘<dir>‘ from memory;

查看系统参数:

SQL>show parameter <parametername>

修改参数文件参数:

pfile:vi编辑器编辑保存,下次启动有效。

spfile:alter system|session set parametername=<parametername>

scope=memory | spfile |both sid=<‘sid‘>|‘*‘;

附:--  查询视图:v$parameter

isses_modifiable  可以被alter session修改

isssy_modifiable  可以被alter system修改

--  sid:

sid :只对某一个实例

* :对所有的实例修改

--  可以从v$parameter视图中来得到哪些可以使用alter system修改,哪些可以使用alter session来修改。

SQL> col name for a40

SQL> select NAME,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter

2  where name like ‘sql%‘;

NAME ISSES ISSYS_MOD

---------------------------------------- ----- ---------

sql_trace                                TRUE  IMMEDIATE

sql92_security                           FALSE FALSE

sql_version                              TRUE  FALSE

sqltune_category                         TRUE  IMMEDIATE

SQL> select distinct issys_modifiable from v$parameter;

ISSYS_MOD

---------

IMMEDIATE   /*动态参数,直接修改到内存的参数alter system set <> = <>,后面不需要跟scope*/

FALSE       /*静态参数,不能直接修改到内存,alter system set <> = <> scope = spfile*/

DEFERRED    /*会话级别参数,直接通过alter session set <> = <>*/

SQL> select distinct isses_modifiable from v$parameter;

ISSES

-----

TRUE

FALSE

删除参数文件:

pfile:可以直接vi或vim修改或删除。

spfile:以下命令进行删除,参数文件将恢复默认值。

SQL>alter system|session reset parametername=<name>

scope= memory | spfile |both sid=<‘sid‘>|‘*‘;

从指定参数文件启动数据库:

SQL>startup pfile=<dir>

SQL>startup spfile=<dir>

--查看当前使用的哪个参数文件启动的

SQL> select distinct isspecified from v$spparameter;

ISSPEC

------

FALSE

/*

如果第一个值是FALSE还是TRUE,如果是FALSE,则是pfile,否则则是spfile.

也可以尝试修改spfile ,如果报错则可以判断是从pfile启动,当然所修改的参数必须是可以修改的*/

SQL> alter system set sga_target = 200m scope = spfile;

alter system set sga_target = 200m scope = spfile

*

ERROR at line 1:

ORA-32001: write to SPFILE requested but no SPFILE specified at startup

隐藏参数

SQL> desc x$ksppi /*Name列中为隐藏参数的名字*/

Name Null?    Type

----------------------------------------- -------- ----------------------------

ADDR                                               RAW(4)

INDX                                               NUMBER

INST_ID                                            NUMBER

KSPPINM                                            VARCHAR2(80)

KSPPITY                                            NUMBER

KSPPDESC                                           VARCHAR2(255)

KSPPIFLG                                           NUMBER

KSPPILRMFLG                                        NUMBER

KSPPIHASH                                          NUMBER

--下面视图中为隐藏参数的值

SQL> desc x$ksppcv

Name Null?    Type

----------------------------------------- -------- ----------------------------

ADDR                                               RAW(4)

INDX                                               NUMBER

INST_ID                                            NUMBER

KSPPSTVL                                           VARCHAR2(512)

KSPPSTDVL                                          VARCHAR2(512)

KSPPSTDF                                           VARCHAR2(9)

KSPPSTVF                                           NUMBER

KSPPSTCMNT                                         VARCHAR2(255)

--使用下面的命令来查看系统中的隐藏参数;

SQL> select ksppinm,ksppstvl from x$ksppi a,x$ksppcv b where a.indx = b.indx;

and ksppinm like ‘%_allow%‘;

KSPPINM                                                            KSPPSTVL

----------------------------------------                           ----------

_allow_level_without_connect_by                                    FALSE

_asm_allow_only_raw_disks                                          TRUE

_asm_allow_resilver_corruption                                     FALSE

参数文件管理