溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle附加日志是怎樣的

發(fā)布時間:2021-11-12 14:51:54 來源:億速云 閱讀:1399 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)Oracle附加日志是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

Oracle附加日志

分類分為兩個等級:數(shù)據(jù)庫級表級

數(shù)據(jù)庫級附加日志

– 視圖v$database

? SUPPLEMENTAL_LOG_DATA_MIN: 最小附加日志,開關(guān)

    最小補(bǔ)充日志:是最基本的一種數(shù)據(jù)庫級補(bǔ)充日志,而 LogMiner 正是依賴最小補(bǔ)充日志工作服務(wù)的(即識別 行移動 行遷移)

啟用最小補(bǔ)充日志命令:

ALTER DATABASE ADD Supplemental LOG DATA;

關(guān)閉最小補(bǔ)充日志命令:

ALTER DATABASE DROP Supplemental Log Data;

? SUPPLEMENTAL_LOG_DATA_PK: 記錄所有變化記錄主鍵

在update 命令的重做記錄中添加被修改行的主鍵字段的舊值,無論是否被修改,都記錄。 如果表沒有主鍵,則由長度最小的唯一索引字段代替,若連唯一索引也沒有,則記錄該行所有字段。

alterdatabaseaddsupplemental log data (Primarykey) columns;

? SUPPLEMENTAL_LOG_DATA_UI: 記錄所有變化記錄唯一索引

唯一索引補(bǔ)充日志:唯一索引主要是為 復(fù)合索引(唯一)服務(wù)的。只有唯一索引的字段被 update 時,才會記錄該字段被修改前的值

alter database add supplemental log data (unique) columns;

? supplemental_log_data_fk:

外鍵補(bǔ)充日志:同唯一索引補(bǔ)充日志一樣,只有外鍵字段被 update 時,才會記錄被修改前的舊值,即也是為復(fù)合外鍵服務(wù)的。

alter database add supplemental  log data (foreign key ) columns;

? SUPPLEMENTAL_LOG_DATA_ALL: 記錄所有變化記錄全部列

    全體字段補(bǔ)充日志:顧名思義就所有字段的值不論是否被修改都記錄。會導(dǎo)致磁盤快速增長,LGWR進(jìn)程繁忙。不建議使用。

alter database add supplemental log data (all) columns;

-建議只打開最小附加日志, 并打開所需復(fù)制表的表級附加日志

? ALTER DATABASE add | drop SUPPLEMENTAL LOG DATA;

? 目的是產(chǎn)生最小日志增量,避免對生產(chǎn)主機(jī)產(chǎn)生較大影響

查詢當(dāng)前設(shè)置

SELECT supplemental_log_data_min min,

supplemental_log_data_pk pk,

supplemental_log_data_ui ui,

supplemental_log_data_fk fk,

supplemental_log_data_all allc

FROM v$database;

表級附加日志

– 通過OGG命令行中的add trandata schema.table 命令添加

– 如果有主鍵則只加入主鍵;無主鍵添加唯一索引;兩者皆無,則添加所有列

– 相當(dāng)于數(shù)據(jù)庫里面通過Alter tableadd supplemental log group

(column,..) always; (可查詢dba_log_group_columns)

實驗環(huán)境

1、源和目標(biāo)都創(chuàng)建表

源表:create table tb10(col1 int primary key, col2 int, col3 int);

目標(biāo):create table tb10(col1 int primary key, col2 int, col3 int);

2. 配置本地抽取進(jìn)程

GGSCI (pc6 as ogg@hyyk) 27> add extract test tranlog begin now

GGSCI (pc6 as ogg@hyyk) 36> add exttrail ./dirdat/oo,extract test

GGSCI (pc6 as ogg@hyyk) 33> edit params test

extract test

setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

setenv (ORACLE_SID="hyyk")

userid ogg,password oracle

gettruncates

exttrail ./dirdat/oo

table sender.tb10;

GGSCI (pc6 as ogg@hyyk) 49> add trandata sender.tb10

增加表級附加日志

3.配置投遞進(jìn)程

GGSCI (pc6 as ogg@hyyk) 39> add extract t_dump exttrailsource ./dirdat/oo

GGSCI (pc6 as ogg@hyyk) 41> add rmttrail /u01/app/oggd/dirdat/vv,extract t_dump

GGSCI (pc6 as ogg@hyyk) 42> edit params t_dump

extract t_dump

tranlogoptions excludeuser ogg

setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

setenv (ORACLE_SID="hyyk")

passthru

userid ogg,password oracle

rmthost 192.168.1.80,mgrport 7809

rmttrail /u01/app/oggd/dirdat/vv

table sender.tb10;

4.在目標(biāo)端配置復(fù)制進(jìn)程

GGSCI (ogg-80 as ogg@ogg) 3> add replicat rep_t,exttrail ./dirdat/vv,checkpointtable ogg.checkpoint

GGSCI (ogg-80 as ogg@ogg) 5> edit params rep_t

replicat rep_t

--handlecollisions

assumetargetdefs

setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

setenv (ORACLE_SID="ogg")

userid ogg,password oracle

map sender.tb10,target receiver.tb10;

實驗之前看一看在源表執(zhí)行 insert update delete

數(shù)據(jù)分析:Insert

Oracle附加日志是怎樣的

我們在源表插入數(shù)據(jù)

SENDER@hyyk> insert into tb10 values(1,2,3);

SENDER@hyyk> commit;

Oracle附加日志是怎樣的

在目標(biāo)端查詢

Oracle附加日志是怎樣的

我們在源端使用dumplog查看

Logdump 72 >open ./dirdat/ww000000000

Current LogTrail is /u01/app/oggs/dirdat/ww000000000

Logdump 73 >ghdr on

Logdump 74 >detail on

Logdump 75 >detail date

Oracle附加日志是怎樣的

這里就驗證了trail文件中只有后映像

數(shù)據(jù)分析:update

Oracle附加日志是怎樣的

我們在目標(biāo)端

SENDER@hyyk> update tb10 set col2=4 where col1=1;

SENDER@hyyk> commit;

Oracle附加日志是怎樣的

Oracle附加日志是怎樣的目標(biāo)段查詢

Oracle附加日志是怎樣的Oracle附加日志是怎樣的使用dumplog查看

這里執(zhí)行update tb10 set col2=4 where col1=1;

Logdump會有col1的記錄呢

這里就是要說明Oracle日志缺省只記錄變化的列和附加日志對應(yīng)列,附加日志對應(yīng)的就是主鍵的列,col1 就是逐漸列。

數(shù)據(jù)分析:delete

Oracle附加日志是怎樣的

在目標(biāo)執(zhí)行

SENDER@hyyk> delete tb10 where col1=1;

SENDER@hyyk> commit;

SENDER@hyyk> select * from tb10;

no rows selected

Oracle附加日志是怎樣的




在目標(biāo)段查詢使用dumplog查看

這里要說明delete操作只保留前映像的


Oracle附加日志是怎樣的












關(guān)于Oracle附加日志是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI