จดไว้กันตายและกัน หลังๆไม่ค่อยได้เตะตัว DB2 แล้ว พอมาดูเคสอีกที เอ๋อแดรก เป็น Dev ที่สวมหลายหมวกแล้วมืนจริงๆ 555 เริ่มต้นด้วย
BACKUP
มันมี 2 แบบ Offline / Online แล้วที่นี้มันต่างกันยังไง
- Offline - ใช้กับ Log แบบ Circular logging ตอน Backup มีงานสะดุด เพราะต้องปิด Service โดยคำสั่งที่สื่อไปในทางปิด Service จะประมาณนี้
--stop service db2 force application all db2 deactivate db INVSDB --backup db2 connect to INVSDB db2 backup db INVSDB
- Online - ใช้กับ Log แบบ archive log ใน DB Configuration ต้องมีการกำหนดค่า Property logarchmeth1 ไว้ด้วย คำสั่ง backup / restore จะแตกต่างนิดนึง
# ================================================ # Backup mode online + include logs db2 connect to $dbname db2 backup db $dbname online to $path include logs WITHOUT PROMPTING # ================================================ # Restore db2 restore db $dbname from $path taken at $dbdate TO $datapath LOGTARGET $logpath WITHOUT PROMPTING # rollforward database log db2 rollforward db $dbname to end of backup and complete;
ถ้าดูสถานะ Log ใช้ db2pd -db INVSDB -logs
db2inst1@invubuntudb2tsy:~$ db2pd -db INVSDB -logs Database Member 0 -- Database INVSDB -- Active -- Up 55 days 21:09:46 -- Date 2024-06-05-12.14.59.314889 Logs: Current Log Number 11 Pages Written 110 Cur Commit Disk Log Reads 0 Cur Commit Total Log Reads 29 Method 1 Archive Status n/a Method 1 Next Log to Archive n/a Method 1 First Failure n/a Method 2 Archive Status n/a Method 2 Next Log to Archive n/a Method 2 First Failure n/a Log Chain ID 0 Current LSO 42234397027 Current LSN 0x000000000A557EDE Address StartLSN StartLSO State Size Pages Filename 0x00007F734AE7CEF8 000000000A5520A3 42229772993 0x00000000 1024 1024 S0000010.LOG 0x00007F734AE7C598 000000000A557889 42233946817 0x00000000 1024 1024 S0000011.LOG 0x00007F734A50A1B8 0000000000000000 42238120641 0x00000000 1024 1024 S0000012.LOG 0x00007F734AE80738 0000000000000000 42242294465 0x00000000 1024 1024 S0000000.LOG 0x00007F7348228C38 0000000000000000 42246468289 0x00000000 1024 1024 S0000001.LOG 0x00007F7348229598 0000000000000000 42250642113 0x00000000 1024 1024 S0000002.LOG 0x00007F734AE7FDD8 0000000000000000 42254815937 0x00000000 1024 1024 S0000003.LOG 0x00007F734AE81098 0000000000000000 42258989761 0x00000000 1024 1024 S0000004.LOG 0x00007F734AE7F478 0000000000000000 42263163585 0x00000000 1024 1024 S0000005.LOG 0x00007F734AE7EB18 0000000000000000 42267337409 0x00000000 1024 1024 S0000006.LOG 0x00007F734AE7E1B8 0000000000000000 42271511233 0x00000000 1024 1024 S0000007.LOG 0x00007F734AE7D858 0000000000000000 42275685057 0x00000000 1024 1024 S0000008.LOG 0x00007F734AE819F8 0000000000000000 42279858881 0x00000000 1024 1024 S0000009.LOG
Circular logging & Archive logging
Log ในที่นี้หมายถึงพวก Transaction Logs นะ
ใน DB ทั่วไปมี Log 2 แบบเหมือนกันนะ Circular log กับ Archive log โดยที่
- Circular logging ให้ DB มันวน transaction log ไปเรื่อยๆ
Note: ถ้าเต็มเราจะเจอ [DB2] SQL0964C Transaction log for database is full
Property | Value |
---|---|
LOGARCHMETH1 | OFF |
- Archive logging ให้เก็บไปเรื่อยๆ ทำ Online Backup / HADR / roll forward recovery แต่ต้องระวังเรื่อง Disk เต็ม
Note: ถ้าเต็มจะเจอ Error แบบนี้ SQL0968C The file system is full
การแก้ไปไล่ลบ Archive Log ทิ้ง
Property | Value |
---|---|
LOGARCHMETH1 | ค่าที่เป็นได้ 1. LOGRETAIN 2. USEREXIT - ใช้ USER Exit จัดการ Automating log file archiving and retrieval with user exit programs - IBM Documentation //ส่วนตัวไม่เคยใช้ 3. DISK - เป็นพื้นที่ที่จองไว้ เช้น DISK:/invsins1/INVSDB/archive/invsins1/BFMDB/NODE0000/LOGSTREAM0000 4. DB2REMOTE - เหมือน Disk จะเป็นพวก S3 บน Cloud แทน เช่น DB2REMOTE://<alias>/<container>/<object> 5. TSM - ยกให้ TSM จัดการ |
LOGARCHMETH2 | ปกติจะ OFF ยกเว้นถ้า LOGARCHMETH1 เป็น DISK / DB2REMOTE / TSM |
Log อื่นๆ
- Property NEWLOGPATH - เอาไว้กำหนด Log Path แยกใหม่ ปกติ Log กับ Data มันจะอยู่ที่เดียวกัน เผื่อสำหรับเคสเติมพื้นที่ แยก physical disk เลย data อันนึง / log อีกอัน
dbname=INVSDB db2usr=invsins1 db2 update db cfg for $dbname USING NEWLOGPATH $logpath;
Reference
- logarchmeth1 - Primary log archive method configuration parameter - IBM Documentation
- How to Fix IBM DB2 LUW Error Message: SQL0968C (xtivia.com)
- DB2_Admin_Guide.pdf (sap.com)
- Section 13.2. DB2 Transaction Logs | Understanding DB2: Learning Visually with Examples (2nd Edition) (flylib.com)
- Managing DB2 Transaction Log Files | XTIVIA
- Db2 HADR Wiki (ibm.github.io)
- 20200110DB2Night221.pdf (dbisoftware.com)
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.