精华内容
下载资源
问答
  • 归档日志

    2013-07-23 22:06:45
    Oracle可以将联机日志保存在多个不同位置,将联机日志转化为归档日志的过程叫做归档,相应的日志被称为归档日志。通过使用归档日志,可以保留所有重做历史记录,在数据库处于归档模式下进行日志切换时,后台ARCH进程...
     Oracle可以将联机日志保存在多个不同位置,将联机日志转化为归档日志的过程叫做归档,相应的日志被称为归档日志。通过使用归档日志,可以保留所有重做历史记录,在数据库处于归档模式下进行日志切换时,后台ARCH进程会将重做日志内容保存到归档日志中。当数据库出现介质失败后,使用数据文件备份、归档日志和重做日志可以完全恢复数据库。

    一、归档日志
        是联机重做日志的一个副本
        包含redo记录以及一个唯一的 log sequence number
        对日志组的一个日志文件进行归档,如果该组其中一个日志文件损坏,则另一个可用日志将会被归档
        对于归档模式的日志切换,当日志归档完成后,下一个日志才能被覆盖或者重新使用
        自动归档如开启,则后台ARCH进程在日志切换时自动完成归档,否则需要手动归档
        
        归档日志的作用
            恢复数据库
            更新standby数据库
            使用LogMiner提取历史日志的相关信息


    二、日志的两种模式
        1、非归档模式NOARCHIVELOG
            不适用于生产数据库
            创建数据库时,缺省的日志管理模式是非归档模式
            当日志切换,检查点产生后,联机重做日志文件即可被重新使用
            联机日志被覆盖后,介质恢复仅仅支持到最近的完整备份
            不支持联机备份表空间,一个表空间损坏将导致整个数据库不可用,需要删除掉损坏的表空间或从备份中恢复
            对于操作系统级别的数据库备份需要将数据库一致性关闭
            应当备份所有的数据文件、控制文件、参数文件、密码文件、联机日志文件(可选)
        2、归档模式ARCHIVELOG
            能够对联机日志文件进行归档,生产数据库强烈建议归档
            在日志切换时,下一个即将被写入日志组必须归档完成之后,日志组才可以使用
            归档日志的log sequence number信息会记录在控制文件中
            必须有足够的磁盘空间用于存放归档日志
            9i需要设置参数log_archive_start=true才能够进行自动归档
            备份与恢复
                支持热备份,且当某个非系统表空间损坏,数据库仍然处于可用状态,且支持在线恢复
                使用归档日志能够实现联机与脱机时点恢复(恢复到指定时间点、指定的归档日志或者指定SCN)

    三、日志模式切换及手段归档
        1、非归档到归档
            a、SQL>shutdown immediate  --一致性关闭数据库
            b、SQL>startup mount    --启动到mount阶段
            c、SQL>alter database archivelog [manual]
            d、SQL>alter database open      --打开数据库
            e、完成备份数据库    --之前数据库备份文件将失效

            SQL> archive log list;          --查看数据库是否处于归档模式
            Database log mode       No Archive Mode   
            Automatic archival       Disabled
            Archive destination       USE_DB_RECOVERY_FILE_DEST
            Oldest online log sequence     14
            Current log sequence       17
            
            SQL> select log_mode from v$database;

            LOG_MODE
            ------------
            NOARCHIVELOG
            
            确定归档日志的路径,可以生成多份一样的日志,保存在多个位置
            SQL>alter system set log_archive_dest_1='location=/opt/oradate/log/archive_log';
            SQL>alter system set log_archive_dest_2='location=/opt/oradate/log2/archive_log';
            SQL>shutdown immediate
            SQL>startup mount
            SQL>alter database archivelog;  切换到自动归档模式

            Database altered
            SQL>alter database open;
            
            SQL>archive log list   --查看数据库是否处于归档模式
            Database log mode       Archive Mode
            Automatic archival       Enabled         --自动归档
            Archive destination       USE_DB_RECOVERY_FILE_DEST
            Oldest online log sequence     14
            Next log sequence to archive   17
            Current log sequence       17

            SQL> select log_mode from v$database;
            LOG_MODE
            ------------
            ARCHIVELOG     
        
        2、归档到非归档
            a、SQL>shutdown immediate  --一致性关闭数据库
            b、SQL>startup mount    --启动到mount阶段
            c、SQL>alter databse fashback off;   --若闪回数据库不关闭时,关闭归档日志时会出现ORA-38774错误
            d、SQL>alter database noarchivelog;
            e、SQL>alter database open;      --打开数据库
            f、完成备份数据库    --之前数据库备份文件将失效
        
        3、手动归档
            手动归档需要将日志切换为alter database archivelog manual
            在使用alter system archive log current|all 实现归档
            注意
                手动归档模式不支持standby数据库
                在alter database archivelog 模式下也可实现对日志手工归档
                在手工归档模式,若未执行手工归档命令,则日志组的原有内容将不能被覆盖
                standby_archive_dest     string ?/dbs/arch
                SQL> alter system archive log current;

                System altered.

                SQL> alter system archive log all;
                alter system archive log all
                *
                ERROR at line 1:
                ORA-00271: there are no logs that need archiving
                
            4、归档进程的调整
                通过设置log_archive_max_processes可以指定数据库规定的所需初始化的进程数,缺省进程数为2
                一般情况下不需要修改该参数,Oracle会根据归档情况自动启动额外的归档进程
                SQL>alter syetem set log_archive_max_processes=3;  --动态修改

    四、配置归档
        a、归档到本地且少于等于两个归档位置
            设置log_archive_dest和log_archive_duplex_dest参数
            SQL>alter system set log_archive_dest='/opt/oradata/orcl/log1' scope=spfile;
            SQL>alter system set log_archive_deplex_dest='/opt/oradata/orcl/log2' scope=spfile;

        b、归档到本地和远程主机
            设置log_archive_dest_n参数,n最大值为10
            SQL>alter system set log_archive_dest_1='location=/opt/oradata/orcl/log1' 
            SQL>alter system set log_archive_dest_2='service=standby1';
            
            对于远程归档位置,service选项需要指定远程数据库的网络服务名(tnsnames.ora文件配置)
            log_archive_dest_n的两个常用选项
            MANDATORY | OPTIONAL;
                MANDATORY表示归档必须成功复制到目的路径后,联机重做日志才能被复用,OPTIONAL正好相反
            REOPEN
                指定归档失败后指定间隔多少时间重试归档,缺省为300秒
            示例:
            SQL>alter system set log_archive_dest_1='location=/opt/oradata/orcl/log1 mandatory reopen=600'
            SQL>alter system set log_archive_dest_2='service=standby1 mandatory reopen';
        
        c、两种归档方式异同
            两者都可以归档到本地,后者可以归档到远程主机,前者不支持该功能
            前者最多配置两个归档位置,后者可以配置10个归档位置
            两者不兼容,要么使用前者,要么使用后者     
            SQL> alter system set log_archive_dest='/opt/oradata mandatory reopen';
            --ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST 
            使用后者备份到本地时需要增加location选项,备份到远程主机需要使用service选项
            当上述两种方式未指定路径时,归档日志位于db_recovery_file_dest 缺省值为$ORACLE_BASE/flash_recovery_area

        d、归档日志命名格式
            设置log_archive_format参数,10g中缺省设置为log_archive_format=%t_%s_%r.dbf
            %s:日志序列号
            %S:日志序列号(带有前导)
            %t:重做线程编号
            %T:重做线程编号(带有前导)
            %a:活动ID号
            %d:数据库ID号
            %r:resetlogs的ID值
            10g开始配置归档文件格式必须带有%s,%t和%r匹配符,配置之后必须重启数据库
            SQL>alter system set log_archive_format = '%a_%s.arc' scope=spfile;

            System altered.

            SQL> shutdown immediate;
            SQL> startup
            ORA-19905: log_archive_format must contain %s, %t and %r

            SQL>alter sytem set log_archive_format='arch_%t_%s_%r.arc';
            
            e、归档位置状态
                Valid/Invalid   --磁盘位置及服务名等是否有效
                Enable/Disable  --磁盘位置的可用状态及数据库能否使用该归档位置
                Active/Inactive --访问归档目的地是否有异常
            
            f、归档成功的最小个数
                SQL>alter system set log_archive_min_succeed_dest = 2;  --默认为1
                联机重做日志能够被覆盖的前提
                    所有强制路径归档位置成功实现归档
                    归档目的地的成功归档个数大于或等于上述参数设置的值
                    当强制个数大于该参数设置的个数,则以强制个数为准
                    当强制个数小于该参数设置的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值
            
            g、控制归档的可用性
                SQL>alter system set log_archive_dest_stat_1 = enable | defer;
                enable:缺省状态,可以再该归档位置进行归档
                defer:禁用该归档位置
                
            h、查看归档信息
            SQL> host ps -ef |grep ora_arc;    --查看归档进程是否已经启动
            oracle    4679     1  0 06:45 ?        00:00:00 ora_arc0_oral
            oracle    4681     1  0 06:45 ?        00:00:00 ora_arc1_oral
            oracle    4683     1  0 06:45 ?        00:00:00 ora_arc2_oral
            
            

            SQL> show parameter archive;

            NAME     TYPE VALUE
            ------------------------------------ ----------- ------------------------------
            archive_lag_target     integer 0
            log_archive_config     string
            log_archive_dest       string
            log_archive_dest_1     string
            log_archive_dest_10    string
            log_archive_dest_2     string
            log_archive_dest_3     string
            log_archive_dest_4     string
            log_archive_dest_5     string
            log_archive_dest_6     string
            log_archive_dest_7     string    
            log_archive_dest_8     string
            log_archive_dest_9     string
            log_archive_dest_state_1     string enable
            log_archive_dest_state_10     string enable
            log_archive_dest_state_2     string enable
            log_archive_dest_state_3     string enable
            log_archive_dest_state_4     string enable
            log_archive_dest_state_5     string enable
            log_archive_dest_state_6     string enable
            log_archive_dest_state_7     string enable
            log_archive_dest_state_8     string enable
            log_archive_dest_state_9     string enable
            log_archive_duplex_dest      string
            log_archive_format     string %t_%s_%r.dbf
            log_archive_local_first      boolean TRUE
            log_archive_max_processes     integer 2
            log_archive_min_succeed_dest     integer 1
            log_archive_start     boolean FALSE
            log_archive_trace     integer 0
            remote_archive_enable     string true
            standby_archive_dest     string ?/dbs/arch


            更改log_archive_dest与log_archive_duplex为log_archive_dest_1步骤
            SQL>alter system set log_archive_dest = '';  --先将一种归档方式路径置空
            SQL>alter system set log_archive_duplex  = '';
            SQL>alter system set log_archive_dest_1  = 'location /opt/oradata/orcl';

            SQL> select dest_name,status,archiver,destination,log_sequence,reopen_secs,
                 transmit_mode,process from v$archive_dest; --查看归档目的地相关参数

            SQL>alter system set log_archive_dest_state_3  = defer;  --停用
            SQL> show parameter log_archive_dest_state;  

            NAME     TYPE VALUE
            ------------------------------------ ----------- ------------------------------
            log_archive_dest_state_1     string enable
            log_archive_dest_state_10     string enable
            log_archive_dest_state_2     string enable
            log_archive_dest_state_3     string DEFER
            log_archive_dest_state_4     string enable
            log_archive_dest_state_5     string enable
            log_archive_dest_state_6     string enable
            log_archive_dest_state_7     string enable
            log_archive_dest_state_8     string enable
            log_archive_dest_state_9     string enable
            
    五、归档相关视图
        v$archived_log      -->从控制文件中获取
        v$archive_dest      -->归档路径及状态
        v$log_history       -->控制文件中日志的信息
        v$database          -->查看数据库归档状态
        v$archive_processes -->归档相关的后台信息

        SQL> select name,sequence#,registrar,standby_dest,archived,status from v$archived_log;

        NAME                                                                             SEQUENCE# REGISTR STA ARC S
        ---------------------------------------------------------------------------  ----------- ------- --- --- -
        /opt/oradata/orcl/1_18_814865186.dbf                                             18 FGRD    NO  YES A
        /opt/oracle/product/10.2.0/db_1/dbs/db_recovery_file_dest1_18_814865186.dbf      18 FGRD    NO  YES A
        /opt/oradata/orcl/1_19_814865186.dbf                                             19 FGRD    NO  YES A     
        /opt/oracle/product/10.2.0/db_1/dbs/db_recovery_file_dest1_19_814865186.dbf      19 FGRD    NO  YES A
    展开全文
  • Oracle 开启归档日志以及关闭归档日志
                   

    racle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog) 
    归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模式没有相应的备份策略只会带来麻烦。

    本文简单介绍如何启用和关闭数据库的归档模式。

    1.归档日志开启准备工作: 
    1.进入dos窗口—>>> 菜单键+R,进入 运行 界面,输入cmd 
    2.登录 sqlplus,—>> 方法: sqlplus/nolog,切忌:不要输入sqlplus/noarchivelog; 加上 分隔符 ;, 这样进入的sqlplus的命令参数帮助 
    3.登入管理员—>> 方法: conn/as sysdba; 
    4.开启归档日志 
    4.1 shutdown immediate; –关闭数据库 
    4.2 startup mount; – 打开数据库 
    4.3 alter database archivelog;—开启归档日志 
    4.4 alter database open;–开启数据库 
    4.5 archive log list; – 查看归档日志是否开启 
    开启状态: 
    数据库日志模式 存档模式 
    自动存档 启用 
    存档终点 USE_DB_RECOVERY_FILE_DEST 
    最早的联机日志序列 49 
    下一个存档日志序列 51 
    当前日志序列 51

    5.关闭归档日志 
    5.1 shutdown immediate; 
    5.2 startup mount; 
    5.3 alter database noarchivelog; 
    5.4 alter database open; 
    5.5 archive log list ;–查看归档日志是否关闭 
    数据库日志模式 非存档模式 
    自动存档 禁用 
    存档终点 USE_DB_RECOVERY_FILE_DEST 
    最早的联机日志序列 49 
    当前日志序列 51

    归档日志开启语句:

    Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>sqlplus/nologSQL*Plus: Release 11.2.0.1.0 Production on 星期三 622 11:14:30 2016Copyright (c) 1982, 2010, Oracle.  All rights reserved.SQL> conn/as sysdba; 已连接。SQL> **shutdown immediate;**数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL>    startup mount;ORACLE 例程已经启动。Total System Global Area 1071333376 bytesFixed Size                  1375792 bytesVariable Size             679477712 bytesDatabase Buffers          385875968 bytesRedo Buffers                4603904 bytes数据库装载完毕。SQL> alter database  archivelog;数据库已更改。SQL> alter database open;数据库已更改。SQL> archive log list;数据库日志模式            存档模式自动存档             启用存档终点            USE_DB_RECOVERY_FILE_DEST最早的联机日志序列     49下一个存档日志序列   51当前日志序列           51---归档日志的关闭SQL> shutdown immediate;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup mount;ORACLE 例程已经启动。Total System Global Area 1071333376 bytesFixed Size                  1375792 bytesVariable Size             679477712 bytesDatabase Buffers          385875968 bytesRedo Buffers                4603904 bytes数据库装载完毕。SQL> alter database noarchivelog;数据库已更改。SQL> alter database open;数据库已更改。SQL> archive log list;数据库日志模式             非存档模式自动存档             禁用存档终点            USE_DB_RECOVERY_FILE_DEST最早的联机日志序列     49当前日志序列           51SQL>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    问题总结:1. 直接进入就执行 ,   SQL> shutdown immediate;   ORA-01012: not logged on   解决方法:   先登录 管理员权限 , 语句:conn/as sysdba;2. 执行 开启归档日志提示错误:   SQL> conn/as sysdba;   已连接。   SQL> alter database archivelog;   alter database archivelog     *   第 1 行出现错误:   ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开   解决方法:    在开启归档日志之前,先执行关闭数据库链接:shutdown  immediate 或者shutdown normal    (2)执行 startup mount;      (3)执行 alter database archivelog
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    资料参考:http://www.eygle.com/archives/2004/10/oracle_howtoeci.html

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 如何解决“归档日志已满问题” 问题描述:所用数据库为Oracle10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文件不能归档,而出现oracle数据库挂起的问题。 oem打开...

    一 如何解决“归档日志已满问题”

    问题描述:所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文件不能归档,而出现oracle数据库挂起的问题。

    oem打开oracle 10g 数据库操作界面,会显示如下错误信息:    “ 由于输出设备已满或不可用, 归档程序无法归档重做日志。”

    数据库无法使用

    现将解决办法稍作总结:

    方法一:增大归档日志空间的大小

    可以通过下面的方法来调整系统的回闪恢复区大小:
    首先是关闭数据库:以SYS身份链接到oracle,执行>shutdown immediate;
    启动数据库到mount状态:>startup mount
    查看回闪恢复区的大小和存放目标:>show parameter db_recovery_file_dest
    修改回闪恢复区的大小>alter system set db_recovery_file_dest_size = 4G(缺省是2G,可以根据实际情况调整大小)
    最后打开数据库:>alter database open;

      OK , 问题解决。数据库恢复使用。

    方法二 :进入oracle清空日志信息,把空间释放出来

    启动数据库到mount状态:

     >sqlplus “/as sysdba”

    >startup mount

    新起一个终端,用rman进入把归档日志删除

    命令>rman target/  (只安装了一个oracle10g数据库)

    命令>crosscheck archivelog all;  (列出归档日志信息)

    命令>delete expired archivelog all;  (将上述列出的归档日志删除)

    命令>exit;

    此时最好将数据库重新备份一下

    把数据库的mount状态更改为open状态

    >alter database open;

    OK.问题解决,数据库可以使用。

     

    误区:   在系统清空归档目录的日志信息(即物理删除归档日志,或将归档日志转移至别处)不可取,OS虽然删除了,但oracle系统识别不出来已经清空日志,只能进入oracle清空日志信息,把空间释放出来,(方法二);或者是把归档空间设置更大(方法一)。

       建议将两种方法结合使用,减少工作量,也避免数据库频繁挂起。同时定时进行数据库完全备份或其他重要数据备份

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

    select * from v$flash_recovery_area_usage; --查看空间占用率

     select * from v$recovery_file_dest;  --查看归档日志的存放地址;

    使用rman清空归档日志

         crosscheck archivelog all;                                       //查看可以所有的归档文件

         delete expired archivelog all;                                     //清空过期的归档文件

     如何确认归档日志是否过期,rman有一个保留策略,可以定义多少天之前的日志算为过期;
       CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;                //让恢复窗口成为14天大小。
     RMAN>  show all;                                                                                                             //查看所有的rman策略.

    select count(*) from v$archived_log where archived='YES' and deleted='NO';                    //查看所有归档,未删除的归档日志  

    oracle 11g   我日常中清理归档日志的方法:

    #查询归档的大小
    # su - oralce
    $ sqlplus / as sysdba
    SQL> select sum(a.block_size*a.blocks)/1024/1024 from v$archived_log a where a.deleted='NO';
    
    SUM(A.BLOCK_SIZE*A.BLOCKS)/1024/1024
    ------------------------------------
    			  1341763.19
    
    
    # 用RMAN 清理归档
    
    $ rman target/                                                         #进入rman   
    RMAN>  delete force archivelog all completed before 'sysdate-7';       #清理归档只保留7天的
    

     

     

     

     

     

     

     

    ------------------------检查方法-------------------------------------------------------------

    大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情况,你看到的可能是一个表面现象。

      默认情况下我们在dbca建库时,会把归档放在$ORACLE_HOME/ flash_recovery_area 下,并且oracle默认给FRA配置的大为2g

      这里需要足以两个参数:

      db_recovery_file_dest string /oracle/flash_recovery_area

      db_recovery_file_dest_size big integer 2G

      这里总结一句,如果db_recovery_file_dest 下的存放的归档大小达到db_recovery_file_dest_size 即使该目录下仍然有磁盘空间剩余,oracle也不会去写。

      这里我建议按照如下步骤去确定:归档空间是否满了?

      1.首先从系统层面确定归档目录存放的磁盘空间情况:

      [oracle@localhost bdump]$ df -h

      Filesystem Size Used Avail Use% Mounted on

      /dev/mapper/VolGroup00-LogVol00 26G 12G 14G 46% /

      /dev/sda2 19G 16G 2.8G 85% /oracle

      /dev/sda1 99M 24M 71M 25% /boot

      tmpfs 978M 508M 470M 52% /dev/shm

      2. 确定归档存放目录,归档存放目录大小

      SQL> archive log list;

      Database log mode Archive Mode

      Automatic archival Enabled

      Archive destination USE_DB_RECOVERY_FILE_DEST -------这里默认使用的是DB_RECOVERY_FILE_DEST

      Oldest online log sequence 17

      Next log sequence to archive 20

      Current log sequence 20

      查询归档日志存储大小

    show parameter db_recovery_file_dest_size;
    
    select sum(a.BLOCK_SIZE*a.BLOCKS)/1024/1024 from v$archived_log a where a.DELETED='NO';
    
    # 归档日志换算到TB
    SQL> select sum(a.block_size*a.blocks)/1024/1024/1024/1024 from v$archived_log a where a.deleted='NO';
    

     

    ----也可以按照以下方式查询归档放置的地方

      SQL> show parameter db_

      NAME TYPE VALUE

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

      db_keep_cache_size big integer 0

      db_name string lixora

      db_recovery_file_dest string /oracle/flash_recovery_area

      db_recovery_file_dest_size big integer 2G

      db_recycle_cache_size big integer 0

      db_unique_name string lixora

      -----这里可以看到闪回恢复区里的空间使用情况:

      SQL> select * From v$flash_recovery_area_usage;    ---------这里可以看到闪回恢复区里的空间占有率情况:

      FILE_TYPE            PERCENT_SPACE_USED     PERCENT_SPACE_RECLAIMABLE       NUMBER_OF_FILES

      -----文件类型-------  ---百分比空间 ---------------        -----可收回百分比-------------                 ---------文件编号------

      CONTROLFILE             0                                                    0                                                                 0

      ONLINELOG               4.88                                                 0                                                                  1

      ARCHIVELOG            76.05                                                0                                                                 47

      BACKUPPIECE          3.1                                                  0                                                                   3

      IMAGECOPY               0                                                    0                                                                   0

      FLASHBACKLOG       0                                                    0                                                                    0

      6 rows selected.

      ------注意这一步才是真正查看归档空间的实际使用情况:

      SQL> select * from v$recovery_file_dest; ------注意这一步才是真正查看归档空间的实际使用情况:

      NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

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

      /oracle/flash_recovery_area 2147483648 1804771840 0 51

      但是还是在系统层面去查看磁盘空间。

     

    二  Oracle归档日志使用情况查询

    1,查看归档日志大小及使用情况
    SQL> select * from v$recovery_file_dest;

    SQL> select * from v$flash_recovery_area_usage;

    如果 ARCHIVED LOG 超过90% oracle随时有宕机的危险

    增大归档日志空间
    SQL> alter system set db_recovery_file_dest_size=20G;

    System altered.

    2,删除归档日志

    1.看看现在用了多少归档日志了(按百分比):
     select * from v$flash_recovery_area_usage;
    如果超过90%随时有宕机的危险
    2.当删除归档文件后需要用RMAN工具释放归档所占用的空间,首先连接RMAN工具
    rman target sys/pass
    3.查查归档日志吧
    crosscheck archivelog all;
    4.觉着没用就干掉它吧,如果想保留今天的用下面那个语句
    delete expired archivelog all;(全部删除)
    delete archivelog until time 'sysdate - 1';(保留当天删除,删除之前所有)也可以:$ORACLE_BASE/flash_recovery_area/你的实例名/archivelog/这个路径下,找到归档日志文件,把没用的删了

    3,关闭归档

    1.,用SYS用户进行登录,首先设置归档进程关闭。
     alter system set log_archive_start = false scope = spfile;
     
    2.然后关闭数据库
     shutdown immediate;
     

    3.启动DB到mount模式
     startup mount;
     
    4.关闭闪回数据库模式,如果不关的话总报错ORA-38774
     alter database flashback off;
     
    5.接着将数据库改为非归档模式吧
    alter database noarchivelog;
     
    6.打开数据库
    alter database open;
     
    7.查看一下空间大小吧
    select * from v$recovery_file_dest;
     
    8.看一下日志状态
    select * from v$log;
     
    9.使用情况查看方法还是如出一辙
    select * from v$flash_recovery_area_usage;

     

    4,归档设置,

    一 设置为归档方式

    1 sql> archive log list;                                                                                                                 #查看是不是归档方式
    2 sql> alter system set log_archive_start=true scope=spfile;                                                     #启用主动归档
       sql> alter system set log_archive_dest=''location=/oracle/ora9/oradata/arch'' scope=spfile;  #设置归档路径
       sql> alter system set log_archive_dest_1=''location=/oracle/ora9/oradata/arch1'' scope=spfile;
       sql> alter system set log_archive_dest_2=''location=/oracle/ora9/oradata/arch2'' scope=spfile;
                                                                                                                             #如果归档到两个位置,则可以通过上边方法实现
      sql> alter system set log_archive_format=''arch_%d_%t_%r_%s.log''                             #设置归档日记款式

    或者:
    1.SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20G SCOPE=BOTH;

    2.SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/DBA/FB' SCOPE=BOTH;

    3 sql> shutdown immediate;
    4 sql> startup mount;                                                          #打开控制文件,不打开数据文件
    5 sql> alter database archivelog;                                       #将数据库切换为归档模式
    6 sql> alter database open;                                              #将数据文件打开
    7 sql> archive log list;                                                      #查看此时是否处于归档模式
    8 查询以确定数据库位于archivelog模式中且归档过程正在运行
    sql> select log_mode from v$database;
    sql> select archiver from v$instance;
    9 日志切换
    sql> alter system switch logfile;
    10 这次日志切换将归档写到两个目标地,
      1,即第二步的/oracle/ora9/oradata/arch1和/oracle/ora9/oradata/arch1,要是要对目录确认

    在oracle情况中运行如下查询:
    sql> select name from v$archived_log;
    而后在操作系统中确认查询所列出的文件
    二 设置非归档方式
    1 sql> archive log list;   #查看是否是归档方式
    2 sql> alter system set log_archive_start=false scope=spfile; #禁用自动归档
    3 sql> shutdown immediate;
    4 sql> startup mount;    #打开控制文件,不打开数据文件
    5 sql> alter database noarchivelog; #将数据库切换为非归档模式
    6 sql> alter database open;   #将数据文件打开
    7 sql> archive log list;   #查看此时便处于非归档模式

    三 归档相关命令

    archive log stop;
    archive log start;
    archive log list;

    show parameters;
    show parameters log_archive_start;
    show parameters log_archive_max_process; #归档进程数
    alter system set log_archive_max_process=5; #将归档进程数改为5
    select * from v$bgprocess;    #检察后台进程
     =================
     SQL> show parameter archive log; 显示所有的归档日志
    SQL> show parameter recover;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      /u03/fast_recovery_area
    db_recovery_file_dest_size           big integer 8G  归档日志大小
    db_unrecoverable_scn_tracking        boolean     TRUE
    recovery_parallelism                 integer     0

     

    三 Oracle数据库查看查看一周内的归档日志产生情况

     

    sql> select logtime,  count(*),  round(sum(blocks * block_size) / 1024 / 1024) mbsize 
     from (select trunc(first_time, 'dd') as logtime, a.BLOCKS, a.BLOCK_SIZE from v$archived_log a  where a.DEST_ID = 1  and a.FIRST_TIME > trunc(sysdate - 7)) group by logtime order by logtime desc;
    
    sql>  select count(*) from v$process; 

     

     

     

     

     

     

     

     

    展开全文
  • 当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE。   一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186....

    原文地址:https://blog.csdn.net/linlzk/article/details/5269186

    当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE。

     

    一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。

     

    二、把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。

    我们利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例)

    1.指定数据库实例

    C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl

    2.连接数据库

    C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl

    3.查看归档日志的状态

    RMAN> list archivelog all;

    4.手工删除归档日志文件

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

     说明:
     SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。 
    同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库 
    DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从7天前到现在的全部日志,慎用
    UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除 
    find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ; 
    这样做仍然会在RMAN里留下未管理的归档文件 
    仍需要在RMAN里执行下面2条命令 
    crosscheck archivelog all; 
    delete expired archivelog all; 
    所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能

    5.退出rman

    RMAN> exit

     

     

     

    附带说明:RMAN 是Oracle数据库软件自带的备份恢复工具,一种是类似于DOS,通过键盘操作的 命令行方式。

    通过RMAN连接本地数据库非常简单,以 W indows 平台为例,进入到命令提示符界面:

    C:/Documents and Settings/junsansi> SET ORACLE_SID =jssbook

    C:/Documents and Settings/junsansi> RMAN TARGET /

    Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:17 2009

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    connected to target database: JSSBOOK (DBID=1415261003)

    RMAN>

      如上所示,使用RMAN连接本地数据库之前必须首先设置操作系统环境变量:ORACLE_SID,并指定该值等于目标数据库的实例名。如果本地库只有一个实例并已经设置了ORACLE_SID环境变量,则不需要再指定ORACLE_SID。RMAN会自动连接到默认实例。

      当然,你也可以先启动RMAN,然后再通过CONNECT命令来连接目标数据库,如下所示:

    C:/Documents and Settings/junsansi> RMAN

    Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:36 2009

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    RMAN> connect target /

    connected to target database: JSSBOOK (DBID=1415261003)

      本地连接允许使用操作系统验证,因此上述示例都不需要输入用户名和密码,不过如果本地没有启用操作系统身份验证的话,就必须指定具有相应权限的用户名和密码。

      需要注意,Linux/UNIX 环境下设置操作系统环境变量应使用 export 命令,另外ORACLE_SID必须为大写。例如:

    [oracle@yans1  ~ ]$  export  ORACLE_SID=test08

    [oracle@yans1  ~ ]$  rman target /

    Recovery Manager: Release 10.2.0.3.0 - Production on Tue Mar 17 16:08:32 2009

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    connected to target database: TEST08 (DBID=3812548755)

    RMAN> 

     

    连接远程数据库

      如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名(Net Service Name),本地的tnsname.ora文件中必须已经建立了该网络服务名的正确配置。连接示例如下:

    C:/Documents and Settings/junsansi> RMAN TARGET SYS/CHANGE_ON_INSTALL@TESTDB

    Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 16:12:32 2009

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    connected to target database: TESTDB (DBID=2220262593)

    RMAN>

    展开全文
  • Oracle 归档日志

    千次阅读 2019-01-25 12:12:17
    Oracle 归档日志
  • DB2归档日志设置

    2019-11-06 09:28:11
    DB2归档日志设置 db2活动日志占用的最大空间计算公式 归档日志设置是否成功的检测方式
  • 归档日志管理

    千次阅读 2014-01-04 19:32:38
    archive 归档日志管理
  • oracle 归档日志

    2019-04-22 19:10:47
    归档日志2. 查看归档模式3. 归档日志命名格式4. 手动切换日志5. 归档路径5.1 更改归档路径5.2 配置让归档路径使用闪回区5.3 查看归档情况及信息6. 删除归档⽇志 1. 归档日志 归档 VS ⾮归档 归档会在⽇志切换时,...
  • 数据库归档日志

    千次阅读 2019-10-22 17:13:33
    关于归档日志:Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。 其对数据库备份和恢复有下列用处: 数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可...
  • 一、关闭oracle数据库归档日志 第一步:打开doc窗口 第二步:执行命令set ORACLE_SID=数据库实例名(相当于设置了局部环境变量,只在当前DOS窗口有效) 执行命令sqlplus / as sysdba 输入: 用户名:sys a
  • oracle 数据库归档日志

    千次阅读 2018-09-11 09:23:04
    数据库归档日志 在系统创建归档路径mkdir /u01/arch  修改数据库归档日志的路径参数alter system set log_archive_dest_1='location=/u01/arch' scope=spfile; show parameter arch可查看归档日志文件  修改...
  • --查看归档日志的存放地址; 使用rman清空归档日志 crosscheck archivelog all; --查看可以所有的归档文件 delete expired archivelog all; --清空过期的归档文件 如何确认归档日志是否过期,rman有一个保留...
  • Oracle归档日志

    2014-11-26 17:19:26
    --查看日志模式 archive log list; --开启/关闭归档模式 ...--查看归档日志存储位置及空间大小限制 show parameter db_recovery_file_dest; --更改归档日志位置 alter system set db_recov
  • 归档日志路径

    千次阅读 2015-12-30 02:22:39
    归档日志路径为LOG_ARCHIVE_DEST指定的路径: SQL> show parameter log_archive_dest;   NAME TYPE VALUE ------------------------------------ ----------- ------------------
  • 归档日志清理方法

    2020-12-29 21:17:02
    归档日志清理方法 早上起来上班发现数据库无法连接了,猜测可能是归档日志满了。 连接服务器一查发现果然磁盘空间满了,判断是归档日志满了,需要清理归档日志了,但是由于磁盘空间已经满了,导致无法进入rman删除...
  • 当然们在OS下把这些物理文件delete掉后,在我们的controlfile中仍然记录着这些archivelog文件的相关信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除 archive目录下的文件后,这些记录并没有被我们...
  • 重做日志与归档日志

    2017-03-13 13:27:32
    重做日志redo log file是LGWR进程从Oracle实例中...归档日志archive log是当数据库运行在归档模式下时,一个redo log file(group)写满后,由ARCn进程将重做日志的内容备份到归档日志文件下,然后这个redo log file(gro
  • 重做日志与归档日志的区别

    千次阅读 2015-07-31 11:29:58
    重做日志与归档日志有什么区别? 重做日志redo log file是LGWR进程从Oracle实例中的redo log buffer写入的,是循环利用的。就是说一个redo log file(group) 写满后,才写下一个。 归档日志archive log是当数据库...
  • Oracle归档日志管理

    2013-10-31 17:04:19
    归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,...
  • Oracle归档日志文件

    千次阅读 2019-04-23 23:25:43
    目录 日志模式分类 1.归档模式(ARCHIVELOG...查看归档日志信息 Oracle利用重做日志文件来记录用户对数据库所做的修改,但是重做日志文件是以循环方式使用的,在重新写入重做日志文件是,原来保存的重做记录会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,901
精华内容 36,360
关键字:

归档日志怎么看