精华内容
下载资源
问答
  • 介绍如何为 Oracle 单实例和 RAC 集群环境设置数据库的归档模式和非归档模式。非归档模式只能进行冷备,只能还原到备份点,之后的数据无法恢复;一般在开发或者测试环境使用;归档模式可以执行热备,同时支持增量...

    Oracle 在线重做日志(online redo log)记录了数据库的各种增删改操作。数据库至少拥有 2 个在线重做日志组,并且循环使用;日志组 1 写满后切换到日志组 2,日志组 2 写满后再切换到日志组 1,不停地重复这个过程。

    切换日志组会覆盖原来日志文件中的内容,如果不对已经写满的日志文件进行归档,重做日志记录就会丢失;如果选择归档日志模式,发生日志切换会对写满的日志会进行归档存储,意味着历史重做日志记录都会被保存。这两种配置的主要优缺点如下:

    • 非归档模式只能进行冷备,只能还原到备份点,之后的数据无法恢复;一般在开发或者测试环境使用
    • 归档模式可以执行热备,同时支持增量备份,可以执行时间点恢复;归档日志文件需要占用额外的磁盘空间

    ⚠️对于生产数据库,必须要工作在归档模式。

    接下来我们介绍如何为 Oracle 单实例和 RAC 集群环境设置数据库的归档模式和非归档模式。

    查看归档模式

    首先,可以使用 ARCHIVE LOG LIST 命令查看数据库当前归档模式:

    SQL> ARCHIVE LOG LIST;
    Database log mode	       No Archive Mode
    Automatic archival	       Disabled
    Archive destination	       /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch
    Oldest online log sequence     285
    Current log sequence	       287
    

    No Archive Mode 意味着非归档模式。

    另外,也可以通过 v$database 系统视图查看当前的归档模式:

    SQL> select name,log_mode from v$database;
    
    NAME	  LOG_MODE
    --------- ------------
    ORCL	  NOARCHIVELOG
    

    单实例

    Oracle 9i 之前

    在 Oracle 9i 单节点实例中,可以使用以下方法将数据库设置为归档日志模式:

    ALTER SYSTEM SET log_archive_start=TRUE SCOPE=spfile;
    ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/SID/archive/' SCOPE=spfile;
    ALTER SYSTEM SET log_archive_format='arch_%t_%s.arc' SCOPE=spfile;
    
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ARCHIVE LOG START;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
    

    记得替换归档目录中的 SID,也可以设置自己的归档目录和日志文件名的格式。

    ⚠️切换为归档日志模式之后一定要执行一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式不可用。

    另一方面,我们可以使用以下方法将数据库设置为非归档模式:

    ALTER SYSTEM SET log_archive_start=FALSE SCOPE=spfile;
    
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ARCHIVE LOG STOP;
    ALTER DATABASE NONARCHIVELOG;
    ALTER DATABASE OPEN;
    

    Oracle 10g 以后

    从 Oracle 10g 开始,LOG_ARCHIVE_START 参数以及 ARCHIVE LOG START 命令已经被废弃(归档模式默认启用自动归档),因此设置更为简单。以下操作将数据库设置为归档模式:

    ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/SID/archive/' SCOPE=spfile;
    ALTER SYSTEM SET log_archive_format='arch_%t_%s_%r.arc' SCOPE=spfile;
    
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
    

    记得替换归档目录中的 SID,也可以设置自己的归档目录和日志文件名的格式。

    ⚠️切换为归档日志模式之后一定要执行一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式不可用。

    同样,我们可以使用以下方法将数据库设置为非归档模式:

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE NONARCHIVELOG;
    ALTER DATABASE OPEN;
    

    RAC 集群

    Oracle RAC 集群环境中的归档模式和非归档模式的设置略有不同。ALTER DATABASE ARCHIVELOG 命令只能在数据库以独占模式 MOUNT 时执行,这就意味着必须停止整个集群数据库,然后执行操作。

    Oracle 9i 之前

    首先,设置相关的归档参数:

    ALTER SYSTEM SET log_archive_start=TRUE SCOPE=spfile;
    ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/db_name/archive/' SCOPE=spfile;
    ALTER SYSTEM SET log_archive_format='arch_%t_%s.arc' SCOPE=spfile;
    

    由于需要以独占模式装载数据库,还必须设置以下参数:

    ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
    

    然后使用 srvctl 停止整个集群数据库:

    $ srvctl stop database -d db_name
    

    集群停止之后,我们可以连接到其中一个节点执行以下命令:

    STARTUP MOUNT;
    ARCHIVE LOG START;
    ALTER DATABASE ARCHIVELOG;
    ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;
    SHUTDOWN IMMEDIATE;
    

    注意,参数 CLUSTER_DATABASE 被重新设置为 TRUE。由于数据文件和 SPFILE 被所有实例共享,以上操作只需要从一个节点执行。

    然后,再次从命令行启动集群数据库:

    $ srvctl start database -d db_name
    

    以上设置将多个实例的归档日志放在了同一个目录中。归档格式中包含了线程(%t),可以防止实例之间的归档日志文件名冲突。如果需要为不同实例指定单独的归档目录,可以在 LOG_ARCHIVE_DEST_1 参数前加上实例 SID 前缀:

    ALTER SYSTEM SET SID1.log_archive_dest_1='location=/u01/oradata/db_name/archive/' SCOPE=spfile;
    ALTER SYSTEM SET SID2.log_archive_dest_1='location=/u01/oradata/db_name/archive/' SCOPE=spfile;
    

    同样,我们可以使用以下方法将集群数据库设置为非归档模式,只需要在一个节点进行操作:

    ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
    
    $ srvctl stop database -d db_name
    
    STARTUP MOUNT;
    ARCHIVE LOG STOP;
    ALTER DATABASE NONARCHIVELOG;
    ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;
    SHUTDOWN IMMEDIATE;
    
    $ srvctl start database -d db_name
    

    Oracle 10g 以后

    从 Oracle 10g 开始,LOG_ARCHIVE_START 参数以及 ARCHIVE LOG START 命令已经被废弃(归档模式默认启用自动归档),因此设置更为简单。首先,设置相关的归档参数:

    ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/db_name/archive/' SCOPE=spfile;
    ALTER SYSTEM SET log_archive_format='arch_%t_%s_%r.arc' SCOPE=spfile;
    

    如果是 Oracle 10gR1,由于需要以独占模式装载数据库,还必须设置以下参数:

    ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
    

    Oracle 10gR2 以后的版本不再需要设置 cluster_database 参数。

    然后从命令行停止整个集群数据库:

    $ srvctl stop database -d db_name
    

    集群停止之后,我们可以连接到其中一个节点执行以下命令:

    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;
    SHUTDOWN IMMEDIATE;
    

    再次从命令行启动集群数据库:

    $ srvctl start database -d db_name

    同样,我们可以使用以下方法将集群数据库设置为非归档模式,只需要在一个节点进行操作:

    ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
    

    Oracle 10gR2 以后的版本不再需要设置 cluster_database 参数。

    $ srvctl stop database -d db_name
    
    STARTUP MOUNT;
    ALTER DATABASE NONARCHIVELOG;
    ALTER SYSTEM SET cluster_database=TRUE SCOPE=spfile;
    SHUTDOWN IMMEDIATE;
    
    $ srvctl start database -d db_name
    

    定期更新数据库领域相关文章,欢迎点赞👍、评论📝、收藏❤️!

    展开全文
  • 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式归档模式。默认情况下,数据库采用的是非归档模式。作为一个合格的数据库管理员,应当深入了解这两种日志操作模式的特点,并且在数据库建立时,选择...
  • 查看oracle数据库是否为归档模式: Sql代码 1.select name,log_mode from v$database; NAME LOG_MODE ------------------ ------------------------ QUERY NOARCHIVELOG 2.使用ARCHIVE LOG...
    一。查看oracle数据库是否为归档模式:
    
    Sql代码
    1.select name,log_mode from v$database;   
    NAME               LOG_MODE   
    ------------------ ------------------------   
    QUERY             NOARCHIVELOG   
    2.使用ARCHIVE LOG LIST 命令   
    Database log mode                 No Archive Mode   
    Automatic archival                   Disabled   
    Archive destination                  /data/oracle/product/10.2.0/db_1//dbs/arch   
    Oldest online log sequence     739   
    Current log sequence              741  
    [sql] view plaincopyprint?
    1.select name,log_mode from v$database;  
    NAME               LOG_MODE  
    ------------------ ------------------------  
    QUERY             NOARCHIVELOG  
    2.使用ARCHIVE LOG LIST 命令  
    Database log mode                 No Archive Mode  
    Automatic archival                   Disabled  
    Archive destination                  /data/oracle/product/10.2.0/db_1//dbs/arch  
    Oldest online log sequence     739  
    Current log sequence              741  
    1.select name,log_mode from v$database;
    NAME               LOG_MODE
    ------------------ ------------------------
    QUERY             NOARCHIVELOG
    2.使用ARCHIVE LOG LIST 命令
    Database log mode                 No Archive Mode
    Automatic archival                   Disabled
    Archive destination                  /data/oracle/product/10.2.0/db_1//dbs/arch
    Oldest online log sequence     739
    Current log sequence              741
     
    二。什么是Oracle归档模式?
      Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
      如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
      数据库使用归档方式运行时才可以进行灾难性恢复。
    1.归档日志模式和非归档日志模式的区别
    非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.
    归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.
    用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式
    ===============================================================
    三。配置数据库的归档模式
     
    改变非归档模式到归档模式:
    
    Sql代码
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下数据   
    2)SQL>START 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] view plaincopyprint?
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下数据  
    2)SQL>START MOUNT;                                启动数据库实例到mount状态,但不要打开  
    3)SQL>ALTER DATABASE ARCHIVELOG;      设置数据库为归档日志模式  
    4)SQL>ALTER DATABASE OPEN;                  打开数据库  
    5)SQL>archive log list;                                确认数据库现在处于归档日志模式  
    6)SQL>archive log all;                                 将这个时间点的redo logs归档  
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下数据
    2)SQL>START MOUNT;                                启动数据库实例到mount状态,但不要打开
    3)SQL>ALTER DATABASE ARCHIVELOG;      设置数据库为归档日志模式
    4)SQL>ALTER DATABASE OPEN;                  打开数据库
    5)SQL>archive log list;                                确认数据库现在处于归档日志模式
    6)SQL>archive log all;                                 将这个时间点的redo logs归档
    
    5)SQL>做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!
    
    Sql代码
    SQL>alter tablespace users begin bacup;  
    [sql] view plaincopyprint?
    SQL>alter tablespace users begin bacup;  
    SQL>alter tablespace users begin bacup;
     
    ====================
    如果停止归档模式就用
    alter database noarchivelog 
    ========================
    
    改变归档模式到非归档模式:
    
    Sql代码
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;         
    2)SQL>START MOUNT;       
    3)SQL>ALTER DATABASE NOARCHIVELOG;    
    4)SQL>ALTER DATABASE OPEN;    
    [sql] view plaincopyprint?
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;        
    2)SQL>START MOUNT;      
    3)SQL>ALTER DATABASE NOARCHIVELOG;   
    4)SQL>ALTER DATABASE OPEN;    
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;      
    2)SQL>START MOUNT;    
    3)SQL>ALTER DATABASE NOARCHIVELOG; 
    4)SQL>ALTER DATABASE OPEN;  
    
    3.启用自动归档: LOG_ARCHIVE_START=TRUE
    归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,知道归档完成为止.
    这时只能读而不能写.
    运行过程中关闭和重启归档日志进程
    SQL>ARCHIVE LOG STOP
    SQL>ARCHIVE LOG START
     
    4.手动归档: LOG_ARCHIVE_START=FALSE
    归档当前日志文件
    SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
    归档序号为052的日志文件
    SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
    归档所有日志文件
    SQL>ALTER SYSTEM ARCHIVE LOG ALL;
    改变归档日志目标
    SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';
     
    5.归档模式和非归档模式的转换
     
    第4步的逆过程.
     
    6.配置多个归档进程
    Q:什么时候需要使用多个归档进程?
    A:如果归档过程会消耗大量的时间,那么可以启动多个归档进程,这是个动态参数,可以用ALTER SYSTEM动态修改.
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
    Oracle9i中最多可以指定10个归档进程
    与归档进程有关的动态性能视图
    v$bgprocess,v$archive_processes
    
    7.配置归档目标,多归档目标,远程归档目标,归档日志格式
    归档目标 LOG_ARCHIVE_DEST_n
    本地归档目标:
    SQL>LOG_ARCHIVE_DEST_1 = "LOCATION=D:ORACLEARCHIVEDLOG";
    远程归档目标:
    SQL>LOG_ARCHIVE_DEST_2 = "SERVICE=STANDBY_DB1";
    强制的归档目标,如果出错,600秒后重试:
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = "LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600";
    可选的归档目标,如果出错,放弃归档:
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = "LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL";
     
    归档目标状态:关闭归档目标和打开归档目标
    关闭归档目标1
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER 
    打开归档目标2
    SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE
     
    归档日志格式
    LOG_ARCHIVE_FORMAT
     
    8.获取归档日志信息
    V$ARCHVIED_LOG
    V$ARCHVIE_DEST
    V$LOG_HISTORY
    V$DATABASE
    V$ARCHIVE_PROCESSES
     
    ARCHIVE LOG LIST;

    那么归档模式和非归档模式。我们如何选择呢?
    归档模式的优点:1、可以进行完全、不完全恢复:对于数据库所作的全部改动 都记录在日志文件中,如果发生磁盘故障等导致数据文件丢失的话,则可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。
    2、可以进行联机热备,所谓的联机热备,就是在数据库运行的状态下对数据库进行备份,其他用户不受影响。
    3、可以实施Data Guard:可以部署一个或者多个备用数据库,从而最大限制的提供灾难保护。
    4、可以实施stream:利用stream技术,可以实现最简单的单向复制、双向复制和多向复制,提供更加灵活的数据冗余方案。
    5、表空间可以脱机:可以备份部分数据库和重要的表空间。
    6、能够增量备份,只需做一次完整的备份,以后之备份改变的数据,提高备份速度。
    7、更多的优化选择。
    使用归档模式的缺点:
    1、需要更多的磁盘空间来保存归档日志
    2、需要定期维护归档表空间和备份归档日志
    非归档模式的优点:不生成归档日志,从数据安全的角度上看,缺点足以弥盖所有优点.
    使用非归档模式的缺点:
    1、只能进行脱机备份,也叫冷备份,就是必须数据库关闭之后才能备份,备份过程中数据库不能使用。
    2、必须备份整个数据库,不能备份部分数据库
    3、不能增量备份,对于TB级别的数据库(VLDB),将是个很大的缺点。
    4、只能部分恢复,如果数据文件丢失,只能恢复最后一次的完全备份,而之后的所有数据库改变将全部丢失。
    归档模式和非归档模式下的相互切换:
    ----非归档模式转归档模式
    shutdown immediate;  #关闭数据库
    startup mount;  #连接控制文件
    alter database archivelog; #设置为归档模式
    alter database open; #打开数据库

    alter system set log_archive_dest_1="location=路径" scope=both;#设置本地归档日志的路径
    alter system set log_archive_dest-1="server=路径" scope=both;#设置为远程归档日志的路径
    archive log list;#使归档路径生效
    ————————————————————————————————————————————————————
    那如果归档日志空间满了,如何满足日常需要;
    首先我们会考虑将部分归档日志移走或者删除,之后有可能会发现空间未释放。linux中当一个文件被进程使用或者占用的时候,移走或者删除文件,空间将不会释放,解决办法:关闭进程即可。
    ps -fe|grep filename;
    kill 最前面数字1 最前面数字2;
    oracle归档日志的默认路径是$oracle_base/fast_recovery_area;默认大小为4g;
    archive log list;#查看归档日志相关信息
    方法1:增加归档空间
    默认情况下,归档日志保存空间是在闪回区,
    show parameter db_recovery;#查看闪回区空间大小和占用大小
    alter system set db_recovery_file_dest_size=数值;#增大默认闪回区空间大小

    方法2:修改归档日志路径为不受限制的路径
    alter system set "location=路径";#必须确保路径存在
    shutdown immediate;

    alter database open;#重启数据库
    archive log list;#检查归档日志路径是否设置成功
    ————————————————————————————————————————————————————

    ----归档模式切换归档模式;
    首先要关闭归档进程,以sys身份登陆
    alter system set log_archive_start=false scope=spfile;  #关闭归档进程
    shutdown immediate;#关闭数据库
    startup mount;#打开mount
    alter database flashback off;#关闭闪回模式,如果未关闭,或出现ORA-38774的错误ora-38774:cannot disable media recovery-flashback database is enabled.
    alter database noarchivelog;#把数据库设置为非归档模式
    alter database open;#打开数据库
    --一些验证切换成功的方法,select * from v$log;

     

     

    展开全文
  • Oracle 归档模式和非归档模式

    万次阅读 2016-04-29 12:03:29
    归档模式和非归档模式在DBA部署数据库之初,必须要做出的最重要决定之一就是选择归档模式(ARCHIVELOG)或者非 归档模式(NOARCHIVELOG )下运行数据库。我们知道,Oracle 数据库需要至少两组联机日志,每当一组 ...

    归档模式和非归档模式

    在DBA部署数据库之初,必须要做出的最重要决定之一就是选择归档模式(ARCHIVELOG)或者非 归档模式(NOARCHIVELOG )下运行数据库。我们知道,Oracle 数据库需要至少两组联机日志,每当一组 联机日志写满后会发生日志切换,继续向下一组联机日志写入。如果是归档模式,日志切换会触发归档进程 (ARCn)进行归档,生成归档日志。Oracle 保证归档完成前,联机日志不会被覆盖,如果是非归档模式, 则不会触发归档动作。

    原文地址:http://blog.sunansheng.com/2016/04/29/archivelog-noarchivelog/

    归档模式的优缺点

    归档日志文件中保留了数据库的改动信息。

    在这种模式下可以获得如下好处:

    • 可以进行完全、不完全恢复:由于对数据库所做的全部改动都记录在日志文件中,如果发生硬盘故 障等导致数据文件丢失的话,则可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。
    • 可以进行联机热备:所谓联机热备,就是在数据库运行状态下,对数据库进行备份。备份时用户对 数据库的使用不受任何影响。
    • 可以实施 Data Guard:可以部署 1 个或多个备用数据库,从而最大限度地提供灾难保护手段。
    • 可以实施 Stream:利用 Stream 技术,可以实现最简单的单向复制到复杂的双向复制、多向复制, 提供更加灵活的数据冗余方案。
    • 表空间可以脱机:可以备份部分数据库,比如重要的表空间。
    • 能够增量备份:只需做一次完全备份,以后只备份发生改变的数据,可以提高备份速度。
    • 更多的优化选项:随着 Oracle 版本升级,在联机热备方面不断有新的优化策略出现。

    使用归档模式的缺点在于:

    • 需要更多的磁盘空间保存归档日志;
    • DBA 会有更多的管理工作,包括维护归档空间、备份归档日志。

    非归档模式的优缺点

    非归档模式不生成归档日志,从数据安全角度来说,这种模式缺点是主要的,而优点可以忽略不计。

    非归档模式的缺点包括:

    • 只能进行脱机备份,也就是所谓的“ 冷备份”,和联机备份的“ 热备份” 相对应,数据库必须完全 关闭后备份,在备份过程中数据库不可用;
    • 必须备份整个数据库,不能只备份部分数据库;
    • 不能增量备份,对于 TB 级数据库(VLDB) ,这是一个非常大的缺点;
    • 只能部分恢复,如果数据文件丢失需要恢复,DBA 只能恢复最后一次的完全备份,而之后的所有 数据库改变全部丢失。

    非归档模式的优点包括:

    • DBA 的管理工作减少,因为非归档模式不产生归档日志,因此 DBA 不用考虑对归档的管理;
    • 性能会有提升。

    非归档模式转换成归档模式

    数据库创建过程中需要指定归档和非归档模式,如果选择的是非归档模式,可以在数据库创建完成后 手工改变成归档模式,具体操作步骤如下。

    (1 )关闭数据库:

    shutdown immediate; 
    

    (2 )启动数据库到 mount 状态:

    startup mount; 
    

    (3 )修改数据库归档模式:

    alter database archivelog; 
    

    (4 )启动数据库:

    alter database open; 
    

    (5 )定义归档位置,也就是归档日志保存路径:

    alter syste set log_archive_dest_1="location=d:\oradata\example\archive" scope=both; 
    

    (6 )确认配置生效:

    archive log list; 
    展开全文
  • source: http://blog.itpub.net/26508908/viewspace-1663566/oracle11g设置归档模式和非归档模式 分类: Oracle2015-05-20 11:25:481、首先查看当前数据库是否处于归档模式 可使用如下两种方式查看1.1 select ...

    source: http://blog.itpub.net/26508908/viewspace-1663566/

     

    分类: Oracle

    2015-05-20 11:25:48

    1、首先查看当前数据库是否处于归档模式
          
        可使用如下两种方式查看
    1.1 
    select name, log_mode from v$database;
    log_mode的值为 NOARCHIVELOG 表示数据库处于非归档模式
    log_mode的值为 ARCHIVELOG 表示数据库处于归档模式

    1.2 
    archive log list; (此方法需要 as sysdba)
    Database log mode 的值为 No Archive Mode
    Automatic archival 的值为 Disabled 
    表示当前数据库处于非归档模式
    Database log mode 的值为 Archive Mode
    Automatic archival 的值为 Enabled
    表示数据库已开启归档模式

    2、非归档模式的数据库更改为归档模式
        
       数据库从非归档模式更改为归档模式需要数据库处于mount状态下。
        以下操作适用于oracle10g以上版本,对于oracle8i和9i不适用。
    2.1 关闭数据库
    shutdown immediate;
    2.2 启动数据库到mount状态
    startup mount;
    2.3 修改数据库为归档模式
    alter database archivelog;
    2.4 打开数据库
    alter database open;
    2.5 查询数据库是否已处于归档模式
    archive log list;
    数据库已由非归档模式更改为归档模式
    2.6 修改日志文件命名格式
    alter system set log_archive_max_processes = 5; 
    alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

      此处修改后如果重启,则重启后归档的日志文件格式会更改为  archive_%t_%s_%r.log 格式,否则仍是默认的格式。

    2.7 更改日志文件路径
    alter system set log_archive_dest_1='location=/data/archivelog/orcl'; 
      此时 Archive destination的值更改为 /data/archivelog/orcl
      该语句含义是确定归档日志的路径,实际上Oracle 10g以后可以生成多份一样的日志,保存多个位置,以防不测

      例如再添加一个日志位置可使用以下语句 
      SQL>alter system set log_archive_dest_2='location=/bak/orcl/archive_log';


    2.8 归档当前重做日志
    select name from v$archived_log;
    alter system archive log current;
      可以看出在归档当前重做日志后从v$archived_log中能查到当前被归档的重做日志,由于没有重启数据库,所以归档日志的文件格式仍然是默认的格式。
    注:
    <
        alter system switch logfile 是强制日志切换,不一定就归档当前的重做日志文件(若自动归档打开,就归档前的重做日志,若自动归档没有打开,就不归档当前重做日志。)
        alter system archive log current 是归档当前的重做日志文件,不管自动归档有没有打都归档。
        主要的区别在于:
        alter system switch logfile 对单实例数据库或RAC中的当前实例执行日志切换;
        alter system archive log current  会对数据库中的所有实例执行日志切换。

    >

    2.9 重启数据库
    shutdown immediate;
    startup
    2.10 查询归档信息
    archive log list;
     
        数据库由非归档模式更改为归档模式

    3、归档模式的数据库更改为非归档模式
        
       数据库从非归档模式更改为归档模式需要数据库处于mount状态下。
        以下操作适用于oracle10g以上版本,对于oracle8i和9i不适用。
    3.1  关闭数据库
      如果数据库处于打开状态则需要先关闭数据库,如果数据库处于关闭状态,则直接执行3.2步即可。
      关闭数据库之前归档当前重做日志
      alter system archive log current;
      shutdown immediate;

    3.2 启动数据库到mount状态
    startup mount;
    3.3 查看的数据库的归档信息
    archive log list;
    或者
    select name, log_mode from v$database;

    3.4 更改归档模式为非归档模式
    alter database noarchivelog;
    3.4 查看的数据库的归档信息
    archive log list;
    或者
    select name, log_mode from v$database;

    3.5 打开数据库
    alter database open;

        数据库由归档模式更改为非归档模式

    展开全文
  • 查看oracle数据库是否为归档模式:Sql代码1.select name,log_mode from v$database; NAME LOG_MODE ------------------ ------------------------ QUERY NOARCHIVELOG 2.使用ARCHIVE LOG LIST 命令...
  • 查看oracle数据库是否为归档模式: Sql代码 1.select name,log_mode from v$database;   NAME LOG_MODE   ------------------ ------------------------   QUERY NOARCHIVELOG   2.使用ARCHIVE
  • oracle归档模式和非归档模式的理解

    千次阅读 2018-07-15 17:47:16
      oracle运行的时候至少需要两组联机...那么归档模式和非归档模式。我们如何选择呢?归档模式的优点:1、可以进行完全、不完全恢复:对于数据库所作的全部改动 都记录在日志文件中,如果发生磁盘故障等导致数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,868
精华内容 33,947
关键字:

归档模式和非归档模式的区别