写此文单的目的:实际工作的项目集成中数据库安装完毕后,会遇到因为配置不规范而给后期运维带来的各种问题,此文档统一规范可能遇到的问题,以防增加后期的工作量。
一、初始化参数配置
名词解释:
open_cursors
单个会话打开游标数。通常默认值够用,如果超过默认值,说明代码可能存在问题,如打开游标未关闭。调整此参数以减少报错。
此参数控制数据文件个数。对于大库(容量超过5T),存在此参数值不足的可能,调整此参数需要重启实例,故可在建库时直接调整到位(建库前询问研发人员数据将最终成长到多少)。
processes
此参数控制最大进程数,相关参数为sessions,但只调整此参数即可。默认150在大多数场景都偏小,要求至少在600,或者询问研发人员。
控制实例恢复时间,即做检查点。设置此值控制实例恢复在150秒,可根据需要调整。
max_dump_file_size
控制单个trace文件的大小。调整此参数可防止trace文件意外变大撑满文件系统。
控制会话可以缓存的游标数。增加该值以减少软解析。
_undo_autotune
默认参数值可能导致undo空间回收慢,增加ora-01555错误的概率。
控制RAC中的DRM特性启用与否。因为应用软件很少针对RAC做访问控制,所以DRM特性经常造成网络流量巨大,严重时导致数据库hang,弊大于利,故一般需要禁用。
这两个参数是oracle 11g中关闭DRM的参数。
_gc_affinicy_time , _gc_undo_affinicy
同上,这两个参数是oracle 10g中关闭DRM的参数
audit_trail
审计用户登录,11g时默认开启审计。大多系统中并没有人关心哪些会话登录了系统,而大量的登录记录(特别是短连接系统)会导致系统表空间迅速膨胀,对系统性能带来影响,故尽量将其关闭。
deferred_segment_creation
延迟段生成是11g新特性,可能导致exp工具无法导出表,故尽量关闭。
_optimiter_use_feedback
该参数默认值经常导致SQL语句的执行计划频繁改变,故尽量关闭。
_clusterwide_global_transcations
该参数经常触发bug,或者在使用dblink产生DFS lock handle等待事件,故尽量关闭。
调整命令
- 11g以上
alter system set open_cursors=500 scope=both;
alter system set db_files=500 scope=spfile;
alter system set processes=600 scope=spfile;
alter system set max_dump_file_size=104857600 scope=both;
alter system set fast_start_mttr_target=150 scope=both;
alter system set session_cached_cursors=200 scope=spfile;
alter system set "_undo_autotune"=false scope=both;
alter system set "_gc_policy_time"=0 scope=spfile;
alter system set "_gc_undo_affinity"=false scope=spfile;
alter system set audit_trail=none scope=spfile;
alter system set deferred_segment_creation=false scope=both;
alter system set "_optimizer_use_feedback"=false scope=both;
alter system set "_clusterwide_global_transactions"=false scope=spfile;
- 10g
alter system set open_cursors=500 scope=both;
alter system set db_files=500 scope=spfile;
alter system set processes=600 scope=spfile;
alter system set max_dump_file_size=104857600 scope=both;
alter system set fast_start_mttr_target=150 scope=both;
alter system set session_cached_cursors=200 scope=spfile;
alter system set "_undo_autotune"=false scope=both;
alter system set "_gc_affinity_time"=0 scope=spfile;
alter system set "_gc_undo_affinity"=false scope=spfile;
二、数据库文件配置
- 数据库默认的redo log 的组数偏少,单实例为三组,RAC为两组,建议rac每个实例至少有5组redo log。
- redo log 默认没冗余,也就是每组一个成员,但建议在存储IO性能足够的情况下,增加redo log 的冗余。
- 数据库默认的redo log容量偏小,尽量保证每小时切换次数小于等于4次,且至少>=256m.
- 单实例
加日志组:
alter database add log file group 4 ('/oradata/orcl/redo04.log') size 256m;
删日志组:
alter database drop log file group 1;
- RAC
alter database add logfile thread 1 group 8 ('+data/orcl/onlinelog/redo8a.log') size 256m;
*‘thread 1’为实例号,根据需要调整;
删日志组:
alter database drop logfile group 1;
组内增加日志组成员
alter database add log file member '+data/orcl/redo8b.log' to group 8;
⚠️
删除日志组需将其状态切换到inactive状态,命令如下:
alter system switch log file;
alter system checkpoint;
select group#,thread#,members, status bytes/1048576 size_mb from v$log;
3.archivelog
原则:
开归档一定要有删除策略,避免归档空间被撑满。
4.undo tablespace
原则:
建库默认空间偏小,建议resize当前文件大小或增加当前文件大小
alter database datafile '+data/orcl/undotbs01.dbf' resize 2048m;
5.temp tablespace
原则:同undo tablespace
alter database tempfile '+data/orcl/temp.dbf' resize 2048m;
6.监听文件(11g)
为防止警告日志出现 Fatal NI connect error 12170 报错
编辑listener.ora
INBOUND_CONNECT_TIMEOUT_LISTENER = 0
DIAG_ADR_ENABLED_LISTENER = OFF
编辑sqlnet.ora
DIAG_ADR_ENABLED = OFF
SQLNET.INBOUND_CONNECT_TIMEOUT = 0
重启或reload监听
三、用户配置
2.用户密码尝试错误次数(11g以上有密码验证延迟)
用户登录时如果密码错误,尝试10次后会被锁定,使用一下命令允许无限制尝试
alter profile DEFAULT LIMIT FAILED_LOGIN_ATTEMPS unlimited;
⚠️:对于11g以上版本,如果尝试错误密码次数过多,会导致正常用户登录缓慢,可以通过事假28401禁用密码验证延迟。所以调整上述配置文件时,同时也应设置以下事件
实例级设置:
alter system set events '28401 trace name context forever, level 1';
系统级设置
alter system set event = '28401 trace name context forever , level 1 ' scope = spfile;
四、备份配置
五、其他配置
1.初始统计信息收集
实际运行中发现如果不收集固定对象统计信息会影响数据库监控时的监控效果,在用户对象创建前运行:
exec dbms_stats.GATHER_DATABASE_STATS(no_invalidate=>false);
exec dbms_stats.GATHER_FIXED_OBJECTS_STATS(no_invalidate=>false);
收集系统信息,便于数据库引擎作出更贴近实际的IO,运算时间估算
exec stats.GATHER_SYSTEM_STATS(gathering_mode=>'NOWORKLOAD');
2. _serial_direct_read (11g以上)
对于数据量较大,内存较大或存储较慢的环境,可考虑修改此参数为never(默认为auto),减少物理IO,操作方法如下:
alter system set "_serial_direct_read"=never scope=spfile;
重启实例生效
该命令也可以用事件10949 替代,此事件可以在实例级别设置,不用重启实例,也可以在参数文件里设置,方法如下:
alter system set events '10949 trace name context forever';
alter system set events '10949 trace name context forever' scope=spfile;
3.关闭oracle_ocm用户的job(11.2.0.3)
操作方法:
exec dbms_secheduler.disable(‘ORACLE_OCM.MGMT_CONFIG_JOB’);
exec dbms_secheduler.disable(‘ORACLE_OCM.MGMT_STATS_CONFIG_JOB');
4.AWR间隔及保留周期(可选)
10g的awr默认保留7天,间隔1小时;
11g的awr默认保留8天,间隔1小时;
调整方法:
exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>30*24*60);
相应的,SYSAUX表空间也需要扩容,否则无法容纳大量的AWR信息