Oracle归档重做日志文件

2024-04-15 13:48
文章标签 oracle 日志 归档 重做

本文主要是介绍Oracle归档重做日志文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

查看归档状态为非归档
sys@JSL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG

archive状态Disabled
sys@JSL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     2
Current log sequence           4

sys@JSL> select * from v$archive_processes;

   PROCESS STATUS     LOG_SEQUENCE STAT
---------- ---------- ------------ ----
         0 STOPPED               0 IDLE
         1 STOPPED               0 IDLE
         2 STOPPED               0 IDLE
         3 STOPPED               0 IDLE
    ...
    ...
        29 STOPPED               0 IDLE

修改为归档模式

首先要关闭数据库,启动到mount状态。
sys@JSL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@JSL> startup mount
ORACLE instance started.

Total System Global Area  184549376 bytes
Fixed Size                  1218412 bytes
Variable Size              62916756 bytes
Database Buffers          117440512 bytes
Redo Buffers                2973696 bytes
Database mounted.

修改为归档模式
sys@JSL> alter database archivelog;
Database altered.

oracle 9i还要设置log_archive_start 这是个静态参数
alter system set log_archive_start=true scope=spfile;
oracle 10g则不用设置了。

验证修改结果
sys@JSL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG

打开数据库
sys@JSL> alter database open;
Database altered.


设置归档格式
log_archive_format,是设置归档命名规则的静态参数,设置后重启数据库才生效。
对log_archive_dest和log_archive_dest_n指定的归档有效。

常用参数如下
%s log sequence number
%S log sequence number, zero filled
%t thread number
%T thread number, zero filled
%a activation ID
%d database ID
%r resetlogs ID
resetlogs,防止恢复的时候会报错,归档默认文件扩展名是dbf,习惯设置成arc
例如:<dbname>_%t_%s_%r.arc

sys@JSL> select name from v$database;
NAME
------------------------------
JSL
sys@JSL> alter system set log_archive_format='jsl_%t_%s_%r.arc' scope=spfile;
System altered.
重启数据库才生效。

sys@JSL> archive log list

Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     2
Next log sequence to archive   4
Current log sequence           4
sys@JSL> alter system switch logfile;
System altered.

archive变成Enabled,我们没有设置归档目的地,
默认USE_DB_RECOVERY_FILE_DEST使用DB_RECOVERY_FILE_DEST目录,也就是我们常说的闪回目录。
sys@JSL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     3
Next log sequence to archive   5
Current log sequence           5

查看当前日志组
sys@JSL> select * from v$log;

GROUP# THREAD# SEQUENCE#    BYTES  MEMBERS ARC STATUS    FIRST_CHANGE# FIRST_TIME
------ ------- --------- -------- -------- --- --------- ------------- -----------------
     1       1         5 52428800        1 NO  CURRENT         1565953 20101206 17:57:21
     2       1         4 52428800        1 YES ACTIVE          1559083 20101206 15:07:00
     3       1         3 52428800        1 YES INACTIVE        1534317 20101206 10:44:06

切换日志
alter system archive log current; --先归档再切换
alter system switch logfile; --先切换至于能不能归档再说

sys@JSL> alter system switch logfile;
System altered.

查看已经归档的信息
sys@JSL> select RECID,NAME,DEST_ID,SEQUENCE#,RESETLOGS_CHANGE#,ARCHIVED,STATUS ,BACKUP_COUNT from v$archived_log;
RECID NAME                              DEST_ID  SEQUENCE# RESETLOGS_CHANGE# ARC S BACKUP_COUNT
----- ------------------------------ ---------- ---------- ----------------- --- - ------------
    1 /u01/app/oracle/flash_recovery         10          1           1484108 YES A            0
      _area/HYJT/archivelog/2010_12_
      05/o1_mf_1_1_6hq6z3db_.arc
    2 /u01/app/oracle/flash_recovery         10          4           1484108 YES A            0
      _area/JSL/archivelog/2010_12_0
      6/o1_mf_1_4_6hsdw1mv_.arc
    3 /u01/app/oracle/flash_recovery         10          5           1484108 YES A            0
      _area/JSL/archivelog/2010_12_0
      6/o1_mf_1_5_6hsdx63y_.arc
查看归档进程,开启了三个归档进程
sys@JSL> select * from v$archive_processes;

   PROCESS STATUS     LOG_SEQUENCE STAT
---------- ---------- ------------ ----
         0 ACTIVE                0 IDLE
         1 ACTIVE                0 IDLE
         2 ACTIVE                0 IDLE
         3 STOPPED               0 IDLE    ...
         29 STOPPED               0 IDLE
10版本的archive log stop/start及alter system archive log stop/start命令已经不用了,只要在归档模式下就是自动归档模式
设置归档目录
    默认的归档目录(Archive destination)是: USE_DB_RECOVERY_FILE_DEST,
    如果取消DB_RECOVERY_FILE_DEST参数的设置,就会找standby_archive_dest参数,
    默认是'?/dbs/arch'但是没有真实目录存在,所以虽然能开启归档但是不能实现归档。
设置方式:
A: log_archive_dest_n (1-10) 这个参数与B是冲突的,可以设置本地和远程作为归档目标地址。
    下面有十个状态参数log_archive_dest_state_n (1-10)与之对应,enable才可用。
    例:  
    log_archive_dest_state_1=DEFER  
    log_archive_dest_state_2=ENABLE  
    此参数和log_archive_dest_n参数配对使用,缺省值为ENABLE,如果想停止使用一个归档目录,只需将其对应的log_archive_dest_state_n参数值设置为DEFER。
    log_archive_dest_n 其中n为1-5的整数,必需从低到高设置,下面举例说明:  
    log_archive_dest_1="LOCATION=/jia/arc MANDATORY REOPEN"  
    log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"
    log_archive_dest_3="LOCATION=/jia/arc2 OPTIONAL" 
    location指的是本地目录。
    service是tnsname里指定的名称,可以实现连接到远程。
    MANDATORY 关键字说明联机日志文件必须要成功归档以后才能被覆盖。
    OPTIONAL 缺省为可选(OPTIONAL),即使归档没有成功也可以覆盖。
    在设置时应该至少有一个本地(LOCATION)强制(MANDATORY)归档目录。
    REOPEN 关键字说明如果归档不成功时系统要重新尝试归档,缺省每300秒尝试一次直到成功。
        reopen可以通过=n来指定尝试的时间间隔,如 log_archive_dest_2中的时间间隔为600秒,
        而log_archive_dest_1中的时间间隔为300 秒。
    alter system set log_archive_dest_1='location=/xxx/xxx/x/ mandatory reopen=500'; 
    
B: log_archive_dest和log_archive_duplex_dest 这个参数与A是冲突的,只能设置本地目录,
    log_archive_dest可以单独存在,但是log_archive_duplex_dest必须依附于log_archive_dest
    log_archive_dest这是一个静态参数,设置的时候要带scope=spfile
    sys@JSL> alter system set log_archive_dest='';
    alter system set log_archive_dest=''
    *
    ERROR at line 1:
    ORA-02097: parameter cannot be modified because specified value is invalid
    ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST
    带上scope=spfile参数就不会有上面的报错信息了
    sys@JSL> alter system set log_archive_dest='/jia/arc' scope=spfile;        
    System altered.
    如果使用这种方式,则log_archive_dest是强制(MANDATORY)归档目录,而log_archive_duplex_dest为可选(OPTIONAL)目录。

C: db_recovery_file_dest 这个参数还有个辅助参数db_recovery_file_dest_size控制大小。

那么着三种方式是否可以同时设置,以及那个方式设置的生效呢?
我们用下图示加以说明:
A(n) B(y) C(y) -> oracle同时归档日志到log_archive_dest和db_recovery_file_dest指定的目录,C采用omf管理管理方式
A(n) B(y) C(n) -> 1份归档B
A(y) B(y) C(n) -> error A与B是冲突的
A(y) B(n) C(y) -> 1份归档A,如果设置了A,C就失效了。
在10g跟开归档跟flashback_on状态无关,但是反过来开数据库闪回功能必须先开归档。设置log_archive_dest以后重启数据库才生效。 
博客 http://stonejia.itpub.net
空间 http://space.itpub.net/24234775


1:首先查看是否是归档模式  运行  archive log list  命令(必须以sys身份运行) 运行结果如下;


2:通过上面的信息可以看出已经是归档模式了, 查看归档日志文件
存放在哪个位置 运行 show  parameter log_archive_dest 命令 运行结果如下;
SQL>  show  parameter log_archive_dest 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
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


3: 在上面的信息中可以看到,log_archive_dest 的路径为空,我们可以设置这个路径来存放归档日志文件,运行 alter  system set  log_archive_dest='d:/xxx/xxx'  scope=spfile;(xxx代表存放路径,最好指定 scope=spfile  否则的话重启db,则配置不会生效); 运行结果会出现在如下错误:

第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或 DB_RECOVERY_FILE_DEST 一起使用
出现错误的原因是db_recovery_file_dest的参数已经被设置了,去查询一下看看,果真如此。
4: 查看 db_recovery_file_dest 参数设置,运行 show parameter  db_recovery_file_dest  命令运行结果如下;
show parameter  db_recovery_file_dest 
NAME                                 TYPE        VALUE
----------------------------------- ----------- ------------------------------
db_recovery_file_dest                string      e:\oracle\product\10.2.0\db_1\flash_recovery_area 
db_recovery_file_dest_size           big integer 2G

可以看到已经默认设置了归档的路径。
5:db_recovery_file_dest是缺省的归档位置,下面把它设置为"空",然后设置log_archive_dest参数,指定另外一个非缺省的参数

重启db  如下图
   运行  shutdown immediate;

  运行  startup mount;

 运行 alter  database  open;

运行 show  parameter  db_recovery_file_dest  查看是否已经设置为空  运行结果如下图

可以看到已经设置为空  下面接着使用
alter  system  set  log_archive_dest='xxxxxx' scope = spfile  设置归档日志文件路径  运行结果如下图


运行 show  parameter  log_archive_dest 命令查看归档日志文件路径是否已经设置成功  运行结果如下图

可以看到已经设置成功
执行 alter  system  archive log  current  命令进行手动归档  运行结果如下

查看归档日志文件,看看是否已经进行归档 运行命令select  name,completion_time from v$archived_log; 结果如下

可以看到在些文件夹下面生成了归档日志文件。
http://wanpeng6015.blog.163.com/blog/static/135866277201242391841210/

改过归档,没有设置log_archive_dest后,可以alter  system  archive log  current后select  name,completion_time from v$archived_log;
确定这个日志在$ORACLE_HOME/dbs下,和initSID.ora在同目录

这篇关于Oracle归档重做日志文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/905989

相关文章

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的