如何处理eSight升级时因Oracle审计日志过多表空间不足造成的升级失败
问题
在eSight升级过程中,如果审计日志过多表空间不足,在初始的备份数据库阶段会报错造成升级失败,具体错误信息如下:
ORA-39171: Job is experiencing a resumable wait. ORA001691: unable to extend lob segment
回答
升级时出现这种情况,原因是开启了Oracle审计日志(audit_trail设置为DB或OS)功能,审计日志过多造成表空间不足;解决思路为先关闭Oracle审计日志(audit_trail设置为FALSE)功能,待升级完成后在重启开启审计日志(audit_trail还原为原来的值)功能。
以将audit_trail的值由OS改为FALSE为例,操作步骤如下:
- 取消升级过程并删除设置的备份目录。
备份目录默认为:/opt/eSightback
- 关闭Oracle审计日志功能。
- 以root用户登录Oracle所在服务器。
- 执行su - oracle命令切换到oracle帐号。
- 执行sqlplus / as sysdba命令进入Oracle操作界面。
- 确保Oracle服务正常启动,如果未启动使用以下方法启动Oracle服务。
- 对于双机场景,在root用户下执行 hares -online Oracle -sys $(hostname)使Oracle资源在线。
- 对于单机场景,执行startup命令启动Oracle服务。
- 查看audit_trail原始值并记录以备后续恢复。
SQL> show parameter audit_trail NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ audit_trail string OS SQL>
- 将audit_trail值修改为FALSE。
audit_trail值修改后不会立即更改,需要重启Oracle服务才能生效。
SQL> alter system set audit_trail=FALSE scope=spfile; System altered. SQL> show parameter audit_trail NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ audit_trail string OS SQL>
- 重启Oracle服务。
- 对于双机场景,在root用户下执行hares -offline Oracle -sys $(hostname)使Oracle资源离线,然后再执行hares -online Oracle -sys $(hostname)使Oracle资源在线。
- 对于单机场景,执行shutdown immediate命令关闭Oracle服务后,再执行startup命令启动Oracle服务。
- 验证audit_trail值是否成功修改为FALSE。
SQL> show parameter audit_trail NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ audit_trail string FALSE SQL>
- 以root用户登录Oracle所在服务器。
- 重新进行eSight升级操作,至eSight升级操作顺利完成。
- 重新开启Oracle审计日志功能。
- 以root用户登录Oracle所在服务器。
- 执行su - oracle命令切换到oracle帐号。
- 执行sqlplus / as sysdba命令进入Oracle操作界面。
- 确保Oracle服务正常启动,如果未启动使用以下方法启动Oracle服务。
- 对于双机场景,在root用户下执行hares -online Oracle -sys $(hostname),使Oracle资源在线。
- 对于单机场景,执行startup命令启动Oracle服务。
- 执行如下命令将audit_trail值恢复为原始值。
SQL> alter system set audit_trail=OS scope=spfile; System altered.
- 重启Oracle服务
- 对于双机场景,在root用户下执行hares -offline Oracle -sys $(hostname)使Oracle资源离线,然后再执行hares -online Oracle -sys $(hostname)使Oracle资源在线。
- 对于单机场景,执行shutdown immediate命令关闭Oracle服务后,再执行startup命令启动Oracle服务。
- 验证audit_trail值是否成功恢复为OS。
SQL> show parameter audit_trail NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ audit_trail string OS SQL>
- 以root用户登录Oracle所在服务器。