Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Đích lưu trữ thay thế trong Oracle

Lưu trữ cơ sở dữ liệu Oracle® cho phép bạn lưu giữ và lưu trữ dữ liệu lâu dài, nhưng điều gì sẽ xảy ra nếu bạn hết dung lượng?

Giới thiệu

Nếu đích lưu trữ đầy, Cơ sở dữ liệu Oracle của bạn có thể bị treo hoặc bị hỏng và bạn có thể gặp một trong các lỗi sau:

  • 0RA-00257 :Lỗi trình lưu trữ, chỉ kết nối nội bộ cho đến khi được giải phóng
  • ORA-16014 :Chuỗi nhật ký 2 # 1934 không được lưu trữ, không có điểm đến nào

Trong trường hợp này, bạn cần có đích lưu trữ thay thế để sử dụng khi đích lưu trữ ban đầu không thành công. Bạn có thể tận dụng mục đích lưu trữ thay thế trong trường hợp có bất kỳ lỗi nào (dung lượng, phần cứng, v.v.) trong đích lưu trữ chính.

Hãy xem qua phần trình bày nhanh để hiểu cách hoạt động của nó.

Demo phần một

Đầu tiên, tôi đặt đích đến của kho lưu trữ chính thành / u03 / primary_dest location , hiện được sử dụng 99%. Bạn có thể làm điều tương tự như một bài kiểm tra.

Sau đó, chạy các lệnh sau:

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 phần hai

Hãy thêm đích lưu trữ thay thế / u04 / alternate_dest , hệ thống có thể sử dụng nếu điểm đến chính không khả dụng.

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 phần ba

Bạn có thể liên kết đích lưu trữ chính và thay thế, và Oracle có thể chuyển đổi dự phòng sang vị trí lưu trữ thay thế khi vị trí chính đạt mức sử dụng 100%. Để điều đó hoạt động, bạn cần đặt đích lưu trữ chính, LOG_ARCHIVE_DEST_1 , là ALTERNATE cho đích lưu trữ thay thế, LOG_ARCHIVE_DEST_2 , như được hiển thị trong ví dụ sau:

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

Bạn có thể kiểm tra để xác nhận rằng bạn đã liên kết các điểm đến của kho lưu trữ một và hai. Bây giờ, Oracle sẽ không thể quay lại trang chính sau khi trang chính có không gian trống.

Demo phần bốn

Tiếp theo, tôi thực thi một số DML để đích lưu trữ đạt mức sử dụng 100%, được hiển thị trong kết quả sau:

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)

Bước năm

Oracle luôn cố gắng lưu trữ đến đích chính và tính năng tự động gửi lại tới đích chính hoạt động trong phiên bản 12c. Sau khi bạn dọn dẹp đích chính và làm cho nó có sẵn để lưu trữ, Oracle tiếp tục lưu trữ các bản ghi làm lại đến đích chính mà không báo cáo bất kỳ lỗi nào hoặc thông báo dự phòng trong tệp nhật ký cảnh báo, như được minh họa trong ví dụ sau khi tôi truy vấn v $ archived_log :

SQL> chọn chuỗi #, chuỗi #, tên từ 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 hàng được chọn.

Kết luận

Oracle đã thực hiện một cải tiến đáng kể trong việc quản lý tự động chuyển đổi lưu trữ giữa đích chính và đích thay thế. Hy vọng rằng bạn có thể sử dụng phần trình diễn của tôi để tận dụng chức năng này.

Việc có một kho lưu trữ thay thế sẽ phục vụ tốt cho bạn, nhưng hãy nhớ rằng Oracle ghi nhật ký liên tục các thông báo lỗi trong tệp nhật ký cảnh báo về lỗi trang đích chính cho đến khi đích lưu trữ chính sẵn sàng trở lại.

Tìm hiểu thêm về các dịch vụ dữ liệu của chúng tôi.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.