ORACLE参数文件

简介

参数文件记录了数据库的配置。在数据库启动时,Oracle要根据参数文件中的参数配置数据库。如果为各个内存池分配多少内存,允许打开的进程数和会话数等。要让数据库启动,必须先读取参数文件。参数文件中的参数,我们通常称其为初始化参数,简称就是参数。

参数文件分类

pfile

Pfile 文本格式,可以直接编辑,默认路径在$ORACLE_BASE/admin/$ORACLE_SID/pfile,文件格式为init.ora 或者在$ORACLE_HOME/dbs/ 下的init.ora

Spfile

Spfile 服务器参数,二进制参数,从9i开始启用,只能放在ORACLE服务器端,可以被rman备份,因为rman只能备份二进制文件。只能用oracle指令alter system|session set <>修改;spfile的文件格式名是spfile.ora,默认目录在$ORACLE_HOME/dbs/

数据库启动选择参数的优先级

Spfile.ora-----------à initM.ora--------------àinit..ora

创建参数文件

创建参数文件语法

Create pfile from spfile

create pfile=‘filepath’ from spfile

Create spfile from pfile

create spfile from pfile=‘filepath’

11g

create spfile from memory

create spfile='filepath' from memory

操作演示

Pfile参数文件

$ORACLE_HOME/dbs/查看参数文件pfile,没有initorcl.ora参数文件

[oracle@rac1 dbs]$ ls |grep ini

init.ora

initdw.ora

SQL> create pfile from spfile;

File created. 

[oracle@rac1 dbs]$ ls |grep ini

init.ora

initdw.ora

initorcl.ora

注意:如果在$ORACLE_HOME/dbs/的参数文件存在,且正在使用就不能创建pfile,或者更改创建的路径。

/u01/app/oracle/admin/orcl/pfile/的文件如下

[oracle@rac1 dbs]$ cd /u01/app/oracle/admin/orcl/pfile/

[oracle@rac1 pfile]$ ls

init.ora.422013145839

创建pfile

SQL> create pfile='/u01/app/oracle/admin/orcl/pfile/initorcl.ora' from spfile;

File created.

该文件被创建

[oracle@rac1 pfile]$ ls

init.ora.422013145839initorcl.ora

spfile参数文件

SQL> create spfile from pfile;

create spfile from pfile

ERROR at line 1:

ORA-32002: cannot create SPFILE already being used by the instance

Spfile参数文件正在被使用,不能覆盖,可以指定spfile到其他路径。因为默认情况下参数文件会放在$ORACLE_HOME/dbs目录,我们可以指定到$ORACLE_BASE/admin/$ORACLE_SID/spfile目录

[oracle@rac1 dbs]$ cd $ORACLE_BASE/admin/orcl

[oracle@rac1 orcl]$ mkdir spfile

SQL> create spfile='$ORACLE_BASE/admin/$ORACLE_SID/spfile/spfileorcl.ora' from pfile;

File created.

[oracle@rac1 ~]$ cd /u01/app/oracle/admin/orcl/spfile/

[oracle@rac1 spfile]$ ls

spfileorcl.ora

或者关闭实例,指定使用pfile参数文件启动

SQL> startup pfile='/u01/app/oracle/admin/orcl/pfile/initorcl.ora';

ORACLE instance started.

Total System Global Area285212672 bytes

Fixed Size1218992 bytes

Variable Size100664912 bytes

Database Buffers180355072 bytes

Redo Buffers2973696 bytes

Database mounted.

Database opened.

SQL> create spfile from pfile;

File created.

这样之后就覆盖了之前的spfile文件。

如何查看当前实例使用的spfile还是pfile

SQL> select distinct ISSPECIFIED from v$spparameter;

ISSPEC

------

FALSE

ISSPEC第一个值是false时,则是pfile,而且无法使用oracle指令修改

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

ISSPEC第一个值是true时,则是spfile

SQL> select distinct ISSPECIFIED from v$spparameter;

ISSPEC

------

TRUE

FALSE

参数文件的修改

命令alter system|session set parametername=value scope=memory|spfile|both

memory 只对当前instance有效,重启后无效

spfile 只对spfile修改,下次启动后生效,当前实例内存没有修改

both memoryspfile都修改。

systemsession

v$parameter ----isses_modifiable=true可以被alter session 修改

v$parameter ---- issys_modifiable=true可以被alter system 修改

sid=’sid’|’*’

‘sid’只对当前实例有效,’*’对所有实例有效,适用于集群。

SQL> alter system set sga_max_size=200m ;

alter system set sga_max_size=200m

*

ERROR at line 1:

ORA-02095: specified initialization parameter cannot be modified

报错

SQL> a scope=spfile 在前一个命令后面追加scope=spfile

1* alter system set sga_max_size=200m scope=spfile

SQL> /

System altered.

SQL> select instance_name from v$instance;

INSTANCE_NAME

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

orcl

SQL> alter system set sga_max_size=200m scope=spfile sid='orcl';

System altered.

SQL> alter system set pga_aggregate_target = 20M scope=memory;

System altered.

SQL> select distinct issys_modifiable from v$parameter;

ISSYS_MOD

---------

IMMEDIATE

FALSE

DEFERRED

Immediate 动态参数,直接修改到内存

Alter system set <>=<>;

False 静态参数,下一次启动才能更改,不能直接修改到内存。

Deferred 会话级别的参数 alter sessionset <>=<>;只对当前生效,下次启动不生效

初始化参数详解

[oracle@rac1 dbs]$ vi initorcl.ora 

orcl.__db_cache_size=180355072

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=92274688

orcl.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'后台进程的日志

*.cluster_database=FALSE

*.compatible='10.2.0.1.0'可以兼容的版本

*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'定义控制文件

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump' 服务器进程相关日志

*.db_block_size=8192 内存块的大小

*.db_domain='' 域名的后缀

*.db_file_multiblock_read_count=16

*.db_name='orcl' db_namedb_domain构成global_db_name

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' 系统日志恢复存放路径

*.db_recovery_file_dest_size=2147483648 定义闪回区的大小

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' 共享服务器的配置参数

*.job_queue_processes=10 当前作业的进程数

*.open_cursors=600 游标大小

*.pga_aggregate_target=94371840pga的大小

*.processes=1500 可运行多少个进程

*.remote_login_passwordfile='EXCLUSIVE'远程登录要不要用密码文件认证

*.sga_target=285212672

*.undo_management='AUTO'undo表空间的管理方式

*.undo_tablespace='UNDOTBS1' 

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

查找隐藏参数文件

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