ORACLE参数文件
简介
参数文件记录了数据库的配置。在数据库启动时,Oracle要根据参数文件中的参数配置数据库。如果为各个内存池分配多少内存,允许打开的进程数和会话数等。要让数据库启动,必须先读取参数文件。参数文件中的参数,我们通常称其为初始化参数,简称就是参数。
参数文件分类
pfile
Pfile 文本格式,可以直接编辑,默认路径在$ORACLE_BASE/admin/$ORACLE_SID/pfile,文件格式为init
Spfile
Spfile 服务器参数,二进制参数,从9i开始启用,只能放在ORACLE服务器端,可以被rman备份,因为rman只能备份二进制文件。只能用oracle指令alter system|session set <>修改;,spfile的文件格式名是spfile
数据库启动选择参数的优先级
Spfile
创建参数文件
创建参数文件语法
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 memory和spfile都修改。
system和session
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_name与db_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