数据库force logging的作用与实现方法 (数据库force logging)

数据库Force Logging的作用与实现方法

随着互联网和大数据时代的到来,数据管理变得越来越重要。在企业和组织中,数据库是存储数据的重要设施。为了保护数据的完整性和可靠性,数据库需要进行日志记录。日志记录是指将所有的数据库操作记录下来,以便恢复在发生故障时丢失的数据。在日志记录过程中,数据库的Force Logging功能是一项重要的功能。

Force Logging是oracle数据库中用于强制所有的操作都写入归档日志文件的功能。Force Logging可以强制保证每个事务操作都写入数据库日志,以便在系统崩溃或者修复数据时,可以使用归档日志进行数据恢复等操作。以下是具体的作用和实现方法。

1.作用

1.1保证数据恢复的可靠性

在数据库中,重要的数据修改如增加、删除和更新操作都是在事务的基础上进行。这些事务操作需要写入归档日志文件。在数据库崩溃或者人为误操作时,可以使用归档日志进行数据恢复。如果不启用Force Logging,则会出现部分事务操作没有写入归档日志的情况,这将会导致数据库恢复失败。

1.2保证日志数据完整

在数据操作过程中,由于各种原因,比如系统故障或存储设备故障,一些日志数据可能会丢失或损坏。日志数据的不完整性会导致数据库恢复失败,而Force Logging可以保证日志数据的完整性,从而避免数据恢复失败的情况。

1.3提高数据库的性能

由于Force Logging功能可以一次性写入所有事务日志,提高了读写效率。而不启用Force Logging,则需要在每次提交事务时写入日志文件,这对于数据库的执行效率将会有很大的影响,尤其是在高并发状态下,效率下降更为明显。

2.实现方法

2.1启用Force Logging

在Oracle中,可以通过如下命令启用Force Logging:

Alter Database Force Logging;

当启用了Force Logging后所有的事务都会写入归档日志文件。这样会带来一些开销,但可以保证数据的完整性。需要注意的是,在启用Force Logging之前,必须先对数据库进行备份,这样可以对数据做好保护措施,避免在数据库恢复过程中的数据丢失。

2.2归档日志文件的管理

在启用Force Logging之后,所有的事务操作都会写入归档日志文件,这将会对系统的存储和管理带来一定的压力。需要进行归档日志文件的管理,避免文件过多或文件过大,导致存储空间的占用过大。

为了避免这种情况发生,可以在归档日志文件的每个周期结束后,将过期的归档日志文件删除或者备份到存储设备中。这样可以释放存储空间,同时还可以保留历史归档日志文件,避免在数据恢复时数据损失。

在数据库操作中,Force Logging功能是非常重要的。它可以避免数据库在崩溃或者人为误操作时发生数据丢失或损坏的情况。虽然启用Force Logging功能会增加系统开销,但它可以保证数据的完整性和系统的稳定性。因此,对于重要的系统,建议启用该功能并对归档日志文件进行有效的管理。

相关问题拓展阅读:

有没有朋友做过oracle主从配置,更好有详细文档

1、oracle双机热备叫做DataGuard简称DG,简单来说就一些步骤,每个步骤都有些概念需要了解。

2、晌铅10g和11g稍微有点区别,大谨历10g备库在热备状态不能open查询,11g支持ActiveDataguard备库可以在热备状态open并select数据:alter database open read only;。

3、DG多配置几次就会轻车熟路。

4、首先数据库必须开启归档模式,然后复制一份主库到备库,这个步骤11g也有更先进的命令,11g支持-Active database duplicate。

备份主库过程可以熟悉一下rman这个工具。

5、DG配置监听listener.ora和initSID.ora

在使用DATA GUARD 时,要求使用强制记录日志模式。日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING)

ALTER DATABASE FORCE LOGGING;

6、启动备库

物理standby极少情况下可以以read-write模式打开,某些情况下可以以read-only模式滚搜打开,所以默认情况下,加载到mount状态即可。

SQL> STARTUP MOUNT;

启动redo应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

启动实时应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

7、DG主库和备库之间角色切换

DATAGUARD包含三个服务(日志传输、日志应用、角色转换)

8、DATAGUARD的几种保护模式:更大保护maximum protection,更大可用maximum availability,更大性能maximum performance

例如在主库修改保护模式为maximize availability,并打开数据库

ALTER DATABASE SET STANDBY DATABASE TO maximize availability;

oracle中的 v$database是什么意思啊?

desc v$database

名称 是否为空? 类型

—–

DBID NUMBER

NAME VARCHAR2(9)

CREATEDDATE

RESETLOGS_CHANGE# NUMBER

RESETLOGS_TIME DATE

PRIOR_RESETLOGS_CHANGE#NUMBER

PRIOR_RESETLOGS_TIMEDATE

LOG_MODEVARCHAR2(12)

CHECKPOINT_CHANGE# NUMBER

ARCHIVE_CHANGE# NUMBER

CONTROLFILE_TYPE VARCHAR2(7)

CONTROLFILE_CREATEDDATE

CONTROLFILE_SEQUENCE#NUMBER

CONTROLFILE_CHANGE#NUMBER

CONTROLFILE_TIME DATE

OPEN_RESETLOGS VARCHAR2(11)

VERSION_TIMEDATE

OPEN_MODEVARCHAR2(10)

PROTECTION_MODE VARCHAR2(20)

PROTECTION_LEVEL VARCHAR2(20)

REMOTE_ARCHIVE VARCHAR2(8)

ACTIVATION#NUMBER

SWITCHOVER#NUMBER

DATABASE_ROLE VARCHAR2(16)

ARCHIVELOG_CHANGE# NUMBER

ARCHIVELOG_COMPRESSIONVARCHAR2(8)

SWITCHOVER_STATUS VARCHAR2(20)

DATAGUARD_BROKER VARCHAR2(8)

GUARD_STATUSVARCHAR2(7)

SUPPLEMENTAL_LOG_DATA_MINVARCHAR2(8)

SUPPLEMENTAL_LOG_DATA_PKVARCHAR2(3)

SUPPLEMENTAL_LOG_DATA_UIVARCHAR2(3)

FORCE_LOGGING VARCHAR2(3)

PLATFORM_IDNUMBER

PLATFORM_NAME VARCHAR2(101)

RECOVERY_TARGET_INCARNATION# NUMBER

LAST_OPEN_INCARNATION#NUMBER

CURRENT_SCNNUMBER

FLASHBACK_ONVARCHAR2(18)

SUPPLEMENTAL_LOG_DATA_FKVARCHAR2(3)

SUPPLEMENTAL_LOG_DATA_ALLVARCHAR2(3)

DB_UNIQUE_NAME VARCHAR2(30)

STANDBY_BECAME_PRIMARY_SCNNUMBER

FS_FAILOVER_STATUS VARCHAR2(21)

FS_FAILOVER_CURRENT_TARGETVARCHAR2(30)

FS_FAILOVER_THRESHOLDNUMBER

FS_FAILOVER_OBSERVER_PRESENT VARCHAR2(7)

FS_FAILOVER_OBSERVER_HOSTVARCHAR2(512)

2、字段说明

DBID:数字形式的DB标识,会记录在每个数据文件头,可以根据这个来确定数据文件是属于哪一个数据库的

NAME:数据库名称(就是通俗的数据库名)

DB_UNIQUE_NAME:?

RESETLOGS_CHNAGE#:上一次resetlogs时的scn

RESETLOGS_TIME:上一次resetlogs的时间

PRIOR_RESETLOGS_CHANGE#:更早的(最早的?)restlogs时的scn

PRIOR_RESETLOGS_TIME:更早的(最早的?)restlogs时的scn

LOG_MODE:是否是归档模式,有三种可能(noarhivelog|archivelog|manual)

CHECKPOINT_CHANGE#:上一次checkpoint的scn,这个值是从控制文件中来的。

ARCHIVE_CHANGE#:表示在这个scn之前的(比这个scn小)redolog都将会自动强制归档。

CONTROLFILE_TYPE:standby表示这个数据库在standby模式;clone表示这个数据库是个clone的数据库;backup|created表示这个数据库正在从使用备份的控制文件恢复中;current表示数据库是正常模式

CONTROLFILE_CREATED:控制文件创建的时间

CONTROLFILE_SEQUENCE#:控制文件的一个递增的序列号,用途不明

CONTROLFILE_CHANGE#:控制文件中记录的scn

CONTROLFILE_TIME:上一次控制文件更新的时间

OPEN_RESETLOGS:指示下一次打开数据库是是否需要使用resetlogs来打开,可能为(not allowed|allowed|required)

VERSION_TIME:版本时间(意义不明,用途不明)

OPEN_MODE:指示数据库以什么方式打开(read only|read write|mount)

PROTECTION_MODE:数据库的保护模式(似乎在dataguard的情况下有用)

PROTECTION_LEVEL:保护等级

REMOTE_ARCHIVE:是否允许远程归档,就是remote_archive_enable初始化参数的值

ACTIVATION#:?

SWTICHOVER#:?

DATABASE_ROLE:指示数据库是logical standby|physical standby|primary

ARCHIVELOG_CHNAGE#:上一次归档动作结束时的scn,也就是最新的归档日志的所记录的最后一个SCN(根据文档也就是v$archived_log里更大的next_change#),要注意于archive_change#的区别

ARCHIVELOG_COMPRESSION:归档的压缩状况

SWITCHOVER_STATUS:switch over 的状态

DATAGUARD_BROKER:Indicates whether the Data Guard configuration is being managed by the broker (ENABLED) or not (DISABLED)

GUARD_STATUS:防止数据库修改的状态(可能为all或者none或者standby)

SUPPLEMENTAL_LOG_DATA_MIN:

SUPPLEMENTAL_LOG_DATA_PK:如果为YES则表示当有主键的表更新行时,会将组成主键的所有列也记入redo log

SUPPLEMENTAL_LOG_DATA_UI:如果为YES则表示当有unqiue键的表更新行时,会将组成unique键的所有列也记入redo log

SUPPLEMENTAL_LOG_DATA_FK:同上(记录foreign key)

SUPPLEMENTAL_LOG_DATA_ALL:同上(记录所有fix_width maximun size column)

FORCE_LOGGING:指示数据库是否在force logging模式

PLATFORM_ID:操作系统平台ID

PLATFORM_NAME:操作系统平台名称

RECOVERY_TARGET_INCARNATION#:恢复时从哪一个场景号进行恢复(每次使用resetlogs打开数据库会创建一个新的场景号)

LAST_OPEN_INCARNATION:最后一次打开的场景号

CURRENT_SCN:数据库当前的SCN

STANDBY_BECAME_PRIMARY_SCN:SCN at which a physical standby database became a primary database.

FLASHBACK_ON:是否打开了flashback 功能

FS_FAILOVER_STATUS:

FS_FAILOVER_CURRENT_TARGET:

FS_FAILOVER_THRESHOLD:

FS_FAILOVER_OBSERVER_PRESENT:

FS_FAILOVER_OBSERVER_HOST:

3、可以查询的东西

a、是否是归档模式

b、flashback功能是否打开

c、当前系统的scn

d、当前数据库的DBID、NAME、Unique Name

e、checkpoint的相关信息

f、归档日志的相关信息

g、controlfile的相关信息:创建日期、controlfile里记录的scn,

h、数据库是什么时候创建的

i、数据库所在操作系统平台信息

4、易混淆的列

name和db_unique_name

archive_change#和archivelog_change#

是一个动码粗态性能视图,主要用来查看数据库当迟派镇前的一些信息,具体可以看Oracle Document Library 的Oracle Database Reference 10g Release 2 (10.2)书的672页羡段

关于数据库force logging的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 数据库force logging的作用与实现方法 (数据库force logging)