Tuesday, June 14, 2011

SQL0902C A system error (reason code = "")

ในกรณีที่ restore db2 database แล้วเจอ error ดังต่อไปนี้

SQL0902C A system error (reason code = "") occurred. Subsequent SQL
statements cannot be processed. SQLSTATE=58005

หรือหากดูใน db2diag.log แล้วเจอ error ประมาณนี้

2011-06-14-15.07.39.436000+420 I7047H575 LEVEL: Severe
PID : 3788 TID : 2892 PROC : db2syscs.exe
INSTANCE: MYINST NODE : 000
FUNCTION: DB2 UDB, buffer pool services, sqlbReadStorageGroup, probe:20
MESSAGE : ZRC=0x87020002=-2029912062=SQLB_BPSE "Debug logic error detected"
DIA8501C A buffer pool logic error has occurred.

อาจเป็นไปได้ว่าเกิดจากการที่เราเอา image ของ file backup จากเครื่องอื่นมา restore ซึ่งมีบาง path ที่ไม่ตรงกัน

อย่างไรก็ตามเราสามารถใช้ option "redirect generate script " ของ db2 restore ช่วยในการแก้

ปัญหานี้ได้โดยแทนที่จะใช้คำสั่ง restore แบบนี้

db2 restore database MYDB from .

ให้ใช้เป็น

db2 restore database MYDB from . redirect generate script restore.sql

ระบบจะสร้าง file restore.sql ขึ้นมา จากนั้นเปิด file นี้แล้วมองหาว่า

1. หลัง option "ON" เป็น DRIVE ที่ถูกต้องหรือไม่
2. path ของ tablespace มีอยู่จริงหรือไม่ เช่น หากเป็น Drive ที่ไม่มีอยู่จริงหรือไม่สามารถเขียนได้มันจะทำให้ restore

tablespace ไม่สำเร็จ

จากนั้น save แล้วก็

db2 -tvf restore.sql

ครับ

No comments: