Thứ Ba, 1 tháng 8, 2023

CÁC LỖI ĐỒNG BỘ DỮ LIỆU THƯỜNG GẶP TRONG ĐỒNG BỘ ORACLE GOLDENGATE, DATAGUARD TỪ A-Z

1. Xử lý một số lỗi đồng bộ dữ liệu thường gặp tại site Primary

1.1. Thiếu archived log CSDL Standby trong DataGuard

Lỗi này thường xảy ra đường truyền bị lỗi, hoặc trên Primary xóa hết các archived log, hoặc vùng chứa archived log trên standby bị đầy.

  • Nếu vùng chứa archived log trên bị đầy, thực hiện xóa archivelog đã apply trên standby bằng RMAN trước khi lấy các archive bị thiếu:

rman target /

RMAN> delete archivelog until time 'sysdate - x'

#x là số ngày cần giữ lại archive

  • Nếu các archived log trên Primary vẫn còn, standby sẽ tự lấy các archived log bị thiếu về.

  • Nếu các archived log trên Primary đã bị xóa có thể thực hiện lấy lại các archived log từ các bản backup trên Primary như sau:

#Trên standby

SELECT * FROM V$ARCHIVE_GAP;

#Từ danh sách các archive gap ta lấy được các min_sequence & max_sequence cho từng thread(ở đây là 1&2).

#Sau đó trên Primary ta restore các archived log bị gap từ bản backup:

rman target /

RMAN> restore archivelog from logseq min_sequence until logseq max_sequence thread 1;

RMAN> restore archivelog from logseq min_sequence until logseq max_sequence thread 2;

#Các archive bị thiếu sẽ được standby tự động lấy về qua RFS

1.2. Tiến trình Golden Gate extract bị abend do bị xóa archived log

Lỗi này xảy ra khi archive log chứa những transaction đang được mining, hoặc sử dụng cho Bounded Recovery đã bị xóa.

#1.Trên Primary

$GGATE/ggsci

GGATE> Start group_extract_error

#2.Kiểm tra thông tin trong alert log của Golden Gate (theo mục 3.1.4) để lấy thông tin archived log bị thiếu ta được min_sequence theo từng thread

#3.Sử dụng RMAN tìm thông tin max_sequence bị thiếu theo từng thread (là các archived log không có trong danh sách những archive đang tồn tại)

rman target /

RMAN> list archivelog all;

#4.Restore lại các archive log bị thiếu

RMAN> restore archivelog from logseq min_sequence until logseq max_sequence thread x;

#Thread x ở đây là (1,2,3,4)

1.3. Tiến trình GoldenGate extract bị abend không start được

Lỗi này xảy ra khi tiến trình extract bị abend, khi start lại nhưng không thể thực hiện bounded recover được, thông thường là do bị kill session hoặc shutdown instance abort. Trong trường hợp này, phải thực hiện reload lại các group đồng bộ bị lỗi.

Các bước thực hiện:

  • Bước 1: Stop tiến trình replicat liên quan đến extract bị lỗi

  • Bước 2: Thực hiện alter lại thời điểm capture (lấy thời điểm hiện tại) cho extract lỗi và start extract

  • Bước 3: Start tiến trình extract & pump

  • Bước 4: Thực hiện export dữ liệu các bảng trong group bị lỗi với flashback_scn_number (danh sách các bảng lấy trong parameter-file hiên tại của extract trong cấu hình Golden Gate, có thể xem ví dụ trong thư mục VietDBA_dirprm đi kèm tài liệu này) trên VietDBA-Pri (Pri là Primary là DB chính)

  • Bước 5: Copy dump file từ VietDBA-Pri vào VietDBA-Stb (Stb là Standby là DB dự phòng)

  • Bước 6: Thực hiện import dữ liệu từ dumpfile với trong group bị lỗi trên VietDBA-Stb

  • Bước 7: Start tiến trình replicate after flashback_scn_number

# Ví dụ cho group OTHEXT1 bị lỗi.

#B1. Trên VietDBA-Stb

$GGATE/ggsci

STOP OTHREP1

#B2. Trên VietDBA-Pri

ALTER OTHEXT1 , BEGIN NOW

#B3. Trên  VietDBA-Pri

START OTHEXT1

#B4. Trên  VietDBA-Pri

#1.Lấy flashback_scn_number từ database:

Column flashback_scn_number format 99999999999999999999999

Select dbms_flashback.get_system_change_number flashback_scn_number from dual;

2.Export dữ liệu từ  VietDBA-Pri với flashback_scn_number . Tham khảo script exp_all_othext1.sh đi kèm tài liệu này

expdp userid="'/ as sysdba'" parallel=8 FLASHBACK_SCN=11815981063672 TABLES=APP_OWNER.CUSTOMER  DIRECTORY=dump_ggate DUMPFILE='exp_customer%U.dmp' LOGFILE='exp_customer.log' JOB_NAME=exp_customer COMPRESSION=ALL 

#B5. Copy dumpfile sang  VietDBA-Stb

scp exp_all_others*.dmp 192.168.22:/global/u04/dump_ggate

#B6. Import dữ lieu vào MOBIGOLD-HCM

Import dữ liệu từ MOBIGOLD. Tham khảo script imp_all_othext1.sh đi kèm tài liệu này

impdp userid="'/ as sysdba'" parallel=8  TABLE_EXISTS_ACTION=replace DIRECTORY=dump_ggate DUMPFILE='exp_customer%U.dmp' LOGFILE='imp_customer.log' JOB_NAME=imp_customer

#B7. Trên MOBIGOLD-HCM

start OTHREP1 aftercsn flashback_scn_number

1.3. Không đẩy được archived log từ Primary sang Standby trong DataGuard

Để truyền được archived log từ Primary sang Standby phải đảm bảo các yếu tố sau:

  • Đường truyền giữa Primary tới Standby thông suốt.

  • Listener trên Standby được bật.

  • Các database ở Standby đang được OPEN.

  • Vùng chứa archive log (+RECO) trên standby còn dung lượng không bị đầy.

2. Xử lý một số lỗi thường gặp trên CSDL dự phòng

2.1. Tiến trình Redo apply auto shutdown hoặc bị treo

  • Kiểm tra trạng thái của các process:

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

  • Nếu không có process MRP0 thì redo apply đã bị shutdown, thực hiện start lại process redo apply:

alter database recover managed standby database using current logfile disconnect;

  • Trường hợp process MRP0 running nhưng lag vẫn tăng. Kiểm tra lag bằng câu lệnh sau:

SQL>SELECT name, value, datum_time, time_computed FROM V$DATAGUARD_STATS WHERE name like 'apply lag';       

NAME             VALUE       DATUM_TIME       TIME_COMPUTED 

--------- ------------         -------------------            -------------------

apply lag      +00 00:11:34   10/23/2012 15:19:29   10/23/2012 15:19:30

  • Trường hợp này thì thực hiện tuần tự như sau: shutdown database dbaviet1,dbaviet2 rồi start database dbaviet1, dbaviet2

  • Câu lệnh stop database:

srvctl stop instance -d dbaviet -i dbaviet2 -o immediate

srvctl stop instance -d dbaviet -i dbaviet1 -o immediate

  • Câu lệnh start database:

srvctl start instance -d dbaviet -i dbaviet1 

srvctl start instance -d dbaviet -i dbaviet2

2.2. Lỗi bảng mới tạo trên CSDL DBAViet-Pri site Hà Nội nhưng site DR chưa có (GoldenGate)

  • Connect vào user ggate trên DBAViet-Stb

  • Sử dụng Toad để describer object qua dblink dbaviet-pri (dblink này có quyền query hết các bảng) để lấy cấu trúc bảng, index, constraint…

  • Lấy cấu trúc bảng nhanh nhất bằng cách : dùng câu lênh lấy cấu trúc bảng create table…. as select ….@dbaviet-pri where 0=1, rồi tạo những index, constraint từ thông tin describer object.

2.3. Thiếu archive log trên CSDL Physical Standby (DataGuard)

Nếu do lỗi đường đường truyền hoặc CSDL dự phòng bị tắt quá lâu, khi CSDL dự phòng được kết nối trở lại với CSDL chính, các file archive sẽ được CSDL dự phòng yêu cầu truyền lại & tự động apply.

Trong trường hợp file archive đã bị xóa trên CSDL chính, cần thực hiện các bước như sau:

  • Dừng apply trên CSDL dự phòng:
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

  • Xác định SCN đã apply tới trên CSDL dự phòng:
    SQL> SELECT TO_CHAR(CURRENT_SCN) FROM V$DATABASE;
    Tip: SELECT MIN(checkpoint_change#) FROM V$DATAFILE_HEADER;

  • Kết nối RMAN vào CSDL chính & tạo một bản Incremetal backup từ SCN có từ bước trên:
    RMAN> BACKUP AS COMPRESSED BACKUPSET INCREMENTAL FROM SCN <SCN từ bước trên> DATABASE FORMAT ‘/s01/forstandby/incremental_%U’ tag ‘FORSTANDBY’;

  • Copy folder /s01/forstandby sang máy dự phòng.

  • Kết nối RMAN vào CSDL dự phòng & đăng ký bộ incremental backup:
    RMAN> CATALOG START WITH ‘/s01/forstandby’;

  • Recover CSDL dự phòng:
    RMAN> RECOVER DATABASE NOREDO;

  • Kết nối RMAN vào CSDL chính & tạo backup standby control file mới:
    RMAN> BACKUP AS COMPRESSED BACKUPSET CURRENT CONTROLFILE FOR STANDBY FORMAT ‘/s01/backup_db/standbyctlfile.ctl’;

  • Copy standby control file sang hệ thống dự phòng

  • Shutdown CSDL dự phòng & start ở chế độ NOMOUNT:
    RMAN> SHUTDOWN IMMEDIATE;
    RMAN> STARTUP NOMOUNT;

  • Kết nối RMAN vào CSDL dự phòng & restore standby control file mới:
    RMAN> RESTORE STANDBY CONTROLFILE FROM ‘/s01/standbyctlfile.ctl’;

  • Shutdown CSDL dự phòng & start ở chế độ MOUNT;
    RMAN> SHUTDOWN IMMEDIATE;
    RMAN> STARTUP MOUNT;

  • Đăng ký vị trí mới của các datafile nếu vị trí lưu trữ trên CSDL chính & dự phòng khác nhau:
    RMAN> CATALOG START WITH ‘/u01/….’;
    RMAN> SWITCH DATABASE TO COPY;

  • Xóa tất cả redo log & standby redo log trên CSDL dự phòng.

  • Khởi tạo lại các standby redo log:
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 4;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 5;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 6;

  • Khởi tạo lại Flashback:
    SQL> ALTER DATABASE FLASHBACK OFF;
    SQL> ALTER DATABASE FLASHBACK ON;

  • Tiếp tục apply dữ liệu log từ CSDL chính:
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

2.4. CSDL dự phòng bị lỗi không thể tiếp tục apply archived log

Trường hợp lỗi không thể khôi phục được do thiếu file archive, phải dựng lại CSDL dự phòng từ một bản backup mới của CSDL chính, hướng dẫn tại đây


=============================
Website không bao giờ chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn muốn tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ kinh nghiệm, thủ tục, quy trình, bí kíp thực chiến mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin1_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 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/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Đị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

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

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