精华内容
下载资源
问答
  • 1.数据库在非归档模式下的备份  SQL> archive log list;  数据库日志模式 非存档模式  自动存档 禁用  存档终点 USE_DB_RECOVERY_FILE_DEST  早的联机日志序列 3244  当前日志序列 3246  RMAN> run ...
  • 介绍如何为 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归档模式和非归档模式的理解

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

     

     

    oracle运行的时候至少需要两组联机日志,每当一组日志写满后会发生日志切换,继续向下一组联机日志写入。
    如果是归档模式,则会触发ARCn进程,把切换后的重做日志文件复制到归档日志文件。
    如果是非归档模式,重做日志就会被覆盖。
    那么归档模式和非归档模式。我们如何选择呢?
    归档模式的优点: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归档模式及归档日志的操作

    千次阅读 2019-10-03 06:53:40
    1归档模式及归档日志基本概念: ...当ORACLE数据库运行在ARCHIVELOG(归档模式)模式时,所有的事务重做日志都将保存.这意味着对数据库进行的所有事务都留有一个备份,尽管重做日志以循环方式工作,但在...

    归档模式及归档日志基本概念:

    1.1 为什么要Oracle做归档操作

    Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。

    ORACLE数据库运行在ARCHIVELOG归档模式模式时,所有的事务重做日志都将保存.这意味着对数据库进行的所有事务都留有一个备份,尽管重做日志以循环方式工作,但在一个重做日志被覆盖前均将为其建立一个副本.在重做日志文件复制完成之前,ORACLE数据库将停止一切新的操作,在旧的事务记录完成之前ORACLE不对其进行覆盖.有了所有事务的副本,数据库就可以从所有类型的失败中恢复,包括用户错误或磁盘崩溃.这是一种最安全的数据库工作方式在实际开发中,归档模式是符合开发的,归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下数据库使用归档方式运行时才可以进行灾难性恢复。

    1.2 归档日志模式和非归档日志模式的区别:

    非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.

    归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.

    1.3 什么是归档日志

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

    Linux系统开启归档模式

    使用ssh登录到Linux系统:

    2.1 切换到oracle用户,然后使用sqlplus /nolog登录到oracle数据上:

    su -oracle

    sqlplus /nolog

     

     

    2.2 使用oracle系统管理员sysdba登录到数据库:

    conn /as sysdba

     

     

    2.3 查看当前oracle的模式:

    select log_mode from v$database;

    如果当前模式为NOARCHIVELOG,就说明没有开启归档模式

     

     

    2.4 关闭数据库,启动到mount状态:

    shutdown immediate;

    startup mount;

     

     

    2.5 修改数据库为归档模式

    alter database archivelog; (此处的分号不可以省略)

    (如果是归档模式改为非归档,则执行: alter database noarchivelog;)

     

     

    2.6 启动数据库:

    alter database open;

    2.7 再次验证:

    执行select log_mode from v$database;

    可查看到oracle已经修改为归档模式了

     

     

    Windows开启归档模式

    3.1 打开sqlplus工具:

    sqlplus工具路径:F:\Oracle\product\11.2.0\dbhome_1\BIN中的sqlplus.exe

    双击打开即可。(或者cmd到)

     

    3.2 登录到Oracle数据库:

    第一种方式:输入conn /as sysdba回车后提示需要输入口令,此时不必输入口令直接回车即可。

     

     

     

    第二种方式:输入/as sysdba即可

     

     

    3.3 查看当前oracle的模式:

    select log_mode from v$database;(此处的分号不可省略)

    如果当前模式为NOARCHIVELOG,就说明没有开启归档模式

     

     

    3.4 关闭数据库,启动到mount状态:

    shutdown immediate;

    startup mount;

     

     

    3.5 修改数据库为归档模式

    alter database archivelog;(此处的分号不可以省略,如果不加分号会提示“2”,并不会执行数据库修改)

    (如果是归档模式改为非归档,则执行: alter database noarchivelog;)

     

     

    3.6 启动数据库:

    alter database open;(此处的分号不可以省略,如果不加分号会提示“2”,并不会执行数据库修改)

     

     

    3.7 再次验证:

    执行select log_mode from v$database;

    可查看到oracle已经修改为归档模式了

     

     

     

    归档日志的查看及删除:

    4.1 归档日志的查询及日志空间增加:

    4.1.1 归档日志的查询

    SQLPlus执行conn /as sysdba去查看,也可以只直接在PLSQL中查询:

    执行:

    select * from v$flash_recovery_area_usage;

     

    ARCHIVED LOG行的percent_space_used 表示归档日志占用空间的百分比:

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

     

    4.1.2  增大归档日志空间

    该操作需要在SQLPlus中进行:

    alter system set db_recovery_file_dest_size=20G;

     

    4.2 删除归档日志释放磁盘空间

    删除归档日志需要进入RMAN工具才可操作,RMAN 是Oracle数据库软件自带的备份恢复工具,一种是类似于DOS,通过键盘操作的 命令行方式。

    4.2.1 .进入RMAN工具

    1. CMD输入RMAN,如果进不去,提示不是内部或外部命令,则进入数据库bin目录再执行RMAN,如下图

       2.进入RMAN连接数据的两种方法:

    (1)可以按照第一点CMD进去先启动RMAN,然后再通过CONNECT命令来连接目标数据库

     

    (2)指定要连接的目标数据库的实例名“SET ORACLE_ID=实例名”。如果本地库只有一个实例并已经设置了ORACLE_SID环境变量,则不需要再指定ORACLE_SID。RMAN会自动连接到默认实例。如图,再执行RMAN TARGET/

     

     

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

     

     

     

    4.2.2 删除归档日志

    1. 查看归档日志状态:

    RMAN>list archivelog all;

      2.手工删除归档日志文件删除7天前的所有归档日志

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

    说明:
     SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。 
    同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库

      3.退出rman

    RMAN> exit

     

    4.3 Windows定时删除归档日志

    4.3.1 创建一个删除归档日志的脚本(delete_arch.txt):

    connect target  /

    run{

        crosscheck archivelog all;

        DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

        delete expired archivelog all;

    }

    注:如果数据库为单实例数据库直接用“connect target /”连接数据库,如果数据为多实例数据库,需指定特定实例及用户:connect target sys/oracle@hrst即脚本格式为:

    connect target  sys/oracle@hrst

    run{

        crosscheck archivelog all;

        DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

        delete expired archivelog all;

    }

    其中DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; //删除七天前的归档日志

    4.3.2 创建批处理任务(delete_archive.bat)

    rman cmdfile=C:\Users\Tanr\Desktop\定期删除归档日志\delete_arch.txt

    当由于电脑系统问题,必须要在Oracle的bin目录才能执行RMAN时,可以这种写法:

    F:

    cd ..\

    cd F:\Oracle\product\11.2.0\dbhome_1\BIN

    rman cmdfile=C:\Users\Tanr\Desktop\定期删除归档日志\delete_arch.txt

    4.3.3 创建一个windows任务定时调用批处理任务(delete_archive.bat)

    开始 => 所有程序 => 附件 => 系统工具 => 任务计划

    新建个任务计划了,然后根据要求配置下即可。

    一般情况计划任务可设置一周执行一次,没有必要设置每天都执行。

     

    批处理文件及原文档地址:

    链接:https://pan.baidu.com/s/1Zn7uxu-FdqcNFll4fOST_A
    提取码:b6bx

    转载于:https://www.cnblogs.com/tan80000/p/11165228.html

    展开全文
  • 一:重做日志文件 oracle的重做日志文件,会记录数据库的任何操作,包括DML和DDL语句,数据结构的更改等. ...非归档模式只能做冷备份,归档模式可以做热备份并且可以做增量备份和部分恢复. 冷备份要关闭数据库。
  • Oracle数据库中,主要有两种 日志操作模式,分别为...Oacle归档模式ORACLE备份的必要条件,特别是7X24生产数据库,必须要工作在归档模式。 归档日志文件中保留了数据库的改动信息。该模式下可实现: 1、可以进..
  • 在RAC环境下开启归档模式,为备份系统使用的准备工作。
  • oracle归档模式查看和开启

    千次阅读 2019-07-24 12:57:02
    1.查看oracle归档模式是否开启,Archive destination USE_DB_RECOVERY_FILE_DEST---归档日志默认使用闪回区域 命令一: archive log list 命令二: select name,log_mode from v$database; 2.查询归档文件路径和...
  • oracle日志操作模式(归档模式和非归档模式的利与弊) 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-12 我要评论 在Oracle数据库中,主要有两种日志操作模式,分别为非归档模式归档模式。默认情况下,...
  • Linux系统是在企业中广泛使用的操作系统,企业亦多基于该操作系统安装数据库。...针对Oracle数据库重做日志文件丢失问题,提出一种非归档模式下的重做日志恢复方法。实验证明,该方法能有效实现重做日志的无备份恢复。
  • title: Oracle开启归档模式并设置RMAN自动备份策略 categories: 数据库 tags: - Oracle - RMAN timezone: Asia/Shanghai date: 2019-01-06 软件版本 Oracle 11g 11.2.0.4 1.开启和关闭归档模式 1.管理员登录 ...
  • ORACLE数据库归档模式备份恢复的关系.pdf
  • Oracle 10g归档模式备份.pdf
  • Oracle归档模式备份,丢失数据文件的恢复,及查询表空间及其关联的数据文件
  • 1.先查看数据库确认为非归档模式 archive log list; 2.使用rman进行全量备份 因为是非归档模式,所以需要将数据库修改为mount模式(shutdown immediate;关闭数据库然后startup mount;) 然后使用rman进行备份 ...
  • 最保险的的方式是物理冷备份,不要轻易试水!...改变非归档模式归档模式:1)SQL>conn / as sysdba (以DBA身份连接数据库)2)SQL>shutdown immediate; (立即关闭数据库)3)SQL>startup mount (...
  • HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDb11g_home1NLS_LANG 改为一致非归档模式的最佳办法。首先要把数据库 shutdown immediate;(非常重要) 查看要备份的文件的位置如下 select * from V$controlfi
  • oracle 数据库归档模式的打开与关闭

    万次阅读 2018-06-08 16:58:56
    备份也称为联机备份,在数据库的存档模式下进行备份。oracel数据库默认存档模式为关闭状态,要实现数据的热备份,需要改变数据库的存档模式,将其打开。并且需要注意的是数据库的存档模式的操作需要在MOUNT实例中...
  • 还原也只能还原到备份那一时刻的数据,通常也仅在开发时使用(据说在数据仓库中也使用),Oracle安装默认是非归档模式。在生产环境中我们应该使用归档模式,它会产生归档日志,可以使用多种备份和还原方案,对与...
  • Oracle数据库开启归档模式

    千次阅读 2019-06-17 21:01:10
    如果想以rman方式备份数据库,则数据库归档模式必须打开。 步骤一:首先用sys登录数据库,查看oracle是否开启归档模式(su - oracle切换用户,然后sysdba / as sysdba进入sql模式) 输入archi...
  • inux下oracle11g 数据库冷备份异机还原,适用于可以停机备份的数据库,方便数据库文件过大还原,本人测试的数据库文件有一百多G
  • 5、使用recover命令将所有提交的数据从归档日志和重做日志重新写入已经修复的数据 文件。在这里既可以使用recover tablespace“表空间名”也可以使用 recover datafile “数据文件名” 命令。 6、当恢复完成后...
  • ORACLE 数据库的开发环境和测试环境中,数据库的日志模式和自动归档模式一般都是不设置的,这样有利于系统应用的调整,也免的生成大量的归档日志文件将磁盘空间大量的消耗。但在系统上线,成为生产环境时,将其...
  • Oracle归档模式备份,丢失数据文件(不是所有)的恢复
  • Oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式 (noarchivelog)。归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下...本文将为大家介绍Oracle归档模式的命令及参数说明。
  • 归档模式下的冷备份和恢复
  • Oracle归档模式-设置及归档日志设置

    千次阅读 2017-09-26 15:16:21
    一、归档模式开启 将数据库设置为归档模式: 1、以sysdba身份登录oracle数据库。 2、使用archive log list 命令查看数据库与归档相关的信息。 3、正常关闭数据库,如使用 shutdown immediate 命令。 4、以加载...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,545
精华内容 8,218
关键字:

oracle归档模式备份