精华内容
下载资源
问答
  • 介绍如何为 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数据库是否为归档模式: 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数据库是否为归档模式: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 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;

    转载于:https://www.cnblogs.com/Wyuqing/p/7800855.html

    展开全文
  • 查看oracle数据库是否为归档模式:Sql代码1.select name,log_mode from v$database;NAME LOG_MODE------------------ ------------------------QUERY NOARCHIVELOG2.使用ARCHIVE LOG LIST 命令Database 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;

    展开全文
  • 查看oracle数据库是否为归档模式: Sql代码 1.select name,log_mode from v$database; NAME LOG_MODE ------------------ ------------------------  QUERY NOARCHIVELOG
  • 首先,归档模式和非归档模式下数据恢复是物理恢复。归档模式下试验流程:1. 创建一个表空间test1 使用test01.dbf;2. 给test01.dbf创建一个副本(备份);3. 做一些操作使test01.dbf文件中数据发生变化;4. 切换...
  • 查看oracle数据库是否为归档模式: Sql代码 1.select name,log_mode from v$database;   NAME LOG_MODE   ------------------ ------------------------   QUERY NOARCHIVELOG   2.使用ARCHIVE

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

归档和非归档的区别