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

原因:归档日志文件爆满

什么是Oracle归档模式?
  Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操 作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当 前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
  如果数据库处于非归档模式,联机日 志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
  数据库使用归档方式运行时才可以进行灾难性恢复。

解决方法:

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

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

  1. 扩大归档日志空间大小。

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

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

    sql>alter database mount;

    SQL>alter database open;

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

  2. 删除过期归档日志

    进入rman命令状态

    [oracle@localhost ~]$ rman target/

    查看所有LOG文件

    RMAN> crosscheck archivelog all;    

    删除所有LOG文件

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

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

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

    首先,查看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

转载于:https://my.oschina.net/darkrangery/blog/340465

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值