超详细的Oracle 11g安装后参数设置规范,值得收藏

数据库 Oracle
在 Oracle 11g 安装并建库后,需要进行一些调整,使数据库能够稳定、高效地运行。花了一段时间整理了以下的参数设置规范,仅供参考。

 概述

在 Oracle 11g 安装并建库后,需要进行一些调整,使数据库能够稳定、高效地运行。花了一段时间整理了以下的参数设置规范,仅供参考。

[[274359]]

一、建库参数设置

1、进程及会话数(默认150)

  1. --查看进程及会话数 
  2. show parameter process; 
  3. show parameter sessions; 
  4. --修改进程及会话数 
  5. alter system set processes=1200 scope=spfile;  
  6. alter system set sessions=1325 scope=spfile;  

参考:sessions = 1.1 * processes + 5

超详细的Oracle 11g安装后参数设置规范,值得收藏

2、游标数

  1. --查看游标数 
  2. show parameter open_cursors; 
  3. --查看当前打开的游标数目 
  4. select count(*) from v$open_cursor; 
  5. --修改最大游标数 
  6. alter system set open_cursors=1000 scope=both 
超详细的Oracle 11g安装后参数设置规范,值得收藏

3、字符集(建议建库时就设置好)

  1. --查询数据库服务端的字符集:NLS_LANG = language_territory.charset  
  2. select * from nls_database_parameters; 
  3. --常见服务器参数设置 
  4. export NLS_LANG=AMERICAN_AMERICA.UTF8 
  5. export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 
超详细的Oracle 11g安装后参数设置规范,值得收藏

4、sga pga大小

oltp系统参考(要设置好,防止内存抖动): sga=内存*80%*80% pga=内存*80%*20%

  1. show parameter memory; 
  2. show parameter sga; 
  3. show parameter pga; 
  4. --如果要防止高并发情况下的内存抖动,考虑固定内存 
  5. alter system set memory_target=4096m scope=spfile; 
  6. alter system set memory_max_target=4096m scope=spfile;  
  7. alter system set sga_target=3027m scope=spfile;  
  8. alter system set sga_max_size=3027m scope=spfile; 
  9. alter system set pga_aggregate_target=3027m scope=spfile;  
  10. alter system set pga_aggregate_target=1024m scope=spfile; 
超详细的Oracle 11g安装后参数设置规范,值得收藏

5、控制文件

说明:控制文件默认2个,建议增加一个在不同位置

  1. show parameter control; 
  2. alter system set control_files="/oracle/redolog/RFDB/controlfile/o1_mf_gjrb59v8_.ctl","/u01/app/oracle/product/11.2.0/db_1/dbs/control02.ctl" scope=spfile; 
  3. shutdown immediate; 
  4. !cp /oracle/redolog/RFDB/controlfile/o1_mf_gjrb59v8_.ctl /u01/app/oracle/product/11.2.0/db_1/dbs/control02.ctl  
  5. startup;  
  6. show parameter control; 
超详细的Oracle 11g安装后参数设置规范,值得收藏

6、redo日志

redo 默认50M, 改成100M或更大,具体根据每天产生redo的量来设置

  1. --查看相关设置 
  2. select member from v$logfile;  
  3. select group#,members,bytes/1024/1024,status from v$log;  
  4. --增加日志组 
  5. alter database add logfile group 4 ('/home/u01/app/oracle/oradata/nwppdb/redo04.log'size 100M;  
  6. alter database add logfile group 5 ('/home/u01/app/oracle/oradata/nwppdb/redo05.log'size 100M;  
  7. alter database add logfile group 6 ('/home/u01/app/oracle/oradata/nwppdb/redo06.log'size 100M;  
  8. --redo每组默认3组每组一个成员,建议每组两个成员以上  
  9. alter database add logfile member '/home/u01/app/oracle/oradata/nwppdb/redo04_2.log' to group 4;  
  10. alter database add logfile member '/home/u01/app/oracle/oradata/nwppdb/redo05_2.log' to group 5;  
  11. alter database add logfile member '/home/u01/app/oracle/oradata/nwppdb/redo06_2.log' to group 6;  
  12. --切换 
  13. alter system switch logfile;  
  14. --删除之前小的日志组  
  15. alter database drop logfile group 1; 
  16. alter database drop logfile group 2; 
  17. alter database drop logfile group 3; 
超详细的Oracle 11g安装后参数设置规范,值得收藏

7、undo(20~30G,具体看实际业务而定)

  1. --设置undo_retention 参数,默认是900s ,推荐设置为设置为10800,即3个小时  
  2. show parameter undo_retention; 
  3. alter system set undo_retention=10800 scope=spfile;  
  4. --查看undo表空间大小  
  5. select sum(bytes)/1024/1024 "current undo size(M)" from dba_data_files where tablespace_name='UNDOTBS1';  
  6. --增大undo表空间大小 
  7. alter database datafile '/home/u01/app/oracle/oradata/ytzx/undotbs01.dbf' resize 10240M; 
  8. --给undo表空间增加数据文件 
  9. alter tablespace UNDOTBS1 add datafile '/home/u01/app/oracle/oradata/ytzx/undotbs2.dbf' size 10240M autoextend on;  
  10. --查看现在undo表空间大小  
  11. select sum(bytes)/1024/1024 "current undo size(M)" from dba_data_files where tablespace_name='UNDOTBS1';  

 

超详细的Oracle 11g安装后参数设置规范,值得收藏

 

8、临时表空间(20~30G,具体看实际业务而定)

  1. --查看临时表空间大小、是否自动扩展 
  2. select file_name,bytes/1024/1024 "MB",autoextensible,tablespace_name from dba_temp_files;  
  3. --增大临时表空间文件的大小,把20M 调整成10240 M  
  4.  alter database tempfile '/u01/app/oracle/oradata/ytzx/temp01.dbf' resize 10240M autoextend on next 100M maxsize 10G;  
  5. --增加临时文件 
  6. alter tablespace temp add tempfile '/u01/app/oracle/oradata/ytzx/temp02.dbf' size 10240M aitpextemd pm mext 100M maxsize 10G;  

 

超详细的Oracle 11g安装后参数设置规范,值得收藏

 

9、归档及闪回配置

  1. --1、配置归档 
  2. archive log list; 
  3. select name,log_mode,open_mode from v$database
  4. show parameter cluster; //RAC 
  5. alter system set cluster_database=false scope=spfile; //RAC 
  6. shutdown immediate; 
  7. startup mount; 
  8. alter database archivelog; 
  9. alter system set cluster_database=true scope=spfile; //RAC 
  10. shutdown immediate; 
  11. startup; 
  12. --2、配置闪回(11g不需要重启) 
  13. select flashback_on from V$database
  14. show parameter recover; 
  15. alter system set db_recovery_file_dest_size=1500m scope=both; 
  16. alter system set db_recovery_file_dest='+dgrecovery' scope=both; 
  17. alter system set cluster_database=false scope=spfile; //RAC 
  18. shutdown immediate; 
  19. startup mount; 
  20. alter database flashback on
  21. alter system set cluster_database=true scope=spfile; //RAC 
  22. shutdown immediate; 
  23. startup; 
超详细的Oracle 11g安装后参数设置规范,值得收藏

10、关于审计

  1. --考虑关闭审计(oracle 11g 默认打开审计) 
  2. alter system set audit_trail=none sid='*' scope=spfile; 
  3. --说明:11g 默认打开数据库审计,为了避免审计带来的 SYSTEM 表空间的过多占用,可以关闭审计。 
  4. --最近一年审计记录 
  5. select * from aud$ where substr(sysdate-NTIMESTAMP#,2,9)<360; 
  6. --清理数据库审计 
  7. truncate table sys.aud$ reuse storage; 
  8. alter table sys.aud$ deallocate unused keep 25000m;  
  9. alter table sys.aud$ deallocate unused keep 20000m; 
  10. alter table sys.aud$ deallocate unused keep 15000m; 
  11. alter table sys.aud$ deallocate unused keep 10000m; 
  12. alter table sys.aud$ deallocate unused keep 5000m; 
  13. alter table sys.aud$ deallocate unused keep 2000m; 
  14. alter table sys.aud$ deallocate unused keep 500m; 
  15. alter table sys.aud$ deallocate unused keep 250m; 
  16. alter table sys.aud$ deallocate unused keep 10m;  

11、关于密码重用

  1. alter profile "DEFAULT" limit PASSWORD_GRACE_TIME UNLIMITED; 
  2. alter profile "DEFAULT" limit PASSWORD_LIFE_TIME UNLIMITED; 
  3. alter profile "DEFAULT" limit PASSWORD_LOCK_TIME UNLIMITED; 
  4. alter profile "DEFAULT" limit FAILED_LOGIN_ATTEMPTS UNLIMITED; 

说明:11g 默认会将 DEFAULT 的 PROFILE 设置登录失败尝试次数(10 次)。这样在无意或恶意的连续使用错误密码连接时,导致数据库用户被锁住,影响业务。因此需要将登录失败尝试次数设为不限制。

12、关于维护任务

  1. exec dbms_scheduler.disable( 'ORACLE_OCM.MGMT_CONFIG_JOB' ); 
  2. exec dbms_scheduler.disable( 'ORACLE_OCM.MGMT_STATS_CONFIG_JOB' ); 

说明:关闭一些不需要的维护任务,这两个属于 ORACLE_OCM 的任务不关闭,可能会在 alert日志中报错。

超详细的Oracle 11g安装后参数设置规范,值得收藏

13、其他

13.1、考虑是否要关闭自动统计信息收集(慎用,除非有其他手工收集统计信息的完整方案,否则不建议关闭)

  1. BEGIN 
  2. DBMS_AUTO_TASK_ADMIN.DISABLE( 
  3. client_name => 'auto optimizer stats collection'
  4. operation => NULL
  5. window_name => NULL); 
  6. END

说明:如果是需要采用手工收集统计信息策略,则关闭统计信息自动收集任务。

13.2、考虑是否要关闭自动收集直方图

  1. exec DBMS_STATS.SET_GLOBAL_PREFS( 'method_opt','FOR ALL COLUMNS SIZE 1' ); 
  2. 或者 
  3. exec DBMS_STATS.SET_PARAM( 'method_opt','FOR ALL COLUMNS SIZE 1' ); 

说明:为减少统计信息收集时间,同时为避免直方图引起的 SQL 执行计划不稳定,可以在数据库全局级关闭自方图的收集,对于部分需要收集直方图的表列,可以使用

DBMS_STATS.SET_TABLE_PREFS 过程来设置。

13.3、关闭 auto space advisor

  1. BEGIN 
  2. DBMS_AUTO_TASK_ADMIN.DISABLE( 
  3. client_name => 'auto space advisor'
  4. operation => NULL
  5. window_name => NULL); 
  6. END

说明:关闭数据库的空间 Advisor,避免消耗过多的 IO,还有避免出现这个任务引起的 library cache lock。

 

超详细的Oracle 11g安装后参数设置规范,值得收藏

 

13.4、关闭 auto sql tuning

  1. BEGIN 
  2. DBMS_AUTO_TASK_ADMIN.DISABLE( 
  3. client_name => 'sql tuning advisor'
  4. operation => NULL
  5. window_name => NULL); 
  6. END

说明:关闭数据库的 SQL 自动调整 Advisor,避免消耗过多的资源。

 

超详细的Oracle 11g安装后参数设置规范,值得收藏

 

13.5、调整时间窗口:

  1. --查询窗口定义详情--10g 
  2. select window_name,repeat_interval,duration,enabled from dba_scheduler_windows; 
  3. --查询窗口定义详情--11g和12c(周一到周五每晚10点开始收集统计信息,duration是4h;周六周日早上6点开始收集统计信息,duration是20h) 
  4. SQL> select window_name,repeat_interval,duration,enabled from dba_scheduler_windows; 
  5. --根据具体业务情况调整 
  6. EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW','repeat_interval','freq=daily;byday=SAT;byhour=22;byminute=0;bysecond=0'); 
  7. EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('SUNDAY_WINDOW','repeat_interval','freq=daily;byday=SUN;byhour=22;byminute=0;bysecond=0'); 
  8. EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW''duration''+000 08:00:00'); 
  9. EXEC DBMS_SCHEDULER.SET_ATTRIBUTE('SUNDAY_WINDOW''duration''+000 08:00:00'); 
  10. exec dbms_scheduler.disable('WEEKNIGHT_WINDOW'TRUE); 
  11. exec dbms_scheduler.disable('WEEKEND_WINDOW'TRUE); 

说明:一些业务系统即使在周末,也同样处于正常的业务工作状态,比如面向公众的业务系统,在月底(虽然是周末)有批处理操作的系统,以及节假日调整的周末等,建议调整周六和周日窗口的起止时间和窗口时间长度,避免有时候周六或周日影响业务性能。

 

超详细的Oracle 11g安装后参数设置规范,值得收藏

 

二、针对 RAC 数据库的参数调整(隐含参数)

  1. alter system set parallel_force_local=true sid='*' scope=spfile; 

说明:这个参数是 11g 的新增参数,用于将并行的 slave 进程限制在发起并行 SQL 的会话所在的节点,即避免跨节点并行产生大量的节点间数据交换和引起性能问题。

这个参数用于取代 11g 之前 instance_groups 和 parallel_instance_group 参数设置。

  1. alter system set "_gc_policy_time"=0 sid='*' scope=spfile; 
  2. alter system set "_gc_undo_affinity"=false scope=spfile; 

说明:这两个参数用于关闭 RAC 的 DRM(dynamic remastering)特性,避免频繁的 DRM 使系统性能不稳定、严重的时候使数据库挂起。同时也关闭 Read-mostly Locking 新特性,这个特性目前会触发大量的 BUG,严重时使数据库实例宕掉。

针对 11g RAC,需要注意的是如果节点的 CPU 数量不一样,这可能导致推导出来的 lms 进程数量不一样,根据多个案例的实践来看,lms数量不一样在高负载时会产生严重的性能问题,在此种情况下,需要手工设置 gcs_server_processes 参数,使 RAC 数据库所有节点的 lms 进程数相同。

超详细的Oracle 11g安装后参数设置规范,值得收藏

三、RAC 数据库和非 RAC 数据库都适用的参数调整(隐含参数)

  1. alter system set "_optimizer_adaptive_cursor_sharing"=false sid='*' scope=spfile; 
  2. alter system set "_optimizer_extended_cursor_sharing"=none sid='*' scope=spfile; 
  3. alter system set "_optimizer_extended_cursor_sharing_rel"=none sid='*' scope=spfile; 
  4. alter system set "_optimizer_use_feedback"=false sid ='*' scope=spfile; 

说明:这几个参数都是用于关闭 11g 的 adaptive cursor sharing、cardinality feedback 特性,避免出现 SQL 性能不稳定、SQL 子游标过多的问题。

  1. alter system set deferred_segment_creation=false sid='*' scope=spfile; 

说明:这个参数用于关闭 11g 的段延迟创建特性,避免出现这个新特性引起的 BUG,比如数据导入导出 BUG、表空间删除后对应的表对象还在数据字典里面等。

  1. alter system set event='28401 trace name context forever,level 1','10949 trace name context forever,level 1' sid='*' scope=spfile; 

说明:这个参数主要设置 2 个事件:

1) 10949 事件用于关闭 11g 的自动 serial direct path read 特性,避免出现过多的直接路径读,消耗过多的 IO 资源。

2) 28401 事件用于关闭 11g 数据库中用户持续输入错误密码时的延迟用户验证特性,避免用户持续输入错误密码时产生大量的 row cache lock 或 library cache lock 等待,严重时使数据库完全不能登录。

  1. alter system set resource_limit=true sid='*' scope=spfile; 
  2. alter system set resource_manager_plan='force:' sid='*' scope=spfile; 

说明:这两个参数用于将资源管理计划强制设置为“空”,避免 Oracle 自动打开维护窗口(每晚 22:00 到早上 6:00,周末全天)的资源计划(resource manager plan),使系统在维护窗口期间资源不足或触发相应的 BUG。

  1. alter system set "_undo_autotune"=false sid='*' scope=spfile; 

说明:关闭 UNDO 表空间的自动调整功能,避免出现 UNDO 表空间利用率过高或者是 UNDO段争用的问题。

  1. alter system set "_optimizer_null_aware_antijoin"=false sid ='*' scope=spfile; 

说明:关闭优化器的 null aware antijoin 特性,避免这个新特性带来的 BUG。

  1. alter system set "_px_use_large_pool"=true sid ='*' scope=spfile; 

说明:11g 数据库中,并行会话默认使用的是 shared pool 用于并行执行时的消息缓冲区,并行过多时容易造成 shared pool 不足,使数据库报 ORA-4031 错误。将这个参数设置为 true,使并行会话改为使用 large pool。

  1. alter system set "_partition_large_extents"=false sid='*' scope=spfile; 
  2. alter system set "_index_partition_large_extents"=false sid='*' scope=spfile; 

说明:在 11g 里面,新建分区会给一个比较大的初始 extent 大小(8M),如果一次性建的分区很多,比如按天建的分区,则初始占用的空间会很大。

  1. alter system set "_use_adaptive_log_file_sync"=false sid='*' scope=spfile; 

说明:11.2.0.3 版本里面,这个参数默认为 true,LGWR 会自动选择两种方法来通知其他进程 commit 已经写入:post/wait、polling。前者 LGWR 负担较重,后者等待时间会过长,特别是高负载的 OLTP 系统中。在 10g 及之前的版本中是 post/wait 方式,将这个参数设置为 false恢复到以前版本方式。

  1. alter system set "_memory_imm_mode_without_autosga"=false sid='*' scope=spfile; 

说明:11.2.0.3 版本里面,即使是手工管理内存方式下,如果某个 POOL 内存吃紧,Oracle仍然可能会自动调整内存,用这个参数来关闭这种行为。

  1. alter system set enable_ddl_logging=true sid='*' scope=spfile; 

说明:在 11g 里面,打开这个参数可以将 ddl 语句记录在 alert 日志中。以便于某些故障的排查。建议在 OLTP 类系统中使用。

  1. alter system set parallel_max_servers=64 sid='*' scope=spfile; 

说明:这个参数默认值与 CPU 相关,OLTP 系统中将这个参数设置小一些,可以避免过多的并行对系统造成冲击。

  1. alter system set sec_case_sensitive_logon=false sid='*' scope=spfile; 

说明:从 11g 开始,用户密码区分大小写,而此前的版本则是不区分大小写,在升级时,如果这个参数保持默认值 TRUE,可能会使一些应用由于密码不正确而连接不上。

  1. alter system set "_b_tree_bitmap_plans"=false sid='*' scope=spfile; 

说明:对于 OLTP 系统,Oracle 可能会将两个索引上的 ACCESS PATH 得到的 rowid 进行 bitmap操作再回表,这种操作有时逻辑读很高,对于此类 SQL 使用复合索引才能从根本上解决问题。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2019-08-20 09:46:14

DBA收藏脚本语言

2022-11-29 17:03:00

数据库Oracle

2009-11-18 14:53:40

Oracle参数设置

2009-11-20 12:55:08

Oracle 11g功

2009-09-15 09:52:25

Oracle 11g分

2010-04-13 16:45:47

Oracle job

2019-08-05 09:19:45

PG事务隔离级别数据库

2011-08-30 10:52:47

UbuntuOracle11g

2009-11-24 10:06:21

SUSE enterp

2010-04-01 15:19:56

Oracle 11g压

2012-05-07 13:45:45

Oraclen 11g虚拟列数据库

2019-08-13 11:53:01

脚本语言AWKBash

2011-04-15 09:11:21

2010-04-13 15:56:03

Oracle 11g

2010-04-26 11:26:48

Oracle 11g

2009-07-08 00:24:00

数据压缩Oracle 11g

2010-05-10 14:46:54

Oracle 11g

2010-04-07 17:27:38

Oracle 11g

2009-03-12 10:28:32

数据库Oracle11g自我调整

2009-02-15 14:41:19

SQL Perform新特性Oracle
点赞
收藏

51CTO技术栈公众号