一、归档程序错误在释放之前仅限于内部连接
Oracle在windows服务器下异常断电或者长时间运行情况下,容易发生ORA-00257: 归档程序错误
“ORA-00257: 归档程序错误。在释放之前仅限于内部连接”错误由于由于归档日志占满了空间,此空间大小限制由参数:db_recovery_file_dest_size来指定,而归档目录由参数:db_recovery_file_dest指定。
1、在dos命令下切换到sqlplus命令
sqlplus / as sysdba;
2、查看归档日志占比
select * from v$flash_recovery_area_usage;
3、对于此问题解决很简单:一是增加空间大小,二是删除归档日志。
1)增加空间大小:
alter system set db_recovery_file_dest_size=50G scope=both;
修改完成后查看是否修改成功show parameter db_recover;
删除归档日志
在dos窗口切换rman命令:$ rman target /
切换到rman命令后检查归档日志是否失效:crosscheck archivelog all;
删除失效归档日志,即删除物理文件已丢失但记录在rman中的归档日志:delete expired archivelog all;
删除所有归档日志(慎用):delete archivelog all;
root@18b9d420d2d4# rman target sys/xxxx
# 检查控制文件和实际物理文件的差别
RMAN> crosscheck archivelog all;
# 删除过期文件(过期文件指的是存储在rman资料库中的记录,但实际上记录对应的归档日志已经被清除了)
RMAN> delete expired archivelog all;
# 删除7天前的归档日志
RMAN> delete archivelog until time 'sysdate-7'
二、Oracle用户密码过期及修改密码有效期
2.1查询配置文件中的有效期参数(dba_profiles)
SELECT *
FROM dba_profiles
WHERE profile = 'DEFAULT'
AND resource_name = 'PASSWORD_LIFE_TIME';
可以看到密码有效期是180天。
2.2查看Oracle用户密码的有效期时间(dba_users)
SELECT username
,account_status
,expiry_date
FROM dba_users;
account_status可以是Open、Locked等等,expiry_date为密码的过期时间。
修改成不限制有效期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;