Thứ Ba, 1 tháng 12, 2020

Quản trị Oracle DataGuard

1. Check

Sử dụng Oracle Broker kiểm tra trạng thái cấu hình DataGuard:

dgmgrl /
show configuration;
show database verbose dbaviet

Hoặc sử dụng SQL kiểm tra apply lag trên Standby:

SELECT NAME, VALUE FROM V$DATAGUARD_STATS WHERE NAME='apply lag';
Nếu lag =0 thì OK, còn > 5 phút cần check lại.

Kiểm tra trạng thái các process sử dụng cho đồng bộ dữ liệu trên Standby

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS'

SELECT PROCESS, CLIENT_PROCESS, THREAD#, SEQUENCE#, STATUS, BLOCK#, BLOCKS FROM GV$MANAGED_STANDBY order by PROCESS, thread#, SEQUENCE#;



Check apply archived log:
SQL> !date
Mon Apr  5 15:23:15 +07 2021

SELECT sequence#, first_time, next_time, applied FROM   v$archived_log
where next_time>sysdate-1 ;

(Như này là real time, sequence cuối cùng 19987 là IN-MEMORY, còn nếu nhiều sequence mà APPLIED=NO là GAP (trễ) ở đó)

-- Đảm bảo primary và standby max sequence# bằng nhau:
SQL>  select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
            19988

--Check sự chênh lệch sequence
SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received",
APPL.SEQUENCE# "Last Sequence Applied",
(ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference" FROM
(SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME )
IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,
(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME )
IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;

SQL>
Thread    Last SequenceReceived   Last Sequence Applied      Difference
---------- ----------------------            ---------------------                ----------
  1                 19988                           19988                                   0

-- Đảm bảo không có row nào
SELECT NAME, thread#, sequence#, next_time, first_change#, creator, fal,
 registrar, archived, applied, deleted,
 TRUNC (blocks * block_size / 1024 / 1024) || 'M' arc
 FROM v$archived_log
 WHERE thread# = 1 AND sequence# >= (SELECT MAX (sequence#)
 FROM v$archived_log
 WHERE applied = 'YES' AND thread# = 1)
 and dest_id=2
UNION ALL
SELECT NAME, thread#, sequence#, next_time, first_change#, creator, fal,
 registrar, archived, applied, deleted,
 TRUNC (blocks * block_size / 1024 / 1024) || 'M' arc
 FROM v$archived_log
 WHERE thread# = 2 AND sequence# >= (SELECT MAX (sequence#)
 FROM v$archived_log
 WHERE applied = 'YES' AND thread# = 2)
  and dest_id=2
ORDER BY thread#, sequence# DESC;

Kiểm tra transfer được archive log từ Primary sang Standby

§ Primary: Tạo log switch

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
 
-- Kiểm tra sequence# mới nhất: ví dụ 1131595 1/29/2021 2:16:20 PM 1/29/2021 3:32:26 PM
SELECT sequence#, first_time, next_time
FROM   v$archived_log;
 
ALTER SYSTEM SWITCH LOGFILE;

-- Kiểm tra sequence# hiện tại mới sinh ra: ví dụ 1131596 1/29/2021 3:32:26 PM 1/29/2021 4:47:06 PM

SELECT sequence#, first_time, next_time
FROM   v$archived_log;

§ Standby: Kiểm tra xem archive log mới sinh ra đã sang standby và đã apply chưa

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
 
-- Nếu equence# là 131596 thì OK
SELECT sequence#, first_time, next_time
FROM   v$archived_log;

Note: Nếu không transfer được archive log từ primary sang standby hãy kiểm tra:
- Đường mạng giữa primary & standby
- Listener trên standby
- Standby có đang mount hoặc open hay không.
- Vùng chứa archive log (+RECO) trên standby có bị đầy hay không

--2.START/STOP

2.1. Start/Stop broker

alter system set dg_broker_start=true sid='*'
alter system set dg_broker_start=false sid='*';

2.2. Start/Stop chế độ apply trên Primary

Cách 1: Dùng Broker
--Khởi động truyền log/archive trên 1 node database dbaviet
dgmgrl /
edit database dbavietset state='TRANSPORT-ON';

--Dừng truyền log/archive trên database dbaviet
dgmgrl /
edit database dbavietset state='TRANSPORT-OFF';

Check lai:

DGMGRL> SHOW DATABASE dbaviet;

Cách 2: Dùng SQL
-- dbaviet
SQL> show parameter archive_dest_state_2

-- Enable
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY SID='*';

--Disable đẩy archivelog sang dest_2
ALTER SYSTEM SET log_archive_dest_state_2='DEFER' SCOPE=BOTH SID='*';

Khi tắt sẽ có log:
Fri Jul 16 10:31:10 2021
FAL[server, ARC3]: FAL archive failed, see trace file.
ARCH: FAL archive failed. Archiver continuing
ORACLE Instance dbaviet_dg1 - Archival Error. Archiver continuing.
FAL[server, ARC3]: FAL archive failed, see trace file.
ARCH: FAL archive failed. Archiver continuing
ORACLE Instance dbaviet_dg1 - Archival Error. Archiver continuing.
FAL[server, ARC3]: FAL archive failed, see trace file.
ARCH: FAL archive failed. Archiver continuing
ORACLE Instance dbaviet_dg1 - Archival Error. Archiver continuing.
FAL[server, ARC3]: FAL archive failed, see trace file.

2.3. Start/Stop chế độ apply trên standby

-- Cách 1: Dùng Broker
1. Bật apply trên database dbaviet_standby
dgmgrl /
edit database dbaviet_standby set state='APPLY-ON';
show database dbaviet_standby

2. Dừng apply trên database dbaviet_standby
dgmgrl /
edit database dbaviet_standby set state='APPLY-OFF';

-- Cách 2: Dùng SQL
-- Start
alter database recover managed standby database using current logfile disconnect;

hoặc:
alter database recover managed standby database disconnect from session;

-- Stop
alter database recover managed standby database cancel;

2.4. Tự động, manual thêm datafile
alter system set standby_file_management=AUTO;
alter system set standby_file_management=MANUAL;

KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH: 📧 Mail: binhoracle@gmail.com ☎️ Mobile: 0902912888 ⚡️ Skype: tranbinh48ca 👨 Facebook: https://www.facebook.com/BinhOracleMaster 👨 Inbox Messenger: https://m.me/101036604657441 (profile) 👨 Fanpage: https://www.facebook.com/tranvanbinh.vn 👨 Inbox Fanpage: https://m.me/tranvanbinh.vn 👨👩 Group FB: https://www.facebook.com/groups/OracleDBAVietNam 👨 Website: http://www.tranvanbinh.vn 👨 Blogger: https://tranvanbinhmaster.blogspot.com 🎬 Youtube: http://bit.ly/ytb_binhoraclemaster 👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi 👨 Linkin: https://www.linkedin.com/in/binhoracle 👨 Twitter: https://twitter.com/binhoracle 👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội #OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #oce #ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master