Quản trị Redo log Archivelog trong Oracle database

Cấu hình quản trị redo log, archivelog trong Oracle Database liên quan đến việc thiết lập và quản lý các nhóm redo log, các tệp redo log và các tham số liên quan để đảm bảo hiệu suất và khả năng phục hồi cao của cơ sở dữ liệu. Dưới đây là các bước chi tiết để cấu hình và quản lý redo log:

REDO LOG

1. Kiểm tra hiện trạng redo log

Trước khi thay đổi hoặc thêm các redo log, kiểm tra trạng thái hiện tại của các nhóm redo log bằng cách sử dụng lệnh sau:

SELECT GROUP#, THREAD#, SEQUENCE#, BYTES/1024/1024, MEMBERS, ARCHIVED, STATUS FROM V$LOG;

SELECT GROUP#, MEMBER, IS_RECOVERY_DEST_FILE FROM V$LOGFILE;

word image 2416 1

ở đây chúng ta đang có 5 group redo log, thead# 1 là môi trường single, dung lượng file redo log 200MB….số member trong mỗi group…trạng thái file

Khuyến cáo: database an toàn là có tối thiểu 3 group redo log, mỗi group tối thiểu 2 member.

Dung lượng file redo log phụ thuộc vào từng database mà chúng ta set cho phù hợp, trung bình hệ thống switch log 15 phút 1 lần là OK.

2. Tạo nhóm redo log mới

Để thêm một nhóm redo log mới, sử dụng lệnh ALTER DATABASE ADD LOGFILE. Ví dụ, để tạo một nhóm redo log mới với hai tệp log, mỗi tệp có kích thước 500MB:

ALTER DATABASE ADD LOGFILE GROUP 6 (

‘/path/to/redo4a.log’,

‘/path/to/redo4b.log’

) SIZE 500M;

Hoặc sử dụng OMF tạo file tự động:

ALTER DATABASE ADD LOGFILE GROUP 6 SIZE 500M;

word image 2416 2

3. Thêm tệp redo log vào một nhóm hiện có

Nếu bạn muốn thêm một tệp redo log vào một nhóm hiện có, sử dụng lệnh ALTER DATABASE ADD LOGFILE MEMBER. Khi add logfile member vào 1 group có sẵn chúng ta ko thể sử dụng OMF được mà phải chỉ rõ đường dẫn cho file redo log.

ALTER DATABASE ADD LOGFILE MEMBER ‘/path/to/redo3c.log’ TO GROUP 3;

4. Xóa tệp redo log từ một nhóm, xoá group redo log

ALTER DATABASE DROP LOGFILE GROUP 1;

ALTER DATABASE DROP LOGFILE MEMBER ‘/path/to/redo3c.log’;

## thay đổi kích thường file redo log:

Chúng ta không thể thay đổi được kích thước của redo log, để thay đổi thì chỉ có thể tạo mới group sau đó xoá group cũ mà thôi.

— Monitor số lần switch log theo từng giờ và so sánh với các ngày trước trong 31 ngày gần nhất

select

to_char(COMPLETION_TIME,’YYYY-MM-DD’) day,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’00’,1,0)),’999′) “00h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’01’,1,0)),’999′) “01h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’02’,1,0)),’999′) “02h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’03’,1,0)),’999′) “03h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’04’,1,0)),’999′) “04h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’05’,1,0)),’999′) “05h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’06’,1,0)),’999′) “06h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’07’,1,0)),’999′) “07h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’08’,1,0)),’999′) “08h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’09’,1,0)),’999′) “09h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’10’,1,0)),’999′) “10h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’11’,1,0)),’999′) “11h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’12’,1,0)),’999′) “12h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’13’,1,0)),’999′) “13h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’14’,1,0)),’999′) “14h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’15’,1,0)),’999′) “15h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’16’,1,0)),’999′) “16h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’17’,1,0)),’999′) “17h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’18’,1,0)),’999′) “18h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’19’,1,0)),’999′) “19h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’20’,1,0)),’999′) “20h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’21’,1,0)),’999′) “21h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’22’,1,0)),’999′) “22h”,

to_char(sum(decode(substr(to_char(COMPLETION_TIME,’HH24′),1,2),’23’,1,0)),’999′) “23h”,

round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024,0)||’ GB’ “Total GB in a day”,COUNT(*) “Total switch log in a day”

from v$archived_log

where to_date(COMPLETION_TIME) > sysdate-40

and dest_id=1

group by to_char(COMPLETION_TIME,’YYYY-MM-DD’)

order by day desc;

 

CẤU HÌNH CHẾ ĐỘ ARCHIVELOG

Để đảm bảo rằng các redo log được lưu trữ (archived), bạn nên chạy cơ sở dữ liệu trong chế độ ARCHIVELOG. Điều này cũng là điều kiện tiên quyết để sử dụng nhiều tính năng phục hồi của Oracle:

— Kiểm tra chế độ ARCHIVELOG

ARCHIVE LOG LIST;

— Kích hoạt chế độ ARCHIVELOG nếu chưa được kích hoạt

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER DATABASE ARCHIVELOG;

ALTER DATABASE OPEN;

Cấu hình nơi lưu Archivelog:

show parameter archive_dest

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = ‘LOCATION=/path/to/archive’;

ALTER SYSTEM SET LOG_ARCHIVE_FORMAT = ‘arch_%t_%s_%r.arc’;

Kiểm tra và quản lý các tệp archive redo log

SELECT * FROM V$LOG_HISTORY ORDER BY SEQUENCE#;

SELECT * FROM V$ARCHIVE_DEST;

Backup:

RMAN> BACKUP ARCHIVELOG ALL;

Cấu hình Xoá Archivelog tự động sau khi backup:

CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DISK;

## xoá sau khi đã được backup 2 lần =>> có thể chuyển về 1 lần.

Hoặc xoá sau khi backup thành công:

RUN {

BACKUP ARCHIVELOG ALL DELETE INPUT;

}

Thủ tục xoá archivelog: khi hệ thống đầy ổ => cần thêm space => xoá archivelog (không khuyến khích)
archivelog được xoá bằng tiện ích RMAN

Crosscheck lại các archive log:
crosscheck archivelog all;

Kiểm tra các archive log hiện có:
list archivelog all;

Xóa archive log dựa trên thời gian:
delete archivelog until time ‘sysdate-3’;
delete archivelog from time ‘sysdate-1’;
delete archivelog from time ‘sysdate-1’ until time ‘sysdate-2’;

Xóa archive log dựa trên số sequence của nó:
delete archivelog from sequence 1000;
delete archivelog until sequence 1500;
delete archivelog from sequence 1000 until sequence 1500;

Xóa các archive log đã được backup
delete expired archivelog all;

Xóa tất cả archive log hiện có:
delete archivelog all;

Xóa bắt buộc archive log, Sử dụng trong trường hợp không xóa archive log được, do Oracle nhận thấy archive log vẫn còn cần thiết cho standby database.
delete force archive log all;
delete force archive log until time ‘sysdate-3’;

Xóa archive log trên standby database
delete archivelog all completed before ‘sysdate-2’;

Xoa archivelog tu dong bang crontab
.tao file kich ban xoa, gán quyền thực thi cho file

cd
vi delete_archivelog_auto.sh

#!/bin/bash
# Script to delete archived logs using RMAN

# Set Oracle environment variables (change accordingly)
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export ORACLE_SID=oradb
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

# Run RMAN command to delete archived logs
rman target / <<EOF
DELETE noprompt ARCHIVELOG ALL;
EXIT;
EOF

echo “Xoa thanh cong.” >> log_delete.txt
date >> log_delete.txt

–gán quyền thực thi cho file
chmod +x delete_archivelog_auto.sh

.tao crontab thuc hien tu dong script

crontab -e
15 10 * * * /home/oracle/delete_archivelog_auto.sh

:wq!

crontab –l
check danh sach crontab dang chay

xoa crontab:
crontab –r

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận