【道森试听】参数文件——Dave偶像

oracle 运维需要注意的参数。

Oracle 参数文件说明

一、spfilepfile说明

思考:那么这2者是什么关系?或者说有什么联系?

数据一样,格式不同,可以互相转换

Pfile存在的意义——可以修改

这2个文件里保存的内容是一样,但Pfile就是普通的文本文件,我们可以直接修改,spfile是二进制文件。不能直接进行修改。

oel57t1:oracle:rac2 > cd $ORACLE_HOME/dbs

oel57t1:oracle:rac2 > ll

-rw-r----- 1 oracle oinstall     8385 Sep 11  1998 init.ora

-rw-r--r-- 1 oracle oinstall      917 Apr 19 10:10 initTEST.ora

-rw-r----- 1 oracle oinstall     2560 Apr 18 22:00 spfileTEST.ora

-rw-r----- 1 oracle oinstall 15286272 Feb20 16:06 snapcf_TEST.f

snapcf_TEST.F为控制文件的快照

 

思考: Oracle 启动的时候,init.ora, pfile,spfile他们之间的加载顺序是怎么样的?

10gspfile>pfile>init.ora

11g:使用spfile >pfile

 

思考:如果这3个文件都没有,数据能正常启动吗?

不能

11g

[oracle@davedbs]$ ls

hc_dave.dat initdave.ora init.ora lkDAVEora pwdavespfiledave.ora

[oracle@davedbs]$ mv init.ora init.ora.bak

[oracle@davedbs]$ mv initdave.ora initdave.ora.bak

[oracle@davedbs]$ mv spfiledave.ora spfiledave.ora.bak

SQL> shutdown immediate

SQL> startup

ORA-01078:failure in processing system parameters

LRM-00109:could not open parameter file'/u01/app/oracle/product/11.1.0/db_1/dbs/initlinbopqm.ora'

[oracle@davedbs]$ mv init.ora.bak init.ora

SQL> startup

ORA-01078:failure in processing system parameters

LRM-00109:could not open parameter file'/u01/app/oracle/product/11.1.0/db_1/dbs/initlinbopqm.ora'

结论:11g不去找init

 

--查看11g的init.ora文件内容

[oracle@davedbs]$ cat init.ora

# Change '<ORACLE_BASE>' to point tothe oracle base (the one you specify at

# install time)

db_name='ORCL'

memory_target=1G

processes = 150

audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'不是绝对路径

audit_trail ='db'

db_block_size=8192

db_domain=''

db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'

db_recovery_file_dest_size=2G

diagnostic_dest='<ORACLE_BASE>'

dispatchers='(PROTOCOL=TCP)(SERVICE=ORCLXDB)'

open_cursors=300

remote_login_passwordfile='EXCLUSIVE'

undo_tablespace='UNDOTBS1'

# You may want to ensure that control filesare created on separate physical

# devices

control_files = (ora_control1,ora_control2)

compatible ='11.2.0'

在oracle11g中init只是个模板

结论:

11g 使用spfile>pfile

init.ora是模板文件,修改以后才能使用

 

二、spfilepfile转换

SQL> create pfile from spfile;

这种方式创建的pfile默认存放在什么目录下?$ORACLE_HOME/dbs

如果我们想创建到其他的位置,那么在转换的时候,指定路径就可以了。

SQL> create pfile='/u01/initdave.ora' from spfile;

File created.

思考:我们有哪些方法可以判断数据库是从spfile启动的还是pfile

1show parameter spfile

2SQL> select distinctISSPECIFIED from v$spparameter;

如果只有FALSE,使用的是PFILE

如果有TRUE,说明用的是SPFILE

 

三、相关参数说明

1.如何查看参数是否立即修改

Oracle 里面有些参数我们是可以直接修改,及时就能生效,但有些参数参数是必须重启完之后才能生效的。

SQL>desc v$parameter

 Name                                     Null?    Type

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

 NUM                                               NUMBER

 NAME                                              VARCHAR2(80)

 TYPE                                              NUMBER

 VALUE                                             VARCHAR2(512)

 DISPLAY_VALUE                                     VARCHAR2(512)

 ISDEFAULT                                         VARCHAR2(9)

 ISSES_MODIFIABLE                                   VARCHAR2(5)

 ISSYS_MODIFIABLE                                   VARCHAR2(9)

 ISINSTANCE_MODIFIABLE                              VARCHAR2(5)

 ISMODIFIED                                        VARCHAR2(10)

 ISADJUSTED                                        VARCHAR2(5)

 ISDEPRECATED                                      VARCHAR2(5)

 DESCRIPTION                                       VARCHAR2(255)

 UPDATE_COMMENT                                    VARCHAR2(255)

 HASH                                              NUMBER

这里面有个ISSYS_MODIFIABLE的列,我们可以通过这个列来进行判断,我们修改是否能及时生效。

e.g.

SQL> set lin 120

SQL> col name for a25

SQL> col ISSYS_MODIFIABLE for a25

SQL> select NAME,ISSYS_MODIFIABLE from v$parameterwhere name='processes';

NAME                      ISSYS_MODIFIABLE

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

processes                 FALSE

DEFERRED   ----->也是动态参数,对于当前session无效,下一个session生效

FALSE       ----->静态参数,需要重启db才能生效

IMMEDIATE  ----->动态参数,立即生效

 

2.SGA PGA7/3开比8/2开好)

SQL> show parameter SGA

NAME                                          TYPE                             VALUE

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

lock_sgaboolean                          FALSE

pre_page_sgaboolean                          FALSE

sga_max_size                         big integer                      272M

sga_target                           big integer                      272M

 

SQL> SHOW PARAMETER MEMORY

NAME                                 TYPE                             VALUE

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

hi_shared_memory_address             integer                          0

shared_memory_address                integer                          0

 

11G

SQL> show parameter sga;

 

NAME                                 TYPE        VALUE

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

lock_sgaboolean     FALSE

pre_page_sgaboolean     FALSE

sga_max_size                         big integer 1536M

sga_target                           big integer 1536M

 

SQL> show parameter memory  

 

NAME                                 TYPE        VALUE

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

hi_shared_memory_address             integer     0

memory_max_target                    big integer 1648M

memory_target                        big integer 1648M

shared_memory_address                integer     0

 

sga_max_size                         big integer 1536M

sga_target                           big integer 1536M

memory_max_target                    big integer 1648M

memory_target                        big integer 1648M

memory 这两个参数是 11新增的,10g中没有。memory_max_target 是设定Oracle能占OS多大的内存空间

 

查看

SQL> col value for a20

SQL> select name,value ,ISSYS_MODIFIABLE fromv$parameter where name like 'sga%';

NAME                      VALUE                ISSYS_MODIFIABLE

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

sga_max_size              285212672            FALSE

sga_target                285212672            IMMEDIATE

SQL>  select name,value,issys_modifiablefrom v$parameter where name like 'pga%';

NAME                      VALUE                ISSYS_MODIFIABLE

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

pga_aggregate_target      94371840             IMMEDIATE

SQL> select name,value,issys_modifiable fromv$parameter where name like 'memory%';

no rows selected

注意这里的:memory_max_target,sga_max_size两个参数修改是需要重启数据库的。所以我们在安装的时候就需要设定为一个较大的值。而memory_target,pga_aggregate_target,sga_target可以在线修改。所以我们以后可以直接修改。

小技巧:memory_max_target,sga_max_size可以设大点,有冗余,以后就不用关机去调

 

3. undo 表空间相关的参数

SQL> show parameter undo

NAME                                         TYPE                             VALUE

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

undo_management                      string                           AUTO

undo_retentionundo保留时间)             integer                          900(秒)

undo_tablespace                      string                           UNDOTBS1

undo_retention只是指定undo 数据的过期时间,默认是900s,15分钟。

生产环境建议改成10800s,即3个小时。

SQL> alter system set undo_retention=10800scope=both;

 

4.sessions processes 参数

SQL> select name,value,issys_modifiable from v$parameterwhere name='sessions';

NAME                      VALUE                ISSYS_MODIFIABLE

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

sessions                  170                  FALSE

SQL> select name,value,issys_modifiable fromv$parameter where name='processes';

NAME                      VALUE                ISSYS_MODIFIABLE

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

processes                 150                  FALSE

Oracle 11gR1 以前:

       数据库默认的sessions 是170,Processes 是150。//sessions=1.1*processes+5

Oracle 11gR2 以后:

数据库默认的sessions是247,Processes 是150。// SESSIONS=(1.5* PROCESSES) + 22

一般Processes 150不够,需要修改!

两种修改方法:

1、修改pfile

2、SQL> alter system setprocesses=1000 scope=spfile;     //根据实际情况设定,太大会消耗内存

SQL> select name,value,issys_modifiable fromv$parameter where name='processes';

NAME                      VALUE                ISSYS_MODIFIABLE

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

processes                 150                  FALSE

他们是静态参数,在一开始就要设置好,否则以后更改要重启数据库

 

5.log_archive_dest_1 参数

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST //默认路径FRA

Oldest online log sequence     10

Next log sequence to archive   12

Current log sequence           12

思考: FRA 有没有大小限制?(flash_recovert_area-----------FRA有!

我这里log_archive_dest_1的参数值为空,因为我们使用的是默认位置,即归档文件存放到闪回恢复区了。放在闪回恢复区是有一定的风险,如果我们没有及时的删除归档文件,那么就可能出现闪回恢复区使用率100%的情况,这种情况下,数据库是会hang住的。所以建议将归档文件指定到特殊的位置。


会出现这个


6.CONTROL_FILE_RECORD_KEEP_TIME 参数

控制文件可参考:http://blog.csdn.net/sharqueen/article/details/8812463

我们上节课也讲过控制文件,控制文件保存的记录分2种类型,一种是可循环重用的,另一种是不可循环重用的。

循环重用的记录包括archivedlog file 和RMAN backups。

非循环重用记录保存重要的信息,比如tablespace,data files,online redo log files 和redo threads。 

 

因为我们使用RMANnocatalog来备份数据库的时候,RMAN备份的记录信息最后会写入到控制文件的循环重用的位置。而在RMAN 恢复的时候,如果没有这些备份记录,即使有RMAN 的物理备份集也是不能恢复的。

所以我们在配置RMAN 备份的时候,需要配置控制文件的自动备份同时也建议在完成数据和归档的备份之后,最后再备份一下控制文件。

 

我们这里的参数:CONTROL_FILE_RECORD_KEEP_TIME就是指定控制文件中循环重用记录保存时间的。

该默认值是7,也就是说,在默认情况下,Oracle 会将RMAN备份和恢复记录保存7天。该参数设置为0到365之间的任意值。如果设置为0,将禁止扩展控制文件,并且会使得RMAN备份的保存周期不稳定。

一般建议将CONTROL_FILE_RECORD_KEEP_TIME参数设置为不小于选中数据库的备份保存周期,否则就可能在备份介质上有数据库备份,但是控制文件不存在与备份相关的备份记录,在这种情况下,将无法恢复这些较早的文件。

SQL> set lin 120

SQL> col value for a10

SQL> col ISSYS_MODIFIABLE for a20

SQL> col name for a40

SQL> select name,value,issys_modifiable from v$parameterwhere name='control_file_record_keep_time';

NAME                      VALUE                ISSYS_MODIFIABLE

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

control_file_record_keep_time             20(天)IMMEDIATE

修改CONTROL_FILE_RECORD_KEEP_TIME参数:

SQL> alter system setcontrol_file_record_keep_time=20;

System altered.

SQL> show parameter control_file_record_keep_time

NAME                                   TYPE                              VALUE

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

control_file_record_keep_time        integer                           20

 

7.修改用户profileFAILED_LOGIN_ATTEMPTS

Profile文件里保存了一些资源的限制信息。如果在创建用户时指定了profile。那么用户就不能超过profile里指定的资源。

在我们创建用户的时候,如果没有指定profile,那么就可以使用默认的profile。名称叫DEFAULT。

验证:

SQL> col username for a15

SQL> col profile for a15

SQL> set lin 80

SQL> select username,profile fromdba_users where username='SCOTT';

USERNAME                       PROFILE

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

SCOTT                          DEFAULT

 

SQL> create user dave identified by davedefault tablespace users temporary tablespace temp profile profile_personal;

这里我们使用的是profile_personal的这个profile,它是我们自己创建的。

 

可以使用如下SQL查看profile里的具体内容:

select * from dba_profiles whereprofile='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

DEFAULT                        COMPOSITE_LIMIT                  KERNEL   UNLIMITED

DEFAULT                        SESSIONS_PER_USER                KERNEL   UNLIMITED

DEFAULT                       CPU_PER_SESSION                  KERNEL   UNLIMITED

DEFAULT                        CPU_PER_CALL                     KERNEL   UNLIMITED

DEFAULT                       LOGICAL_READS_PER_SESSION       KERNEL   UNLIMITED

DEFAULT                        LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED

DEFAULT                        IDLE_TIME                        KERNEL   UNLIMITED

DEFAULT                        CONNECT_TIME                     KERNEL   UNLIMITED

DEFAULT                        PRIVATE_SGA                      KERNEL   UNLIMITED

DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10

DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD UNLIMITED

 

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT

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

DEFAULT                       PASSWORD_REUSE_TIME             PASSWORD UNLIMITED

DEFAULT                        PASSWORD_REUSE_MAX               PASSWORD UNLIMITED

DEFAULT                       PASSWORD_VERIFY_FUNCTION        PASSWORD NULL

DEFAULT                        PASSWORD_LOCK_TIME               PASSWORD UNLIMITED

DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD UNLIMITED

我们需要注意的是FAILED_LOGIN_ATTEMPTS这个限制,

DEFAULT     FAILED_LOGIN_ATTEMPTS           PASSWORD 10

因为这个参数默认是10. 即当我们用户连续10次输入错误密码,这个用户就会被锁住。

一般在生产环境下,会根据具体情况设置这个参数,如果防止用户被锁,则将这个参数设置为UNLIMITED根据系统的需求来决定!

修改的SQL:

SQL> alter profile DEFAULT limitFAILED_LOGIN_ATTEMPTS UNLIMITED;

Profile altered.

DEFAULT            FAILED_LOGIN_ATTEMPTS            PASSWORD    UNLIMITED

可以对不同类型的用户建立不同的profile来不同控制

 

8.DB_FILES 参数

实际控制数据文件的多少

DB_FILES 参数指定数据库能打开的最大的datafiles的数量,这个最大值也会受操作系统的限制。

在Oracle 11gR2 中,这个参数的默认值是200。

SQL> show parameter db_files

NAME                                      TYPE                          VALUE

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

db_files                                      integer                          200

如果我们增加DB_FILES的值,那么必须重启instance,才能让修改生效。如果是DG 环境,也需要保证主备库参数一致。(此为静态参数)

SQL> select name,value,issys_modifiable from v$parameterwhere name='db_files';

NAME                    VALUE      ISSYS_MODIFIABLE

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

db_files                      200        FALSE

 

9.open_links_per_instanceopen_links参数

SQL> show parameter open

NAME                    TYPE          VALUE

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

open_cursors               integer            300

open_links                 integer            4

open_links_per_instance      integer            4

read_only_open_delayed         boolean          FALSE

session_max_open_files      integer            10

open_links_per_instance和open_links参数用来控制dblink的数量的。默认值是4。

如果系统中有较多的使用dblink,就可能会遇到ORA-02020的错误。

[oracle@sharqueendbs]$ oerrora 02020

02020, 00000, "too many database linksin use"

// *Cause: The current session has exceeded the INIT.ORA open_links maximum.

// *Action: Increase the open_links limit,or free up some open links by

//         committing or rolling back the transaction and canceling open

//         cursors that reference remote databases.

SQL> col name for a15

SQL> select name,value,issys_modifiable fromv$parameter where name='open_links';

NAME      VALUE      ISSYS_MODIFIABLE

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

open_links      4         FALSE

修改下,再重启数据库

SQL> alter system set open_links=10 scope=spfile;

System altered.

SQL> alter system set open_links_per_instance=10scope=spfile;

System altered.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218992 bytes

Variable Size              88082000 bytes

Database Buffers          192937984 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL> show parameter open

NAME                                              TYPE                             VALUE

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

open_cursors                         integer                          300

open_links                           integer                          10

open_links_per_instance              integer                          10

read_only_open_delayed                     boolean                          FALSE

session_max_open_files               integer                          10

 

这些参数在一开始设计数据库就要修改好,以免以后不够用要重新修改,重启数据库!

关于oracle 的参数,我们今天就讲这么多,实际上还有很多其他的参数。这个要在工作慢慢的积累。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值