已索引
检查时间同步
# ntpq -p
检查归档是否打开及保存路径
如果是生产库,检查是否打开归档,并检查归档路径是否正确。
配置归档保护策略
主备库均需要配置。
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO 'SBT_TAPE' APPLIED ON ALL STANDBY;
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO 'SBT_TAPE';
配置归档删除计划
如果目前还未配置 RMAN 备份,则需要通过 crontab 计划任务来删除归档日志。归档日志删除脚本见文。配置了 RMAN 备份后,在 RMAN 中删除归档日志,删除该计划任务,并相应修改归档保护策略。
配置控制文件快照到共享存储(RAC)
RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/DEMO/snapcf_demo.f'
只需要在一个节点上操作即可。
关于审计
标准数据库审计功能,会增大系统表空间或文件系统的使用。一般设置为none,建议关闭该功能。打开 sys 审计(一般是监管要求)。
配置AWR快照保留时间
AWR 快照默认每小时拍一次,保留8天,建议修改为半小时拍一次,保留15天以上。
查看AWR保留时间:
SQL> select * from DBA_HIST_WR_CONTROL;
DBID SNAP_INTERVAL RETENTION TOPNSQL
--- ------------ ---------------- --------
1449005303 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
设置AWR保留时间:
exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(21600,30);
以分为单位 ,前者是保留时间,后者是拍快照的间隔时间。
修改密码过期时间
用户密码默认 90 天过期,这个要注意,可根据实际情况修改或者修改为 UNLIMITED。
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
检查监听地址是否为IP地址(RAC)
若监听地址不是 IP,且 DNS 解析有问题,在 DG 主备切换时会出故障。
检查SCAN监听
# su - grid
$ lsnrctl status LISTENER_SCAN1
检查LOCAL监听
# su - grid
$ lsnrctl status
修改 PST 超时(11g ASM)
在 11g 中, 该隐含参数的值为 15, 物理机未发现问题,但是虚拟机经常发生 OCR 磁盘组被 dismount 的情况。建议将该值修改为 120,120 也是 12c 的默认值。
修改参数值(在两个节点上执行):
# su - grid
$ sqlplus / as sysasm
SQL> alter system set "_asm_hbeatiowait"=120 scope=spfile sid='*';
该参数需要重启集群以生效(在两个节点上执行):
$GRID_HOME/bin/crsctl stop cluster
$GRID_HOME/bin/crsctl start cluster
调整 redo 日志大小
根据生产经验,建议初始大小为 2G,然后观察日志切换,Oracle 官方建议 15-20 分钟切换一次 redo log。
undo 调整
11g 能力中心 TXN 数据库因大量 undo 争用导致数据库夯起(报大量 1013 错误,持续时间1分钟左右后自动恢复),在 Oracle SR 的建议下,设置如下隐藏参数:
SQL> alter system set "_rollback_segment_count"=10000 sid='*';
SQL> alter system set "_undo_autotune"=false sid='*';
注意:最佳实践建议通过设置 _rollback_segment_count 来提前创建好undo段,这样就不用在事务过程中动态的创建 undo 段,可以提高业务事务的性能。但这儿一定要注意,整个 RAC 集群所有节点的该参数值之和不能超过32760,否则将导致添加新的节点无法获得 undo segment,继而无法 DML 操作。
监听参数优化
Oracle Net 的默认超时时间为 60 秒,大规模并发情况下,如同时 2000 以上个业务连接,60S 超时设置通常导致大部分应用不能在此期间连接上数据库。
将数据库 listener.ora, sqlnet.ora 的超时设置为0,即不限制,然后重启监听(每个节点都操作)。
– sqlnet.ora
SQLNET.INBOUND_CONNECT_TIMEOUT = 0
– listener.ora
INBOUND_CONNECT_TIMEOUT_LISTENER = 0
设置游标
SQL> alter system set open_cursors=1000 scope=both sid='*';
open_cursors specifies the maximum number of open cursors (handles to private SQL areas) a session can have at once. 默认值是300,oracle官方文档上建议设置为500。若负载较高,我们一般设置为1000(参照能力中心txn库)。
session_cached_cursors specifies the number of session cursors to cache. 能力中心 TXN 是默认值 50,可以不改或者修改为200。
修改数据库可以打开的数据文件数量
db_files specifies the maximum number of database files that can be opened for this database. 默认值 200,可以根据业务数据量来计算数据文件的的数量,比如 500,修改该参数需要重启实例,且 DG 也需要修改为相同的值。
配置大页与透明大页
大页数量计算公式:sga_max_size*1024/hugepage_size+100。
注意 memlock 资源限制数量要大于大页的数量,设置为-1表示不限制。
若数据库运行在 Red Hat Linux 内核上,请确认关闭 THP(Transparent HugePages),以防止 THP 带来的性能问题和节点被意外移出集群。
禁用DRM(暂不)
DRM 即 Dynamic Resource management,为减少 RAC 环境下不必要的缓冲区跨节点动态更新同步,根据实践经验,建议调整以下隐藏参数。
_gc_policy_time 设置为0,禁用DRM
_gc_undo_affinity 设置为false,禁用DRM
其他隐藏参数
如下隐藏参数来自于华为 FusionCube DB 3.1 实施文档,可根据自己的实际情况参考使用:
alter system set "_enable_numa_support" = true scope=spfile;
alter system set "_disk_sector_size_override" = true scope=spfile;
alter system set "_ash_size" = 100M scope=spfile;
alter system set "_gc_read_mostly_locking"=FALSE scope=spfile;
参数说明:
- _enable_numa_support 优化内存调度。
- _disk_sector_size_override 存储格式4k块大小为新的存储配置,能避免小块不对齐导致的性能下降。
- _ash_size 避免数据库繁忙时,内存会话信息频繁刷盘,导致业务性能下降。
- _gc_read_mostly_locking 避免 oracle ADR BUG。
alter system set db_file_multiblock_read_count = 128 ;
db_file_multiblock_read_count 当 DB block size 为 8K 时,参数设置为 128,使得一次完成的存储 io 为 1MB。
安装和配置 OSWatcher 工具
方法见文。
配置 OS 巡检用户
根据企业环境里的权限管理方案来定。
配置 DB 巡检用户
SQL> create user dboper identified by xxxxx;
SQL> grant connect,select any dictionary to dboper;
SQL> grant alter system,alter tablespace to dboper;
SQL> grant execute on DBMS_WORKLOAD_REPOSITORY to dboper;
配置 zabbix
# mkdir -p /dbmonitor
# scp zabbix and userparameter_oracle.conf
# sed -n '/User specific environment/,$p' /home/oracle/.bash_profile > /dbmonitor/zabbix/db.profile
# sed -n '/User specific environment/,$p' /home/grid/.bash_profile > /dbmonitor/zabbix/grid.profile
# chown -R dboper. /dbmonitor
# chmod -R 775 /dbmonitor
# systemctl restart zabbix-agent.service
配置巡检与短信告警
*/15 * * * * /dbmonitor/dbhealth.sh >/dev/null 2>&1 &
# SMS for alert file
*/5 * * * * cd /dbmonitor/;sh /dbmonitor/alert_file_chk.sh >/dev/null 2>&1 &
配置命令别名
alias bdump=’cd /data/app/oracle/diag/rdbms/risk/risk1/trace’
配置退格键支持
# echo "stty erase '^H'" >> /home/oracle/.bashrc
# echo "stty erase '^H'" >> /home/grid/.bashrc
使用 orachk 工具进行检查
oracle 12.2.0.1已经内置 ORACHK 工具。路径为:$ORACLE_HOME/suptools/orachk/,用 oracle 用户执行命令:./oracheck
搭建 Data Guard
11g 能力中心 TXN 数据库日志组切换频繁,备库日志实时应用进程阻塞,继而阻塞大量会话进程,在 Oracle SR 的建议下,设置如下隐藏参数,以避免 ADG 环境中 1555 error 和 apply slow:
SQL> ALTER SYSTEM SET "_adg_parselock_timeout"=550 sid=’*’;
删除安装文件
删除安装文件以释放空间。