代码改变世界

Oracle 日志报错导致的 “没有登录” 问题

2017-08-08 16:43    阅读(774)  评论(0编辑  收藏  举报

遇到的问题是日志空间满了,导致Oracle无法登陆,但用PL/SQL登录仅会提示“没有登录”

# 首先检查日志空间是否满了,并删除过期日志

rman target sysdba/password@orcl

RMAN> list archivelog all;

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

# 也可以删除 7 天之前的日志

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

 

# 如果还不行,使用SQLPlus先登录本地 sys 账号

sqlplus /nolog

SQL> conn /as sysdba

 

# 查看日志分配的空间,以及空间占比,我查询出来占比已达到99.92%说明日志满了

SQL> show parameter db_recovery_file_dest;

SQL> select * from v$flash_recovery_area_usage;

# 如果太小可以重新分配,我这里分配了16G

SQL> alter system set db_recovery_file_dest_size=16g;

 

# 尝试下数据库状态是否正常,如果报错可以看错误码

SQL> alter database open;

SQL> select * from all_users;

# 看看日志是否正常,不正常的话状态一般都是 NO

SQL> select group#,sequence#,archived,status from v$log;

# 尝试清理并重建日志
SQL> alter database clear logfile group 3;

# 如果是该日志组还没有归档,则需要用
SQL> alter database clear unarchived logfile group 3;