日志满是oracle,oracle归档日志满了,导致oracle用户不能登录

原因:归档日志文件爆满

什么是Oracle归档模式?

Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操 作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当 前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。

如果数据库处于非归档模式,联机日 志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。

数据库使用归档方式运行时才可以进行灾难性恢复。

解决方法:

oracle分为归档模式(ARCHIVELOG)和非归档模式(NOARCHIVELOG)。

我的就是在归档模式下,导致日志满了。归档模式,只要数据库有操作,会不停歇的进行日志记录,会占用很多空间。

扩大归档日志空间大小。

Sql>startup  nomount                                ‘将数据库启到NOMOUNT状态

Sql> alter system set db_recovery_file_dest_size=30G;   ‘将空间改为30G(自己控制)

sql>alter database mount;

SQL>alter database open;

数据操作多的时候也会存在日志空间不足的情况。

删除过期归档日志

进入rman命令状态

[oracle@localhost ~]$ rman target/

查看所有LOG文件

RMAN> crosscheck archivelog all;

删除所有LOG文件

RMAN> delete archivelog all;  (或者删除前10天的日志  DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-10';  )

这种方法可以解决占时,往后如果不做日志管理计划,还会出现日志满了的状况。

将归档模式改为非归档模式,这样,日志就不会去实时记录下来,也就不存在日志空间不足。(缺点:对于数据库恢复存在风险。)

首先,查看oracle数据库是否为归档模式:

select name,log_mode from v$database;

为ARCHIVELOG是归档模式,NOARCHIVELOG为归档模式。

改变归档模式到非归档模式:

1)SQL>SHUTDOWN NORMAL / IMMEDIATE;

2)SQL>STARTUP MOUNT;

3)SQL>ALTER DATABASE NOARCHIVELOG;

4)SQL>ALTER DATABASE OPEN;

这个时候就可以了,当然后续,归档日志怎么管理就自己决定了。

改变非归档模式到归档模式:

1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下数据

2)SQL>STARTUP MOUNT;                                启动数据库实例到mount状态,但不要打开

3)SQL>ALTER DATABASE ARCHIVELOG;      设置数据库为归档日志模式

4)SQL>ALTER DATABASE OPEN;                  打开数据库

5)SQL>archive log list;                                确认数据库现在处于归档日志模式

6)SQL>archive log all;                                 将这个时间点的redo logs归档

提供给大家查询归档日志位置,大小方法

位置:

SQL> connect /as sysdba;

Connected.

SQL> archive log list;

---------------------------------------------------------------------------

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     1

Next log sequence to archive   2

Current log sequence           2

从这个可以看出Archive destination            USE_DB_RECOVERY_FILE_DEST   归档日志的存放闪回区.

查看闪回区大小

SQL> show parameter db_re

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      D:\app\Administrator\fast_reco very_area

db_recovery_file_dest_size            big integer  4122M

db_recycle_cache_size                big integer  0

从这里可以看出闪回去的位置和大小

去查看归档所在目录的真实大小 .这里就是闪回区所在的目录。

前面讲的  SQL> alter system set db_recovery_file_dest_size=30G;     这一句就是更改这个位置的大小

ok

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值