ITPub博客

首页 > 数据库 > Oracle > oracle 关于--参数文件

oracle 关于--参数文件

原创 Oracle 作者:邱东阳 时间:2014-03-26 16:51:54 0 删除 编辑

参数文件就是来定义数据库启动的时候一些相关配置,要根据参数文件中的参数设置来分配内存,允许打开进程,会话等等一些信息。要想让数据库启动,必须先读取参数文件。参数文件中的参数,通常称为初始化参数,简称为参数。


参数文件区别

Linux 环境

 

参数文件一共有两大类:

Pfile

Spfile

文件默认位置:

Pfile: $ORACLE_HOME/dbs/init$ORACLE_SID.ora   (9i 与之前版本,10g后就不用pfile)

Pfile:$ORACLE_BASE/admin/$ORACLE_SID/pfile/init.ora.

Spfile:$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora

区别:

其中pfile 是文本文件 ,可以通过vi编辑   

 

Spfile 是二进制文件,是服务器参数,所以只能存放在服务器端. 可以被RMAN备份

可以登录数据库alter system|session  set parameter_name=values  scope=memory|spfile|both; 修改 

 

Oracle启动读取参数文件优先级别

首先读取spfile.ora 如果未找到

读取 spfile.ora  如果未找到

读取init.ora 如果未找到启动失败

 

 

 

 

参数文件的转化

Pfile与spfile是可以相互转化的

 

创建内容为spfile的pfile

Create pfile from spfile;(默认路径$ORACLE_HOME/dbs/init$ORACLE_SID.ora)

可以指定pfile路径

Create pfile =’/u01/app….’  from spfile;

创建spfile

Create spfile from pfile;

指定路径

Create spfile=’/u01/app/..’ from pfile=’/u01/app/..’;

 

在11g中可以直接转化内存

Create spfile’/u01/app..’  from memory;

 

如何判断当前数据库使用的是那么参数文件启动

 

SQL> show parameter service_name

 

NAME                                 TYPE        VALUE

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

service_names                        string      fengzi

SQL> select distinct isspecified from v$spparameter;

 

ISSPEC

------

TRUE

FALSE

 

SQL>

 

如果第一个值为FALSE 就是使用pfile

如果第一个值为TRUE 就是使用的spfile

 

还有一种方法:修改一个正确的参数

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>

如果修改成功就为spfile启动,报错32001就为pfile启动。

 

修改pfile参数使其生效(需要关闭数据库)

 

[oracle@dongyang ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 24 13:15:18 2014

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

创建pfile

SQL> create pfile from spfile;

 

File created.

 

SQL>

[oracle@dongyang dbs]$ pwd

/u01/app/oracle/product/10.2.0/db_1/dbs

[oracle@dongyang dbs]$ ls

ab_+ASM.dat    init+ASM.ora  initfengzi.ora  orapw+ASM        spfile+ASM.ora

hc_+ASM.dat    init.ora      lk+ASM          orapwfengzi

hc_fengzi.dat  initdw.ora    lkFENGZI        snapcf_fengzi.f

[oracle@dongyang dbs]$

编辑 pfile 修改参数  修改其中的某些值

[oracle@dongyang dbs]$ vi initfengzi.ora

 

fengzi.__db_cache_size=402653184

fengzi.__java_pool_size=16777216

fengzi.__large_pool_size=16777216

fengzi.__shared_pool_size=150994944

fengzi.__streams_pool_size=0

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

*.background_dump_dest='/u01/app/oracle/admin/fengzi/bdump'

*.compatible='10.2.0.1.0'

*.control_file_record_keep_time=20

*.control_files='+DATA/fengzi/controlfile/current.269.842186993','+DATA/fengzi/controlfile/current.270.842186999'

*.core_dump_dest='/u01/app/oracle/admin/fengzi/cdump'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='fengzi'

*.db_recovery_file_dest='+DATA'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=fengziXDB)'

*.job_queue_processes=10

*.log_archive_dest_1='LOCATION=+DATA/fengzi/'

*.log_archive_format='%t_%s_%r.dbf'

*.open_cursors=1000

*.pga_aggregate_target=199229440

*.processes=300

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_max_size=1074790400

关闭数据库使用pfile启动库并更新spfile

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initfengzi.ora';

ORACLE instance started.

 

Total System Global Area 1090519040 bytes

Fixed Size                  2020160 bytes

Variable Size             671091904 bytes

Database Buffers          402653184 bytes

Redo Buffers               14753792 bytes

Database mounted.

Database opened.

SQL> create spfile from pfile;      (因为参数文件的优先级别,所以修改pfile一定要更新spfile)

 

File created.

 

SQL>

 

修改spfile参数

alter system|session  set parameter_name=values  scope=memory|spfile|both  sid=’sid’|’*’;

system---系统的

session—会话的

判断该使用哪个修改需查看视图v$parameter

 

其中ISSES_MODIFIABLE为被alter session修改

     ISSYS_MODIFIABLE为被 alter system 修改

值为TURE 可以被修改

值为FALSE  表示为静态参数,不能直接修改到内存 需要scope=spfile修改

值为IMMEDIATE 表示为动态参数,可以直接修改到内存 可以scope=both

值为DEFERRED 表示为会话参数 只对当前实例生效 下次启动无效

SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE  from v$parameter;

NAME                                   ISSES         ISSYS

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

tracefile_identifier                        TRUE        FALSE

lock_name_space                       FALSE         FALSE

processes                              FALSE         FALSE

sessions                                FALSE        FALSE

timed_statistics                          TRUE        IMMEDIATE

timed_os_statistics                       TRUE        IMMEDIATE

resource_limit                            FALSE      IMMEDIATE

license_max_sessions                     FALSE       IMMEDIATE

license_sessions_warning                 FALSE        IMMEDIATE

cpu_count                              FALSE        IMMEDIATE

instance_groups                         FALSE         FALSE

event                                  FALSE          FALSE

sga_max_size                           FALSE          FALSE

…………

 

 

memory--- 表示只修改当前实例内存 下次启动不生效

spfile---表示 只对spfile修改 下次启动才会生效 当前实例内存是没有修改

both-----表示 当前实例内存与spfile都修改

其中both为默认值。

 

Sid=’sid’ 为指定实例名

Sid=’*’ 为所有实例

单实例状态下无需使用,只有在RAC情况下可以选择使用

例子:

 

首先要确认要修改参数的数值

SQL> show parameter sga_

 

NAME                                 TYPE        VALUE

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

lock_sga                             boolean     FALSE

pre_page_sga                         boolean     FALSE

sga_max_size                         big integer 1040M

sga_target                           big integer 576M

SQL>

尝试默认scope=both方式修改

SQL> alter system set sga_max_size=1060m;

alter system set sga_max_size=1060m

                 *

ERROR at line 1:

ORA-02095: specified initialization parameter cannot be modified

当前的参数是初始化参数不能被修改。

只能改到参数文件中使下次启动生效

使用scope=spfile修改

SQL> alter system set sga_max_size=1060m scope=spfile;

 

System altered.

 

SQL>

使用scope=memory修改参数

SQL> show parameter pga

 

NAME                                 TYPE        VALUE

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

pga_aggregate_target                 big integer 190M

SQL> alter system set pga_aggregate_target=200m scope=memory;

 

System altered.

可以使用cope=both方式修改

SQL> alter system set pga_aggregate_target=200m scope=both;

 

System altered.

 

SQL>

关于隐藏参数

 

查看隐藏参数

SQL> desc x$ksppi                                                

 Name                                      Null?    Type

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

 ADDR                                               RAW(8)

 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(8)

 INDX                                               NUMBER

 INST_ID                                            NUMBER

 KSPPSTVL                                           VARCHAR2(512)

 KSPPSTDVL                                          VARCHAR2(512)

 KSPPSTDF                                           VARCHAR2(9)

 KSPPSTVF                                           NUMBER

 KSPPSTCMNT                                         VARCHAR2(255)

 

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

 

KSPPINM

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

KSPPSTVL

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

_ash_sample_all

FALSE

 

_ash_dummy_test_param

0

 

_threshold_alerts_enable

1

 

 

KSPPINM

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

KSPPSTVL

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

_addm_auto_enable

TRUE

 

_addm_version_check

TRUE

 

_addm_skiprules

……

……

 

删除参数

删除一个参数也就是将参数改回初始化设置的默认值。

 

如果使用的是pfile 直接编辑删除就好了。

 

使用spfile

SQL> show parameter pga

 

NAME                                 TYPE        VALUE

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

pga_aggregate_target                 big integer 200M

SQL> alter system reset pga_aggregate_target scope=spfile sid='*';

 

System altered.

 

SQL>

删除一个参数必须要指定sid=’*’。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29532781/viewspace-1130083/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-03-11

  • 博文量
    38
  • 访问量
    200122