การ Archive Oracle® databases ช่วยให้คุณเก็บรักษาและจัดเก็บข้อมูลระยะยาวได้ แต่จะเกิดอะไรขึ้นถ้าพื้นที่หมด?
บทนำ
ถ้า archive destination เต็ม Oracle Database ของคุณอาจ hang หรือค้าง และคุณอาจเห็น error ต่อไปนี้:
- 0RA-00257: Archiver error, connect internal only until freed
- ORA-16014: Log 2 sequence# 1934 not archived, no available destinations
ในกรณีนี้ คุณต้องมี alternate archiving destination เพื่อใช้เมื่อ original archive destination ล้มเหลว คุณสามารถใช้ประโยชน์จาก alternate archive destination ในกรณีล้มเหลวใดๆ (พื้นที่, hardware, ฯลฯ) ใน primary archive destination
มาเดู demonstration 快速 เพื่อเข้าใจว่ามันทำงานอย่างไร
Demo Part One
ก่อนอื่น ผมตั้ง primary archive destination เป็น /u03/primary_dest location ซึ่งใช้พื้นที่ 99% แล้ว คุณสามารถทำเช่นเดียวกันเพื่อทดสอบ
จากนั้นรันคำสั่งต่อไปนี้:
SQL> select version from v$instance;
VERSION
-----------------
12.1.0.2.0
SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS from v$archive_dest where status!='INACTIVE';
DEST_NAME TARGET DESTINATION VALID_ROLE STATUS
--------------------- ---------- -------------------- ------------ ---------
LOG_ARCHIVE_DEST_1 PRIMARY /u03/primary_dest ALL_ROLES VALID
Demo Part Two
มาเพิ่ม alternate archive destination /u04/alternate_dest ซึ่งระบบสามารถใช้ได้หาก primary destination ไม่พร้อมใช้งาน
SQL> !df -h /u04/alternate_dest
Filesystem Size Used Avail Use% Mounted on
/dev/ddg2 1004M 18M 936M 2% /u04
SQL> alter system set log_archive_dest_2='LOCATION=/u04/alternate_dest' scope=both;
System altered.
SQL> alter system set log_archive_dest_state_2=ALTERNATE scope=both;
System altered.
SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS,ALTERNATE from v$archive_dest where status!='INACTIVE';
DEST_NAME TARGET DESTINATION VALID_ROLE STATUS ALTERNATE
------------------- ----------- ------------------- ------------ ----------- ---------
LOG_ARCHIVE_DEST_1 PRIMARY /u03/primary_dest ALL_ROLES VALID NONE
LOG_ARCHIVE_DEST_2 PRIMARY /u04/alternate_dest ALL_ROLES ALTERNATE NONE
Demo Part Three
คุณสามารถ link primary และ alternate archive destination และ Oracle จะ fail over ไปยัง alternate archive location เมื่อ primary location ถึง 100% usage อย่างไรก็ตาม Oracle ไม่สามารถ failback ไปยัง primary destination หลังจากที่พร้อมใช้งานอีกครั้ง สำหรับให้ทำงานได้ คุณต้องตั้ง primary archive destination LOG_ARCHIVE_DEST_1 เป็น ALTERNATE สำหรับ alternate archive destination LOG_ARCHIVE_DEST_2 ตามตัวอย่างต่อไปนี้:
SQL> alter system set log_archive_dest_2='LOCATION=/u04/alternate_dest NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_1' scope=both;
System altered.
SQL> alter system set log_archive_dest_1='LOCATION=/u03/primary_dest NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_2' scope=both;
System altered.
SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS,ALTERNATE from v$archive_dest where status!='INACTIVE';
DEST_NAME TARGET DESTINATION VALID_ROLE STATUS ALTERNATE
-------------------- ----------- -------------------- ------------ ---------- ------------------
LOG_ARCHIVE_DEST_1 PRIMARY /u03/primary_dest ALL_ROLES VALID LOG_ARCHIVE_DEST_2
LOG_ARCHIVE_DEST_2 PRIMARY /u04/alternate_dest ALL_ROLES ALTERNATE LOG_ARCHIVE_DEST_1
คุณสามารถตรวจสอบยืนยันได้ว่าคุณ link archive destinations หนึ่งและสองแล้ว Oracle ควรสามารถ fail back ไปยัง primary หลังจาก primary มีพื้นที่ว่าง
Demo Part Four
ต่อมา ผม execute DML's บางอย่างจน archive destination ถึง 100% usage ตาม output ต่อไปนี้:
Thread 1 is advanced to log sequence 20 (LGWR switch)
Current log# 2 seq# 20 mem# 0: /u01/app/oracle/oradata/MODI/redo02.log
2020-12-05T04:44:29.216275+05:30 ARC0: Encountered disk I/O error 19502
2020-12-05T04:44:29.216575+05:30 ARC0: Closing local archive destination LOG_ARCHIVE_DEST_1 '/u03/primary_dest/1_19_1058325294.dbf' (error 19502) (MODI)
2020-12-05T04:44:29.217417+05:30 Errors in file /u01/app/oracle/diag/rdbms/modi/MODI/trace/MODI_arc0_23015.trc:
ORA-27072: File I/O error
Additional information: 4
Additional information: 350208
Additional information: 446464
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
2020-12-05T04:44:32.583182+05:30 MODIP(3):Resize operation completed for file# 11, old size 1172480K, new size 1182720K
2020-12-05T04:44:33.183355+05:30 Errors in file /u01/app/oracle/diag/rdbms/modi/MODI/trace/MODI_arc0_23015.trc:
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
ORA-27072: File I/O error
Additional information: 4
Additional information: 350208
Additional information: 446464
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
Step Five
Oracle พยายาม archive ไปยัง primary destination เสมอ และ automatic failback ไปยัง primary destination ทำงานใน version 12c หลังจากคุณทำความสะอาด primary destination และทำให้พร้อมสำหรับ archiving Oracle ยังคง archive redo logs ไปยัง primary destination โดยไม่รายงาน error หรือ failback message ใน alert log file ตามตัวอย่างที่ผม query v$archived_log:
SQL> select thread#,sequence#,name from v$archive_log;
THREAD# SEQUENCE# NAME
-------- ---------- -----------------------------------------------
1 2 /u03/primary_dest/1_2_1058325294.dbf
1 3 /u03/primary_dest/1_3_1058325294.dbf
1 4 /u03/primary_dest/1_4_1058325294.dbf
1 5 /u03/primary_dest/1_5_1058325294.dbf
1 6 /u04/alternate_dest/1_6_1058325294.dbf
1 7 /u04/alternate_dest/1_7_1058325294.dbf
1 8 /u04/alternate_dest/1_8_1058325294.dbf
1 9 /u04/alternate_dest/1_9_1058325294.dbf
1 10 /u04/alternate_dest/1_10_1058325294.dbf
1 11 /u04/alternate_dest/1_11_1058325294.dbf
1 12 /u04/alternate_dest/1_12_1058325294.dbf
1 13 /u04/alternate_dest/1_13_1058325294.dbf
1 14 /u04/alternate_dest/1_14_1058325294.dbf
1 15 /u04/alternate_dest/1_15_1058325294.dbf
1 16 /u04/alternate_dest/1_16_1058325294.dbf
1 17 /u04/alternate_dest/1_17_1058325294.dbf
1 18 /u04/alternate_dest/1_18_1058325294.dbf
1 19 /u04/alternate_dest/1_19_1058325294.dbf
1 20 /u04/alternate_dest/1_20_1058325294.dbf
1 21 /u04/alternate_dest/1_21_1058325294.dbf
1 22 /u04/alternate_dest/1_22_1058325294.dbf
1 23 /u04/alternate_dest/1_23_1058325294.dbf
1 24 /u04/alternate_dest/1_24_1058325294.dbf
1 25 /u04/alternate_dest/1_25_1058325294.dbf
1 26 /u04/alternate_dest/1_26_1058325294.dbf
1 27 /u04/alternate_dest/1_27_1058325294.dbf
1 28 /u04/alternate_dest/1_28_1058325294.dbf
1 29 /u03/primary_dest/1_29_1058325294.dbf
1 30 /u03/primary_dest/1_30_1058325294.dbf
1 31 /u03/primary_dest/1_31_1058325294.dbf
1 32 /u03/primary_dest/1_32_1058325294.dbf
31 rows selected.
สรุป
Oracle ได้ทำการปรับปรุงอย่างมีนัยสำคัญในการจัดการการสลับ archive destination ระหว่าง primary และ alternate destination แบบอัตโนมัติ หวังว่าคุณสามารถใช้ demonstration ของผมเพื่อใช้ประโยชน์จาก functionality นี้
การมี alternate archive ช่วยคุณได้ดี แต่จำไว้ว่า Oracle จะ log error messages ใน alert log file เกี่ยวกับ primary destination failure อย่างเป็นระยะ จนกว่า primary archive destination จะพร้อมอีกครั้ง
เรียนรู้เพิ่มเติมเกี่ยวกับบริการข้อมูลของเรา
ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถเริ่มการสนทนากับเราได้