Oracle 联机日志文件及归档文件
迪丽瓦拉
2024-02-06 05:12:03
0

管理联机日志文件:

联机日志文件以组为单位工作

数据库正常工作至少需要2组日志

联机日志记录所有数据块的变化,用来做实例recover

同一组下的成员之间是镜像关系

more情况日志成员写满redo时发生切换

日志切换时优先覆盖sequence#最小的组

成员的位置和数量,由控制文件中的指针决定

查看日志组的工作状态:

select * from v$log;

 

SQL> set pagesize 200
SQL> set linesize 200
SQL> 
SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------- ----------1          1         49   52428800        512          1 NO  INACTIVE              17377140 20-NOV-22     17377187 20-NOV-22          02          1         50   52428800        512          1 NO  INACTIVE              17377187 20-NOV-22     17401476 20-NOV-22          03          1         51   52428800        512          1 NO  CURRENT               17401476 20-NOV-22   1.8447E+19                    0SQL> col NEXT_CHANGE# for 999999999999999999999999999999999
SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM                       NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ---------------------------------- --------- ----------1          1         49   52428800        512          1 NO  INACTIVE              17377140 20-NOV-22                           17377187 20-NOV-22          02          1         50   52428800        512          1 NO  INACTIVE              17377187 20-NOV-22                           17401476 20-NOV-22          03          1         51   52428800        512          1 NO  CURRENT               17401476 20-NOV-22               18446744073709551615                    0SQL> 

查看日志的物理信息:

select * from v$logfile;

SQL> 
SQL> select * from v$logfile;GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IS_     CON_ID
--- ----------3         ONLINE
/u02/oradata/CDB1/redo03.log
NO           02         ONLINE
/u02/oradata/CDB1/redo02.log
NO           01         ONLINE
/u02/oradata/CDB1/redo01.log
NO           0SQL> 

手工切换日志:

alter system switch logfile;

手工产生检查点:

alter system checkpoint;

Scott/tiger 脚本在系统:

[oracle@oracle-db-19c admin]$ pwd
/u01/app/oracle/product/19.3.0/dbhome_1/rdbms/admin
[oracle@oracle-db-19c admin]$ ls -ltr utlsampl.sql
-rw-r--r--. 1 oracle oinstall 3978 May 29  2017 utlsampl.sql
[oracle@oracle-db-19c admin]$

日志切换的历史:

SQL> 
SQL> select * from v$log_history;RECID      STAMP    THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# RESETLOGS_CHANGE# RESETLOGS     CON_ID
---------- ---------- ---------- ---------- ------------- --------- ------------ ----------------- --------- ----------1 1119712290          1          1       1920977 02-NOV-22      1944454           1920977 02-NOV-22          02 1119712328          1          2       1944454 02-NOV-22      1955924           1920977 02-NOV-22          03 1119712336          1          3       1955924 02-NOV-22      1957140           1920977 02-NOV-22          04 1119712346          1          4       1957140 02-NOV-22      1958419           1920977 02-NOV-22          05 1119712357          1          5       1958419 02-NOV-22      1959722           1920977 02-NOV-22          06 1119712367          1          6       1959722 02-NOV-22      1961083           1920977 02-NOV-22          07 1119712377          1          7       1961083 02-NOV-22      1962537           1920977 02-NOV-22          08 1119712388          1          8       1962537 02-NOV-22      1964005           1920977 02-NOV-22          09 1119712397          1          9       1964005 02-NOV-22      1965452           1920977 02-NOV-22          010 1119712406          1         10       1965452 02-NOV-22      1966859           1920977 02-NOV-22          011 1119712428          1         11       1966859 02-NOV-22      1970703           1920977 02-NOV-22          012 1119712448          1         12       1970703 02-NOV-22      1974659           1920977 02-NOV-22          013 1119712501          1         13       1974659 02-NOV-22      2003600           1920977 02-NOV-22          014 1119712743          1         14       2003600 02-NOV-22      2017766           1920977 02-NOV-22          015 1119712747          1         15       2017766 02-NOV-22      2017835           1920977 02-NOV-22          016 1119712771          1         16       2017835 02-NOV-22      2026749           1920977 02-NOV-22          017 1119712794          1         17       2026749 02-NOV-22      2030586           1920977 02-NOV-22          018 1119712849          1         18       2030586 02-NOV-22      2049115           1920977 02-NOV-22          019 1119713144          1         19       2049115 02-NOV-22      2088868           1920977 02-NOV-22          020 1119713229          1         20       2088868 02-NOV-22      2100727           1920977 02-NOV-22          021 1119713288          1         21       2100727 02-NOV-22      2139342           1920977 02-NOV-22          022 1119713358          1         22       2139342 02-NOV-22      2146949           1920977 02-NOV-22          023 1119713375          1         23       2146949 02-NOV-22      2150697           1920977 02-NOV-22          024 1119713427          1         24       2150697 02-NOV-22      2153047           1920977 02-NOV-22          025 1119713571          1         25       2153047 02-NOV-22      2163312           1920977 02-NOV-22          026 1119713996          1         26       2163312 02-NOV-22      2264654           1920977 02-NOV-22          027 1120428105          1         27       2264654 02-NOV-22      2282920           1920977 02-NOV-22          028 1120428219          1         28       2282920 10-NOV-22      2300480           1920977 02-NOV-22          029 1120428255          1         29       2300480 10-NOV-22      2318708           1920977 02-NOV-22          030 1120831239          1         30       2318708 10-NOV-22      2347108           1920977 02-NOV-22          031 1120831269          1         31       2347108 15-NOV-22      2366475           1920977 02-NOV-22          032 1120850877          1         32       2366475 15-NOV-22      2397054           1920977 02-NOV-22          033 1120917613          1         33       2397054 15-NOV-22      2425816           1920977 02-NOV-22          034 1120938664          1         34       2425816 16-NOV-22      2465509           1920977 02-NOV-22          035 1120980380          1         35       2465509 16-NOV-22      2575796           1920977 02-NOV-22          036 1121000407          1         36       2575796 17-NOV-22      2601035           1920977 02-NOV-22          037 1121014857          1         37       2601035 17-NOV-22      2629640           1920977 02-NOV-22          038 1121086814          1         38       2629640 17-NOV-22      2668852           1920977 02-NOV-22          039 1121089000          1         39       2668852 18-NOV-22      2771290           1920977 02-NOV-22          040 1121102371          1         40       2771290 18-NOV-22     17019560           1920977 02-NOV-22          041 1121161284          1         41      17019560 18-NOV-22     17140444           1920977 02-NOV-22          042 1121161517          1         42      17140444 19-NOV-22     17156193           1920977 02-NOV-22          043 1121164942          1         43      17156193 19-NOV-22     17277271           1920977 02-NOV-22          044 1121180422          1         44      17277271 19-NOV-22     17311973           1920977 02-NOV-22          045 1121249328          1         45      17311973 19-NOV-22     17337542           1920977 02-NOV-22          046 1121250083          1         46      17337542 20-NOV-22     17351079           1920977 02-NOV-22          047 1121263201          1         47      17351079 20-NOV-22     17377098           1920977 02-NOV-22          048 1121263201          1         48      17377098 20-NOV-22     17377140           1920977 02-NOV-22          049 1121263203          1         49      17377140 20-NOV-22     17377187           1920977 02-NOV-22          050 1121281218          1         50      17377187 20-NOV-22     17401476           1920977 02-NOV-22          051 1121349638          1         51      17401476 20-NOV-22     17441850           1920977 02-NOV-22          051 rows selected.SQL>

监控日志切换频率:

select to_char(FIRST_TIME,'yyyymmddhh24') FIRST_TIME,count(*) from v$log_history group by to_char(FIRST_TIME,'yyyymmddhh24') order by 1;

放大logfile成员的尺寸:

alter database add logfile '/u02/oradata/CDB1/redo04.log' size 100M;
alter database add logfile '/u02/oradata/CDB1/redo05.log' size 100M;
[oracle@oracle-db-19c admin]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 21 14:35:04 2022
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0SQL> set pagesize 200
SQL> set linesize 200
SQL> 
SQL> column STATUS for a15
SQL> column TYPE for a15
SQL> column MEMBER for a30
SQL>  select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------3                 ONLINE          /u02/oradata/CDB1/redo03.log   NO           02                 ONLINE          /u02/oradata/CDB1/redo02.log   NO           01                 ONLINE          /u02/oradata/CDB1/redo01.log   NO           0SQL> alter database add logfile '/u02/oradata/CDB1/redo04.log' size 100m;Database altered.SQL> alter database add logfile '/u02/oradata/CDB1/redo05.log' size 100m;Database altered.SQL>  select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------3                 ONLINE          /u02/oradata/CDB1/redo03.log   NO           02                 ONLINE          /u02/oradata/CDB1/redo02.log   NO           01                 ONLINE          /u02/oradata/CDB1/redo01.log   NO           04                 ONLINE          /u02/oradata/CDB1/redo04.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05.log   NO           0SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------1          1         52   52428800        512          1 NO  CURRENT              17441850 21-NOV-22   1.8447E+19                    02          1         50   52428800        512          1 NO  INACTIVE             17377187 20-NOV-22     17401476 20-NOV-22          03          1         51   52428800        512          1 NO  INACTIVE             17401476 20-NOV-22     17441850 21-NOV-22          04          1          0  104857600        512          1 YES UNUSED                      0                      0                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> alter system switch logfile;System altered.SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------1          1         52   52428800        512          1 NO  ACTIVE               17441850 21-NOV-22     17444860 21-NOV-22          02          1         50   52428800        512          1 NO  INACTIVE             17377187 20-NOV-22     17401476 20-NOV-22          03          1         51   52428800        512          1 NO  INACTIVE             17401476 20-NOV-22     17441850 21-NOV-22          04          1         53  104857600        512          1 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> alter system checkpoint;System altered.SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------1          1         52   52428800        512          1 NO  INACTIVE             17441850 21-NOV-22     17444860 21-NOV-22          02          1         50   52428800        512          1 NO  INACTIVE             17377187 20-NOV-22     17401476 20-NOV-22          03          1         51   52428800        512          1 NO  INACTIVE             17401476 20-NOV-22     17441850 21-NOV-22          04          1         53  104857600        512          1 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> alter database drop logfile group 1;Database altered.SQL> alter database drop logfile group 2;Database altered.SQL> alter database drop logfile group 3;Database altered.SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------4          1         53  104857600        512          1 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> show con_name;CON_NAME
------------------------------
CDB$ROOT
SQL> 

删除无用组:

alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

移动日志文件

1.数据库要mount

shutdown immediate
startup mount

2.目标文件要存在

mv /u02/oradata/CDB1/redo04.log /home/oracle/redo04.log

3.修改控制文件中的指针

alter database rename file '/u02/oradata/CDB1/redo04.log' to '/home/oracle/redo04.log';

4.打开数据库

alter database open;

日志文件的多路复用:在同一组下使用多个成员,每组当中只由一个成员可用,数据库就可以正常工作。
 

alter database add logfile member '/u02/oradata/CDB1/redo04a.log' to group 4;
alter database add logfile member '/u02/oradata/CDB1/redo05a.log' to group 5;

SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------4          1         53  104857600        512          1 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------4                 ONLINE          /u02/oradata/CDB1/redo04.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05.log   NO           0SQL> alter database add logfile '/u02/oradata/CDB1/redo06.log' size 100m;Database altered.SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------1          1          0  104857600        512          1 YES UNUSED                      0                      0                    04          1         53  104857600        512          1 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------1                 ONLINE          /u02/oradata/CDB1/redo06.log   NO           04                 ONLINE          /u02/oradata/CDB1/redo04.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05.log   NO           0SQL> SQL> alter database add logfile member '/u02/oradata/CDB1/redo01.log' to group 1;Database altered.SQL> select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------1                 ONLINE          /u02/oradata/CDB1/redo06.log   NO           01 INVALID         ONLINE          /u02/oradata/CDB1/redo01.log   NO           04                 ONLINE          /u02/oradata/CDB1/redo04.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05.log   NO           0SQL> SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------1          1          0  104857600        512          2 YES UNUSED                      0                      0                    04          1         53  104857600        512          1 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          1 YES UNUSED                      0                      0                    0SQL> alter database add logfile member '/u02/oradata/CDB1/redo04b.log' to group 4,'/u02/oradata/CDB1/redo05b.log' to group 5;Database altered.SQL> select * from v$log;GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME     CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- --------------- ------------- --------- ------------ --------- ----------1          1          0  104857600        512          2 YES UNUSED                      0                      0                    04          1         53  104857600        512          2 NO  CURRENT              17444860 21-NOV-22   1.8447E+19                    05          1          0  104857600        512          2 YES UNUSED                      0                      0                    0SQL> select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------1                 ONLINE          /u02/oradata/CDB1/redo06.log   NO           01 INVALID         ONLINE          /u02/oradata/CDB1/redo01.log   NO           04 INVALID         ONLINE          /u02/oradata/CDB1/redo04b.log  NO           04                 ONLINE          /u02/oradata/CDB1/redo04.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05.log   NO           05 INVALID         ONLINE          /u02/oradata/CDB1/redo05b.log  NO           06 rows selected.SQL> alter system switch logfile;System altered.SQL> /System altered.SQL> /System altered.SQL> select * from v$logfile;GROUP# STATUS          TYPE            MEMBER                         IS_     CON_ID
---------- --------------- --------------- ------------------------------ --- ----------1                 ONLINE          /u02/oradata/CDB1/redo06.log   NO           01                 ONLINE          /u02/oradata/CDB1/redo01.log   NO           04                 ONLINE          /u02/oradata/CDB1/redo04b.log  NO           04                 ONLINE          /u02/oradata/CDB1/redo04.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05.log   NO           05                 ONLINE          /u02/oradata/CDB1/redo05b.log  NO           06 rows selected.SQL> 

数据库的归档模式:

查看数据库归档是否

archive log list
select log_mode from v$database;

打开归档:

shutdown immediate
startup mount
--v$archived_log
--v$archive_dest

相关内容