Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

ปลายทางเก็บถาวรสำรองใน Oracle

การเก็บถาวรฐานข้อมูล Oracle® ช่วยให้คุณเก็บรักษาและจัดเก็บข้อมูลได้ในระยะยาว แต่จะเกิดอะไรขึ้นหากคุณไม่มีพื้นที่เหลือ

แนะนำตัว

หากปลายทางการเก็บถาวรเต็ม Oracle Database ของคุณอาจค้างหรือหยุดทำงาน และคุณอาจเห็นข้อผิดพลาดข้อใดข้อหนึ่งต่อไปนี้:

  • 0RA-00257 :ข้อผิดพลาด Archiver เชื่อมต่อภายในเท่านั้นจนกว่าจะว่าง
  • ORA-16014 :บันทึก 2 ลำดับ # 1934 ไม่ถูกเก็บถาวร ไม่มีปลายทางที่ใช้ได้

ในกรณีนี้ คุณต้องมีปลายทางการเก็บถาวรสำรองเพื่อใช้เมื่อปลายทางการเก็บถาวรเดิมล้มเหลว คุณสามารถใช้ปลายทางการเก็บถาวรสำรองในกรณีที่เกิดความล้มเหลวใดๆ (ช่องว่าง ฮาร์ดแวร์ และอื่นๆ) ในปลายทางการเก็บถาวรหลัก

มาดูการสาธิตสั้นๆ เพื่อทำความเข้าใจวิธีการทำงานกัน

สาธิตตอนที่หนึ่ง

ขั้นแรก ฉันตั้งค่าปลายทางการเก็บถาวรหลักเป็น /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

สาธิตส่วนที่สอง

มาเพิ่มปลายทางการเก็บสำรองอื่น /u04/alternate_dest ซึ่งระบบสามารถใช้ได้หากปลายทางหลักไม่พร้อมใช้งาน

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

สาธิตตอนที่สาม

คุณสามารถเชื่อมโยงปลายทางหลักและปลายทางการเก็บถาวรสำรอง และ Oracle สามารถเฟลโอเวอร์ไปยังตำแหน่งเก็บถาวรสำรองเมื่อตำแหน่งหลักมีการใช้งานถึง 100% อย่างไรก็ตาม Oracle จะไม่สามารถดำเนินการย้อนกลับไปยังปลายทางหลักหลังจากที่สามารถใช้งานได้อีกครั้ง เพื่อให้ใช้งานได้ คุณต้องตั้งค่าปลายทางหลักในการเก็บถาวรLOG_ARCHIVE_DEST_1 เป็น ทางเลือก สำหรับปลายทางเก็บถาวรสำรอง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

คุณสามารถตรวจสอบเพื่อยืนยันว่าคุณได้เชื่อมโยงปลายทางการเก็บถาวรหนึ่งและสองแล้ว ขณะนี้ Oracle ควรจะสามารถล้มเหลวในการกลับไปยังหลักหลังจากที่หลักมีพื้นที่ว่าง

สาธิตตอนที่สี่

ต่อไป ฉันดำเนินการ DML บางส่วนเพื่อให้ปลายทางการเก็บถาวรมีการใช้งาน 100% ดังแสดงในผลลัพธ์ต่อไปนี้:

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)

ขั้นตอนที่ห้า

Oracle พยายามเก็บถาวรไปยังปลายทางหลักเสมอ และการย้อนกลับอัตโนมัติไปยังปลายทางหลักจะทำงานในเวอร์ชัน 12c หลังจากที่คุณล้างข้อมูลปลายทางหลักและทำให้พร้อมใช้งานสำหรับการเก็บถาวร Oracle ยังคงเก็บบันทึกการทำซ้ำไปยังปลายทางหลักโดยไม่รายงานข้อผิดพลาดหรือข้อความแสดงความล้มเหลวในไฟล์บันทึกการแจ้งเตือน ดังที่แสดงในตัวอย่างต่อไปนี้ที่ฉันสอบถาม v$archived_log :

SQL> เลือกเธรด#, ลำดับ#, ชื่อจาก 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 แถว

บทสรุป

Oracle ได้ทำการปรับปรุงที่สำคัญในการจัดการอัตโนมัติของการสลับปลายทางเก็บถาวรระหว่างปลายทางหลักและปลายทางสำรอง หวังว่าคุณจะสามารถใช้การสาธิตของฉันเพื่อใช้ประโยชน์จากฟังก์ชันนี้

การมีไฟล์เก็บถาวรสำรองช่วยคุณได้ดี แต่อย่าลืมว่า Oracle จะบันทึกข้อความแสดงข้อผิดพลาดเป็นระยะๆ ในไฟล์บันทึกการแจ้งเตือนเกี่ยวกับความล้มเหลวปลายทางหลัก จนกว่าปลายทางการเก็บถาวรหลักจะพร้อมอีกครั้ง

เรียนรู้เพิ่มเติมเกี่ยวกับบริการข้อมูลของเรา

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณสามารถเริ่มการสนทนากับเราได้