建设棋牌网站流程,杭州网站开发公司排名,wordpress作者专栏,wordpress 用户登陆后跳转到首页Oracle 数据库报 ora-00257 错误并且执行alter system switch logfile 命令卡死的解决过程
7月26日下午#xff0c;某医院用户的 HIS 系统无法连接#xff0c;报如下错误#xff1a;初步判断是归档日志问题。
用户的 HIS 系统数据库是双节点 Oracle 11g Rac 集群。登录服务器…Oracle 数据库报 ora-00257 错误并且执行alter system switch logfile 命令卡死的解决过程
7月26日下午某医院用户的 HIS 系统无法连接报如下错误初步判断是归档日志问题。
用户的 HIS 系统数据库是双节点 Oracle 11g Rac 集群。登录服务器之后发现使用 sqlplus 可以登录系统但是执行 alter system switch logfile; 命令时系统无反应出现卡死状态。
这应该是 Oracle 的日志不能归档导致无法切换日志。用户反映HIS客户断无法连接数据库导致医院业务停止。
解决过程如下
步骤1使用 v$flash_recovery_area_usage 视图查看归档日志的空间利用率。发现达到 99.95%如下图所示步骤2使用 rman 删除归档日志。
命令如下
rman target /
DELETE ARCHIVELOG UNTIL TIME SYSDATE-7;
CROSSCHECK ARCHIVELOG ALL;
DELETE EXPIRED ARCHIVELOG ALL;执行以上命令后发现 7 天之前的归档日志并没有被删除。原因是 DELETE ARCHIVELOG 命令只删除做过备份的归档文件。
使用如下命令继续删除归档文件
DELETE ARCHIVELOG UNTIL TIME SYSDATE-7;
DELETE FORCE ARCHIVELOG UNTIL TIME SYSDATE-7; -- 强制删除归档日志不管有没有做过备份
DELETE EXPIRED ARCHIVELOG ALL;删除之后查询 v$flash_recovery_area_usage 视图信息发现日志文件数量由 697 个减少为 290 个但REDO LOG对应的PERCENT_SPACE_USED参数的值却变成了1455.6%正常值应该为 0-100。执行 alter system switch logfile; 命令时系统仍然处于卡死状态。
查询发现当 V$FLASH_RECOVERY_AREA_USAGE 显示 ARCHIVED LOG 使用率超过 100% 时说明闪回恢复区空间已耗尽会导致
1归档失败出现 ORA-00257 错误
2数据库挂起DML 操作阻塞
3日志切换卡死ALTER SYSTEM SWITCH LOGFILE 无响应。
SQL select * from v$flash_recovery_area_usage;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 1455.6 0 290
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
7 rows selected.步骤3考虑到业务需要临时修改归档日志存放的地址然后再查找原因。
系统配置有 dg参数log_archive_dest_1和 log_archive_dest_2 的配置如下
log_archive_dest_1LOCATIONUSE_DB_RECOVERY_FILE_DEST VALID_FOR(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAMEhisdb
log_archive_dest_2SERVICEdghisdb LGWR ASYNC VALID_FOR(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAMEdghisdb执行如下操作切换归档日志存放的地址
-- 在两个节点上分别创建目录/u01/app/oracle/gdbak0726
-- 然后执行下面的命令切换归档日志的地址
alter system set log_archive_dest_2location/u01/app/oracle/gdbak0726 scopeboth;执行上面的命令之后过了几分钟发现系统恢复正常。用户反映可以登录系统了业务恢复正常。执行alter system switch logfile 命令时也比较顺利。问题最终解决 到晚上八点半医院下班之后把归档日志的地址恢复为原来的参数。命令如下
alter system set log_archive_dest_2SERVICEdghisdb LGWR ASYNC VALID_FOR(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAMEdghisdb scopeboth;执行以上命令之后发现执行alter system switch logfile 命令时仍然卡死。
查询发现 v$flash_recovery_area_usage 视图中 ARCHIVED LOG 对应的参数 PERCENT_SPACE_USED 的值与参数db_recovery_file_dest_size有关把参数db_recovery_file_dest_size的值调大即可。
查看参数db_recovery_file_dest_size的值
SQL show parameter DB_RECOVERY_FILE_DEST_SIZENAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size big integer 5G执行下面的命令把参数db_recovery_file_dest_size的值修改为 50G
alter system set db_recovery_file_dest_size50G scopeboth;然后查询 v$flash_recovery_area_usage 视图信息
SQL select * from v$flash_recovery_area_usage;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 145.56 0 290
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
7 rows selected.再次把参数db_recovery_file_dest_size的值修改为 100G
alter system set db_recovery_file_dest_size100G scopeboth;然后查询 v$flash_recovery_area_usage 视图信息发现ARCHIVED LOG选项对应的PERCENT_SPACE_USED参数的值已下降到100以内。
SQL select * from v$flash_recovery_area_usage;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 72.78 72.43 290
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 07 rows selected.过了几分钟用户反映业务恢复正常了。说明通过修改参数db_recovery_file_dest_size的值是可以的解决问题的。