新的局点ORACLE上线时参数文件注意的几个要点

二。ORACLE参数文件说明(11gr2为例)
这2个文件里保存的内容是一样的,但PFILE就是普通的文本文件,我们可以直接修改,SPFILE是二进制文件,不能直接进行修改,再SPFILE可以RAMN备份;
我们打开这个目录以$ORACLE_HOME/dbs目录下面为
spfileiptvbms.ora snapcf_orcl.f init.ora这三个文件
snapcf_orcl.f 这个文件是控制文件的快照文件
[oracle@wiihong dbs]$ ls
hc_dave.dat  initdave.ora  init.ora  lkDAVE  orapwdave  spfiledave.ora
mv init.ora init.ora.bak
mv initdave.ora initdave.ora.bak
mv spfiledave.ora spfiledave.ora.bak
SQL> shutdown immediate
SQL> startup
网上的例子启动顺序:spfileiptvbms.ora -->iptvbms.ora -->init.ora测试结果不是这样的
11G中的init.ora文件路径是写得不对的,所以如果没有PFILE,以及把SPFILE丢失后,ORACLE也是无法启动的?
cat init.ora
=========cat init.ora================
[oracle@dave dbs]$ cat init.ora
# Change '<ORACLE_BASE>' to point to the 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 files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
=====================
关键路径就如下面所示,写错了,所以无法启动?
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
init.ora
模板
结论:
11g 使用spfile -》 pfile
init.ora 是模板文件
1.1 spfile 与 pfile 说明
1.2 spfile 和 pfile 转换
create pfile='/u01/oracle/app/aa.ora' from spfile ;
create spfile  from pfile='/u01/oracle/app/aa.ora';
如果我们想创建到其他的位置,那么在转换的时候,指定路径就可以了。
create pfile='/u01/initdave.ora' from spfile;
create pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora' from spfile='/u01/app/oracle/product/11.2.0/db_1/dbs/bak/spfileorcl.ora';
请问怎么样区别到底是PFILE启动的,还是SPFILE启动的呢??
SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /opt/oracle/app/oracle/product
                                                 /11.1/db/dbs/spfileiptvbms.ora
SQL> select distinct ISSPECIFIED FROM V$spparameter;
ISSPEC
------
TRUE
FALSE
说明二种文件都存在,目前是用SPFILE启动数据库的。
总结:
如果只有FALSE,使用的是PFILE,
如果有TRUE,说明用的是SPFILE
alter system set param=value scope=spfile;可以通过这样去设置一个参数在SPFILE的数据库重启之后重新生效。
数据库先查找spfile,若没有再找init<sid>.ora
SQL> select distinct ISSPECIFIED from v$spparameter;
ISSPEC
------
FALSE
TRUE表示是以pfile来启动的,注意备份一个PFILE,在必要时可以转化为SPFILE启动数据,而且可以往里面增加内容字段。
三. 相关参数说明
======================================================
2.1 如何查看参数是否立即修改?
SQL> select distinct ISSPECIFIED from v$spparameter;
ISSPEC
------
FALSE
TRUE
2.1 如何查看参数是否立即修改
ISSES_MODIFIABLE                                   VARCHAR2(5)
SQL>  select name,value,ISSYS_MODIFIABLE from v$parameter where name like 'sga%';
NAME
--------------------------------------------------------------------------------
VALUE                ISSYS_MOD
-------------------- ---------
sga_max_size
562036736            FALSE
sga_target
557842432            IMMEDIATE

SQL> set linesize 100
SQL> col value for a20
SQL> select name,value ,ISSYS_MODIFIABLE from v$parameter where name like 'sga%';
SQL>  select name,value,issys_modifiable from v$parameter where name like 'pga%';
SQL>  select name,value,issys_modifiable from v$parameter where name like 'pga%';
NAME                                                                             VALUE                ISSYS_MOD
-------------------------------------------------------------------------------- -------------------- ---------
pga_aggregate_target                                                             184549376            IMMEDIATE
SQL> select name,value,issys_modifiable from v$parameter where name like 'memory%';
SQL> select name,value,issys_modifiable from v$parameter where name like 'memory%';
NAME                                                                             VALUE                ISSYS_MOD
-------------------------------------------------------------------------------- -------------------- ---------
memory_target                                                                    0                    IMMEDIATE
memory_max_target                                                                0                    FALSE
DEFERRED   ----->也是动态参数,对于当前session无效,下一个session生效
FALSE       ----->静态参数,需要重启db才能生效
IMMEDIATE  ----->动态参数,立即生效
类型----------
75% 25%  SGA  PGA设置这二个参数的比例数据值;
我的测试库是2G内存
注意这里的: memory_max_target,sga_max_size两个参数修改是需要重启数据库的。 所以我们在安装的时候就需要设定为一个较大的值。
而memory_target,pga_aggregate_target,sga_target 可以在线修改。所以我们以后可以直接修改。
SQL> show parameter pga;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 176M
SQL> show parameter sga;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 536M
sga_target                           big integer 532M
SQL> show parameter memory
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 404M
memory_target                        big integer 404M
shared_memory_address                integer     0
=========================================
guard 备库出问题之后,请注意启动的顺序。
online 清空
主库归档 确实
缺失
1. 重建DG
2. 使用RMAN 增量推进
===============================================================================
2.2 SGA 与 PGA
 memory_max_target,sga_max_size设置要大一点,这个不能动态调的;
 
2.3. undo 表空间相关的参数
SQL> show parameter undo;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS2
undo_tablespace
undo_retention 只是指定undo 数据的过期时间,默认是900s,15分钟。这个是默认值
建议改成10800s,即3个小时。
SQL> alter system set undo_retention=10800 scope=both;
System altered.
SQL> select name,value,issys_modifiable from v$parameter where name like 'undo%';
NAME                                                                             VALUE                ISSYS_MOD
-------------------------------------------------------------------------------- -------------------- ---------
undo_management                                                                  AUTO                 FALSE
undo_tablespace                                                                  UNDOTBS2             IMMEDIATE
undo_retention                                                                   10800                IMMEDIATE
2.4 sessions , processes 参数
在Oracle 11gR1 以前:
 数据库默认的sessions 是170,Processes 是150。
在Oracle 11gR2 以后:
数据库默认的sessions 是247,Processes 是150。
11gR1之前:
(1.1 * PROCESSES) + 5
11gR2以后:
SESSIONS=(1.5* PROCESSES) + 22
11.1.6.0
SQL> show parameter sessions;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
sessions                             integer     170
shared_server_sessions               integer
SQL> show parameter processes;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     150
11.2.0.1
SQL> show parameter sessions;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
sessions                             integer     247
shared_server_sessions               integer
SQL> show parameter processes;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     150
上面这二个数据必须要修改里面的数据,生产库上面才能用,建议看实际情况来调整生产库中的数值:1000
我一般1500
SQL> alter system set processes=1000 scope=spfile;
System altered.
SQL> select name,value,issys_modifiable from v$parameter where name='processes';
NAME                                                                             VALUE                ISSYS_MOD
-------------------------------------------------------------------------------- -------------------- ---------
processes                                                                        150                  FALSE
说明这个是静态的参数,初始时得计划调整好这个参数的值。
这个过大 会影响Io的
2.5 log_archive_dest_1 参数

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     10
Next log sequence to archive   12
Current log sequence           12
思考: FRA 有没有大小限制
我这里log_archive_dest_1的参数值为空,因为我们使用的是默认位置,即归档文件存放到闪回恢复区了。
放在闪回恢复区是有一定的风险,如果我们没有及时的删除归档文件,那么就可能出现闪回恢复区使用率100%的情况,
这种情况下,数据库是会hang住的。所以建议将归档文件指定到特殊的位置。
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7537
Next log sequence to archive   7543
Current log sequence           7543
系统变慢后需要怎么样检查数据库的调优呢?
原因:
1.数据库本身的问题??
2.SQL问题??
top ----sql如果是程序生成的就是TRACE确定???
session 有关的
跟 IO有关
vmstat iostat==================================
alter system kill session 'sid,serial#';
在dedicated和shared模式下
查询v$session每个session都有一个paddr
在v$process也是唯一对应的
我理解就是session和process是一一对应的
问题是,oracle联机文档说的
一个process对应多个session 是怎么情况?
就是没测到啊
看的联机文档
alter system kill session 'sid,serial#';
2.2 SGA 与 PGA   GOOGLE翻译,有道词典
2.3. undo 表空间相关的参数
2.4 sessions , processes 参数
2.5 log_archive_dest_1 参数
2.6 CONTROL_FILE_RECORD_KEEP_TIME 参数:
一种是可循环重用的,另一种是不可循环重用的。
一种是可循环重用的,另一种是不可循环重用的。
循环重用的记录包括archived log file 和RMAN backups。
非循环重用记录保存重要的信息,比如tablespace,data files,online redo log files 和redo threads。
因为我们使用RMAN nocatalog来备份数据库的时候
RMAN 备份的记录信息最后会写入到控制文件的循环重用的位置。
经测试上次讲的清除v$archived_log信息后,不影响数据库的恢复,那数据库的归档信息还存储到什么位置呢?
而在RMAN 恢复的时候,如果没有这些备份记录,即使有RMAN 的物理备份及也是不能恢复的。
2.6 CONTROL_FILE_RECORD_KEEP_TIME 参数0-365
所以我们在配置RMAN 备份的时候,需要配置控制文件的自动备份,同时也建议在完成数据和归档的备份之后,最后在备份一下控制文件。
我们这里的参数:CONTROL_FILE_RECORD_KEEP_TIME就是指定控制文件中循环重用记录保存时间的。
该默认值是7,也就是说,在默认情况下,Oracle 会将RMAN备份和恢复记录保存7天。
该参数设置为0到365之间的任意值。如果设置为0,将禁止扩展控制文件,并且会使得RMAN备份的保存周期不稳定。
一般建议将CONTROL_FILE_RECORD_KEEP_TIME 参数设置为不小于选中数据库的备份保存周期,否则就可能在备份介质上有数据库备份,
但是控制文件不存在与备份相关的备份记录,在这种情况下,将无法恢复这些较早的文件。
 
2.7 修改用户profile:FAILED_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 from dba_users where username='BOSS';
USERNAME        PROFILE
--------------- ---------------
BOSS            DEFAULT
SQL> create user boss2 identified by boss2 default tablespace users temporary tablespace temp profile profile_personal;
这里我们使用的是profile_personal的这个profile,它是我们自己创建的。
可以使用如下SQL查看profile里的具体内容:
select * from dba_profiles where profile='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 1
DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD UNLIMITED

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 1
DEFAULT                        PASSWORD_GRACE_TIME              PASSWORD UNLIMITED
我们需要注意的是FAILED_LOGIN_ATTEMPTS这个限制,
DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10
因为这个参数默认是10. 即当我们用户连续10次输入错误密码,这个用户就会被锁住。
修改的SQL:
SQL> alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED;
schema id我们都不用的,用process id
2.7 修改用户profile:FAILED_LOGIN_ATTEMPTS----应用程序锁住的话,就引起相当大的问题的,一般不会设置为10;这个数值必须修改。
PASSWORD_LOCK_TIME--------------改设置的时间???
2.8 DB_FILES 参数
DB_FILES 参数指定数据库能打开的最大的datafiles 的数量,这个最大值也会受操作系统的限制。
如果我们增加DB_FILES 的值,那么必须重启instance,才能让修改生效。 如果是DG 环境,也需要保证主备库参数一致。--------必须要设置?
怎么修改先不讲了
在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$parameter where name='db_files';
NAME                                     VALUE      ISSYS_MODIFIABLE
---------------------------------------- ---------- --------------------
db_files                                 200        FALSE
如果我们增加DB_FILES 的值,那么必须重启instance,才能让修改生效。 如果是DG 环境,也需要保证主备库参数一致。
2.9 open_links_per_instance 和 open_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@iptv-app2:~> oerr ora 02020;
02020, 00000, "too many database links in 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 from v$parameter where name='open_links';
NAME
---------------
VALUE
--------------------------------------------------------------------------------
ISSYS_MOD
---------
open_links
4
FALSE
 SQL>  col name for a25;
SQL> select name,value,issys_modifiable from v$parameter where name='open_links_per_instance';
NAME
-------------------------
VALUE
--------------------------------------------------------------------------------
ISSYS_MOD
---------
open_links_per_instance
4
FALSE
SQL> col name for a15
SQL> select name,value,issys_modifiable from v$parameter where name='open_links';
NAME            VALUE      ISSYS_MODIFIABLE
--------------- ---------- --------------------
open_links      4          FALSE
 
SQL> col name for a25
SQL> select name,value,issys_modifiable from v$parameter where name='open_links_per_instance';
NAME                      VALUE      ISSYS_MODIFIABLE
------------------------- ---------- --------------------
open_links_per_instance   4          FALSE
 
SQL> alter system set open_links=10 scope=spfile;
System altered.
SQL> alter system set open_links_per_instance=10 scope=spfile;
System altered.
总结:
1.1 spfile 与 pfile 说明
思考: Oracle 启动的时候,init.ora, pfile,spfile 他们之间的加载顺序是怎么样的?
1.2 spfile 和 pfile 转换
1.3 查看数据是用spfile 启动还是pfile 启动
三. 相关参数说明
2.1 如何查看参数是否立即修改
重启:因为我们每一次重启数据库都要做出艰难的决定???
2.2 SGA 与 PGA
2.3. undo 表空间相关的参数
2.4 sessions , processes 参数
2.5 log_archive_dest_1 参数
2.6 CONTROL_FILE_RECORD_KEEP_TIME 参数
2.6 CONTROL_FILE_RECORD_KEEP_TIME 参数
2.7 修改用户profile:FAILED_LOGIN_ATTEMPTS
2.8 DB_FILES 参数
2.9 open_links_per_instance 和 open_links 参数
关于oracle 的参数,就写这么多,实际上还有很多其他的参
数。 这个要在工作慢慢的积累。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值