承上 DBlink 與 SCN | 新增視圖找出外部 SCN 跳變

640?wx_fmt=gif&wxfrom=5&wx_lazy=1


 綜述 css


衆所周知。當在兩個數據庫之間創建 dblink連 接時,SCN 將被同步。以維持分佈式事務讀取一致性。 這將致使在較低 SCN 的數據庫的 SCN 跳變。 html


在分佈式事務中很是難找到 SCN 跳變的來源。從 12.2 開始。視圖DBA_EXTERNAL_SCN_ACTIVITY 以及 DBA_DB_LINK_SOURCES 和 DBA_DB_LINKS 使咱們能夠跟蹤這些跳轉。sql

視圖DBA_DB_LINK_SOURCES 也爲 12.2 版本號的新增視圖。數據庫


Oracle 官網文檔原文:分佈式

Finding out External SCN jump using DBA_EXTERNAL_SCN_ACTIVITY in 12.2 (Doc ID 2171090.1)post

 

讓咱們看看如下的樣例。怎樣在 dblink 鏈接中涉及的兩個數據庫中捕獲這些跳轉。spa


咱們將使用如下演示樣例視圖。基於 DBA_EXTERNAL_SCN_ACTIVITY,DBA_DB_LINK_SOURCES。DBA_DB_LINKS 三個視圖收集信息。orm


640?wx_fmt=png&wxfrom=5&wx_lazy=1


建立演示樣例視圖 SQL 文本:
視頻

create or replace view check_ext_scn ashtm

(SELECT RESULT, OPERATION_TIMESTAMP, EXTERNAL_SCN, SCN_ADJUSTMENT,

HOST_NAME, DB_NAME, SESSION_ID, SESSION_SERIAL#

FROM DBA_EXTERNAL_SCN_ACTIVITY a, DBA_DB_LINK_SOURCES s

WHERE a.INBOUND_DB_LINK_SOURCE_ID = s.SOURCE_ID)

UNION

(SELECT RESULT, OPERATION_TIMESTAMP, EXTERNAL_SCN, SCN_ADJUSTMENT,

dbms_tns.resolve_tnsname(HOST) HOST_NAME, NULL DB_NAME, SESSION_ID, SESSION_SERIAL#

FROM DBA_EXTERNAL_SCN_ACTIVITY a, DBA_DB_LINKS o, DBA_DB_LINK_SOURCES s

WHERE a.OUTBOUND_DB_LINK_NAME = s.SOURCE_ID

AND OUTBOUND_DB_LINK_OWNER = o.OWNER)

UNION

(SELECT RESULT, OPERATION_TIMESTAMP, EXTERNAL_SCN, SCN_ADJUSTMENT,

s.MACHINE HOST_NAME, NULL DB_NAME, SESSION_ID, SESSION_SERIAL#

FROM DBA_EXTERNAL_SCN_ACTIVITY a, V$SESSION s

WHERE a.SESSION_ID = s.SID AND a.SESSION_SERIAL#=s.SERIAL#

AND INBOUND_DB_LINK_SOURCE_ID IS NULL

AND OUTBOUND_DB_LINK_NAME IS NULL

AND OUTBOUND_DB_LINK_OWNER IS NULL);

 

上面輸出中每列的描寫敘述例如如下:

  • RESULT:SCN 推動是否接受或拒絕

  • OPERATION_TIMESTAMP:推動發生的時間

  • EXTERNAL_SCN:當前 SCN 跳變到的新 SCN 值

  • SCN_ADJUSTMENT:SCN 的增量有多大

  • HOST_NAME:dblink 源於哪一個主機

  • DB_NAME:dblink 源自哪一個數據庫

  • SESSION_ID:此條目的本地實例的會話 ID

  • SESSION_SERIAL#:此條目的本地實例的序列號


建立監測SQL腳本


建立一個腳本名爲 check_ext_scn.sql 內容例如如下:

 

select * from check_ext_scn;


 使用Dblink前查看SCN 號與推動


檢查兩個數據庫中的 SCN:


Database 1:

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

12693736

 

SQL> set pages 100 lines 200

col result for a15

col OPERATION_TIMESTAMP for a35

col HOST_NAME for a15

col DB_NAME for a15

 

SQL> @check_ext_scn

 

no rows selected

 

Database 2:

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

1574865

##數據庫2的 SCN 是否遠遠小於數據庫1。


 

SQL>@check_ext_scn

 

no rows selected


 使用Dblink後查看SCN號與推動記錄 


嘗試兩個數據庫之間的 Dblink 鏈接以同步 SCN 

Database 1:

從數據庫1到2啓動 Dblink 鏈接DUAL: 

SQL> select * from dual@testlnk;

 

D

-

X

 

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

12693943

 

SQL>@check_ext_scn

 

no rows selected

## 注意數據庫1中沒有發現記錄。



Database 2: 

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

12693956

##注意數據庫2中的 SCN 現在與數據庫1同步。



SQL>@check_ext_scn 

640?wx_fmt=png

## 從上面的輸出,咱們能夠看到數據庫1已致使數據庫2中的 SCN 推動。推動量爲11118928 個SCN。當前隱含參數_EXTERNAL_SCN_LOGGING_THRESHOLD_SECONDS 的值設置爲600,所以僅僅會記錄大於9830400(600 * 16k)的跳變。


現在,因爲兩個數據庫的 SCN 差點兒接近,讓咱們嘗試一個 Dblink 鏈接,看看假設跳變小於9830400個SCN,是否記錄 SCN 跳變。 


Database 1: 

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

12694325

 

SQL> select * from dual@testlnk;

 

D

-

X

 

SQL>@check_ext_scn

 

no rows selected

 

Database 2:

SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

12694325 

##Dblink鏈接後SCN號發生推動。


 

SQL>@check_ext_scn

640?wx_fmt=png


##注意,即便在 SCN 跳變以後,也沒有額外的記錄。因爲它的跳變量小於9830400。

※§6 小結

A. 本質上,DBA_EXTERNAL_SCN_ACTIVITY 捕獲 SCN 跳變將很是實用,有助於咱們查找有問題的數據庫時縮小範圍。視圖 DBA_EXTERNAL_SCN_ACTIVITY 不會捕獲所有 SCN 跳變。 它僅僅在如下的狀況下捕獲 SCN 跳變。


 

1) SCN 跳變請求使得本地 headroom 小於 threshold 而被拒絕(由 _external_scn_rejection_threshold_hours 控制)

2) SCN 跳變請求因爲 SCN 的 DELTA 增量太高而被拒絕(由 _external_scn_rejection_delta_threshold_minutes 控制)

3) SCN 跳變被接受但帶有警告(由 _external_scn_logging_threshold_seconds 控制)


B. 假設 SCN 推動是由此數據庫發起的,則此視圖不會提供信息。 咱們需要在遇到 SCN 跳變的數據庫上使用此視圖。


最近活動


640?wx_fmt=jpeg

ACOUG China Tour 2018

4月13日上海站


掃描二維碼

立刻報名參加

640?wx_fmt=jpeg


資源下載

關注公衆號:數據和雲(OraNews)回覆keyword獲取

‘2017DTC’,2017 DTC 大會 PPT

‘DBALIFE’。「DBA 的一天」海報

‘DBA04’。DBA 手記4 經典篇章電子書

‘RACV1’, RAC 系列課程視頻及 PPT

‘122ARCH’,Oracle 12.2 體系結構圖

‘2017OOW’,Oracle OpenWorld 資料

‘PRELECTION’,大講堂講師課程資料

640?wx_fmt=png

相關文章
相關標籤/搜索