欢迎光临
我们一直在努力

12-安装后基线检查清单

文章目录

  • 安装后基线检查清单
    • 场景:装完不查,出事在半年后
    • 检查项一:数据库自启动
    • 检查项二:归档模式
    • 检查项三:redo 日志组数与大小
    • 检查项四:undo 表空间
    • 检查项五:临时表空间
    • 检查项六:密码 180 天过期(高频翻车点)
    • 检查项七:审计
    • 检查项八:回收站
    • 检查项九:监听自启
    • 汇总:一键检查脚本
    • 要点小结

安装后基线检查清单

场景:装完不查,出事在半年后

Oracle 默认安装完的状态是"能跑",不是"能上生产"。有几个坑不会立刻爆发,而是等到某个时间点集中兑现:

  • 上线 180 天后的某个早晨,应用全线报 ORA-28001: the password has expired
  • 磁盘写满那天才发现归档从没开过,或者开了归档没配清理
  • 服务器重启一次,数据库和监听都没起来,才发现从来没配自启

这些都在装完当天花半小时查一遍就能排掉。下面按项过,最后汇总成一个脚本。

检查项一:数据库自启动

Oracle 默认不会随操作系统开机自动拉起。重启服务器后要用 sqlplus / as sysdba 手动 startup,忘了就全公司等你。

先看 /etc/oratab,找到自己实例那一行:

orcl:/u01/app/oracle/product/19.0.0/dbhome_1:N

结尾的 N 表示 dbstart 脚本不启动它,改成 Y:

orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y

然后配置 dbstart 随系统启动。通用做法是写一个 systemd 服务(RHEL 7+):

cat > /etc/systemd/system/oracle.service << 'EOF'
[Unit]
Description=Oracle Database Startup
After=network.target

[Service]
Type=forking
User=oracle
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.0.0/dbhome_1
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.0.0/dbhome_1
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable oracle

验证:systemctl start oracle 后 ps -ef | grep pmon 确认实例起来。

检查项二:归档模式

SQL> archive log list
数据库日志模式 非存档模式
自动存档 已禁用

非归档模式下,redo 轮转覆盖后历史就没了——只能恢复到最近一次备份,备份之后的全部数据丢失。生产库基本都要开归档。

开启步骤(需要重启):

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG LIST;

确认输出变为 数据库日志模式 存档模式、自动存档 已启用。开了归档必须配清理(RMAN 删除策略或定时 delete archivelog all completed before 'sysdate-7'),否则归档目录迟早写满,库会挂起等待归档空间。

检查项三:redo 日志组数与大小

SELECT group#, members, bytes/1024/1024 AS size_mb, status
FROM v$log
ORDER BY group#;

关注两点:

  • 组数:默认装出来常是 3 组,勉强够用。业务写入量大时,一组正在归档、一组在写、只剩一组可切换,容易触发 Checkpoint not complete 告警、插入卡顿。建议加到 4~5 组
  • 大小:默认常是 50M 或 200M,写入密集时几分钟一切换,归档文件碎而多。OLTP 场景按"每 10~20 分钟切换一次"倒推大小,常见 1G 起步

检查项四:undo 表空间

undo 存放修改前镜像,撑起回滚、一致性读和闪回。查大小:

SELECT d.tablespace_name,
ROUND(d.size_mb, 1) AS size_mb,
ROUND(NVL(u.used_mb, 0), 1) AS used_mb
FROM (SELECT tablespace_name, SUM(bytes)/1024/1024 AS size_mb
FROM dba_data_files GROUP BY tablespace_name) d
LEFT JOIN (SELECT tablespace_name, SUM(bytes)/1024/1024 AS used_mb
FROM dba_undo_extents GROUP BY tablespace_name) u
ON d.tablespace_name = u.tablespace_name
WHERE d.tablespace_name LIKE 'UNDOTBS%';

SELECT tablespace_name, bytes/1024/1024 AS size_mb
FROM dba_data_files WHERE tablespace_name LIKE 'UNDOTBS%';

如果 undo 太小,长事务会报 ORA-30036: 段无法扩展8(在还原表空间中),闪回查询的窗口也短。扩容:

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/undotbs01.dbf'
RESIZE 4096M;

或给它开自动扩展:ALTER DATABASE DATAFILE '…' AUTOEXTEND ON NEXT 512M MAXSIZE 32G;

检查项五:临时表空间

排序、哈希连接、去重在内存(PGA)放不下时落临时表空间,太小会报 ORA-01652: 无法通过128 (在表空间TEMP中) 扩展temp段:

SELECT tablespace_name, bytes/1024/1024 AS size_mb,
autoextensible
FROM dba_temp_files;

不足则扩:

ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/ORCL/temp01.dbf'
RESIZE 4096M;

检查项六:密码 180 天过期(高频翻车点)

11g 起默认 profile 的密码有效期是 180 天:

SELECT resource_name, limit
FROM dba_profiles
WHERE profile = 'DEFAULT'
AND resource_type = 'PASSWORD'
AND resource_name LIKE 'PASSWORD_LIFE_TIME';

RESOURCE_NAME LIMIT
——————————— ———-
PASSWORD_LIFE_TIME 180

到期后连接报 ORA-28001: the password has expired,还剩宽限期时是 ORA-28002。要么定期改密,要么关闭期限:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

注意:已经进入宽限期的账号,改完 profile 也不会自动恢复,要重设一次密码:

ALTER USER bizapp IDENTIFIED BY "新密码";

顺手查一下失败锁定次数(FAILED_LOGIN_ATTEMPTS 默认 10 次),应用密码写错加上无重试上限时,账号会被锁死报 ORA-28000: the account is locked。

检查项七:审计

SHOW PARAMETER audit_trail

默认 DB(11g 起)会把审计记录写进库,日积月累撑爆 SYSTEM 表空间和 SYSAUX。两种选择:

— 不打算用库内审计:关掉(需重启)
ALTER SYSTEM SET audit_trail=NONE SCOPE=SPFILE;

— 保留审计:定期清理
DELETE FROM aud$ WHERE ntimestamp# < SYSDATE – 90;

检查项八:回收站

drop 表默认进回收站不释放空间:

SHOW PARAMETER recyclebin
SELECT object_name, original_name, type, droptime FROM dba_recyclebin;

空间敏感的系统可以关掉(10gR2+ 支持 scope=spfile 重启生效,11g 起可立即生效):

ALTER SYSTEM SET recyclebin=OFF SCOPE=SPFILE;

留着的话,就定期 PURGE DBA_RECYCLEBIN; 清理。

检查项九:监听自启

监听器同样没有随系统启动的默认机制,需要单独的 systemd 单元:

cat > /etc/systemd/system/oracle-listener.service << 'EOF'
[Unit]
Description=Oracle Listener
After=network.target

[Service]
Type=forking
User=oracle
ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start
ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable oracle-listener

汇总:一键检查脚本

存成 check_baseline.sh,chmod +x 后以 oracle 用户执行:

#!/bin/bash
# Oracle 安装后基线检查
ORACLE_SID=orcl
export ORACLE_SID

echo "=== 1. oratab 自启标志 ==="
grep -v "^#" /etc/oratab | grep ":$" -v || grep "^$ORACLE_SID" /etc/oratab

echo "=== 2. 实例与监听进程 ==="
ps -ef | grep -E "pmon|tnslsnr" | grep -v grep

echo "=== 3~8. 库内检查 ==="
sqlplus -S / as sysdba << 'EOF'
SET LINESIZE 200 PAGESIZE 100
COL name FORMAT A30

PROMPT — 归档模式 —
ARCHIVE LOG LIST

PROMPT — redo 组与大小 —
SELECT group#, members, bytes/1024/1024 AS size_mb, status FROM v$log ORDER BY group#;

PROMPT — undo / temp 大小 —
SELECT tablespace_name, SUM(bytes)/1024/1024 AS size_mb
FROM dba_data_files WHERE contents = 'UNDO' GROUP BY tablespace_name;
SELECT tablespace_name, SUM(bytes)/1024/1024 AS size_mb
FROM dba_temp_files GROUP BY tablespace_name;

PROMPT — 密码有效期 —
SELECT profile, resource_name, limit FROM dba_profiles
WHERE resource_name = 'PASSWORD_LIFE_TIME';

PROMPT — 审计与回收站参数 —
SHOW PARAMETER audit_trail
SHOW PARAMETER recyclebin

PROMPT — 即将过期的账号 —
SELECT username, expiry_date, account_status
FROM dba_users WHERE expiry_date IS NOT NULL
AND expiry_date < SYSDATE + 30
ORDER BY expiry_date;
EXIT
EOF

echo "=== 9. systemd 单元是否配置 ==="
systemctl is-enabled oracle 2>/dev/null || echo "oracle.service 未配置"
systemctl is-enabled oracle-listener 2>/dev/null || echo "oracle-listener.service 未配置"

每项输出对一遍预期:归档已开、redo 足量、密码期限合理、自启已配,这份基线才算过关。

要点小结

  • 自启要改 /etc/oratab 的 Y 并配 systemd,默认什么都不自启
  • 生产开归档,开了必须配清理
  • 密码 180 天过期是延迟爆发的高频坑,改 profile 后记得给宽限期内的账号重设密码
  • undo、temp、审计、回收站都是"不查不知道,满了才要命"的项
  • 基线脚本装完当天跑一遍,接手老库也先跑一遍
赞(0)
未经允许不得转载:171主机测评 » 12-安装后基线检查清单
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址