小知識:設定archive_lag_target引數強制日誌切換

AlfredZhao發表於2023-05-14

為客戶測試一個ADG場景問題,發現測試環境的日誌切換頻率過低,總是需要定期手工切換,這非常影響測試心情。
實際上,可以設定archive_lag_target引數強制日誌切換。

比如設定:

alter system set archive_lag_target=1800;

這樣即使庫沒任何壓力,半小時也會切換一次日誌。

該設定同時也適用於非常空閒的生產環境,畢竟太久時間的業務資料都在Online Redo logfile中也不好。
尤其是有cascade的DG環境,更不應該讓這個時間太長,但也不要設定太短了,那樣會有效能問題。

另外,藉著這個引數設定的問題,順便提示下ADG環境的問題:

1. 這類資料庫引數設定,並不會透過ADG同步。

這在面試中也會經常被拿來提問,可以考察候選人的實際經驗和思考方式。

----------
@primary
----------
SQL> alter system set archive_lag_target=1800;

System altered.

SQL> show parameter archive_lag_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     1800

----------
@standby
----------
SQL> show parameter archive_lag_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
SQL> 

2. 修改業務使用者密碼的行為,會被同步到備庫。

----------
@primary
----------
SQL> alter user test identified by 123;

User altered.

SQL> conn test/123
Connected.

----------
@standby
----------
SQL> conn test/123
Connected.
SQL>  show parameter archive_lag_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0

之所以說這個問題,經常碰到有開發人員去問DBA,某某庫的備庫密碼不正確,主庫的密碼是對的,是不是ADG並不會同步密碼修改的動作?

而其實除了在主庫修改密碼後,備庫沒有及時同步的情況之外,基本都是開發連錯庫了..