Trong quá trình quản lý redo log, bạn có thể sẽ có những lăn tăn:- Sizing redo log như thế nào để phù hợp?
- Tạo lại online redo log và cách tạo lại trong giờ hành chính có an toàn không?
- Các lỗi có thể sẽ gặp nếu không sizing chuẩn: Treo DB khi DML dồn dập.
- Sizing redo log như thế nào để phù hợp?
- Tạo lại online redo log và cách tạo lại trong giờ hành chính có an toàn không?
- Các lỗi có thể sẽ gặp nếu không sizing chuẩn: Treo DB khi DML dồn dập.
Hãy đọc hết bài viết này để tìm được câu trả lời thỏa đáng.
Vấn đề gặp phải
-- Monitor Alert log xuất hiện cảnh báo:
Thread 2 cannot allocate new log, sequence 362494
Checkpoint not complete
-- Số lần switch log quá nhiều, lên đến 95 lần/1 giờ:
-- 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;
Nguyên nhân:
Size redo log quá nhỏ, các group đều ở trạng thái CURENT, ACTIVE
Khắc phục:
Sizing lại online redo log, do size online redo log quá nhỏ, tính toán lượng archived log sinh ra 1 ngày đảm bảo 1h từ 3 lần switch log, tất nhiên 4-6 lần vẫn OK., dùng 1 trong 2 cách sau:
* Tăng size của online redo logs: Phải tạo lại chứ ko resize được
* Bổ sung thêm redo log groups (cách này trong 1 số trường hợp switch log không quá lớn)
alter database add logfile thread 1 group 1 ('+DATA','+RECO') size 1G;
alter database add logfile thread 2 group 11 ('+DATA','+RECO') size 1G;
Chi tiết thủ tục như sau:
THỦ TỤC TẠO LẠI ONLINE REDO LOG
VỚI ASM
-- Note: Không càn cấu hình OMF
-- Monitor đảm bảo mỗi group tối thiểu 02 member trên 2 phân vùng khác nhau
--+FRA/OCSGWRPT/ONLINELOG/group_1.257.1077367961
--+DATA1/OCSGWRPT/ONLINELOG/group_1.262.1077367961
select * from v$logfile order by 1;
--Status đảm bảo luôn có group inactive
select * from v$log order by 1;
set echo off set feedback off set linesize 120 set pagesize 35 set trim on set trims on set lines 120 col group# format 999 col thread# format 999 col member format a70 wrap col status format a10 col archived format a10 col fsize format 999 heading "Size (MB)" select l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) fsize from v$log l, v$logfile f where f.group# = l.group# order by 1,2
alter database add logfile thread 1 group 5 ('/u09/oracle/data/DBAViet/redo01a.log','/u10/oracle/data/DBAViet/redo01b.log') size 1G;
--FRA 897GB DATA1 con 41GB, DATA2 conf 61GB --> Ko them vao DATA1, DATA2; DATA3 conf 1.3TB
select * from v$asm_diskgroup;
alter database add logfile thread 1 group 5 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 2 group 6 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 1 group 7 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 2 group 8 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 1 group 9 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 2 group 10 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 1 group 11 ('+DATA3','+FRA') size 2G;
alter database add logfile thread 2 group 12 ('+DATA3','+FRA') size 2G;
select * from v$logfile order by 1;
--Status đảm bảo luôn có group inactive
select * from v$log order by 1;
alter system switch logfile;
select * from v$logfile order by 1;
--Status đảm bảo luôn có group inactive thi drop duoc
select * from v$log order by 1;
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database drop logfile group 4;
VỚI FILE SYSTEM
--Method to drop and recreate online redolog files with 2 members to each group
--1.Firstly ORACLE will never allow you to drop the current ONLINE redolog file –
-- Size, status logfile group, thread
select * from v$log;
--Group# Thread# Sequence# BytesMembers Archived
--1 1 17449 524288000 1 YES INACTIVE 11950575940971 28/05/2017 1:36:20 AM
--2 1 17448 524288000 1 YES INACTIVE 11949968296967 27/05/2017 2:05:34 AM
--3 2 26642 524288000 1 YES INACTIVE 11951023181485 28/05/2017 6:30:26 PM
--4 2 26643 524288000 1 YES INACTIVE 11951187419487 29/05/2017 1:35:35 AM
--5 2 26644 524288000 1 YES INACTIVE 11951568250526 29/05/2017 3:17:19 PM
--6 2 26645 524288000 1 NO CURRENT 11951840525221 30/05/2017 1:14:52 AM
--7 1 17450 524288000 1 YES INACTIVE 11951187419492 29/05/2017 1:35:36 AM
--8 1 17451 524288000 1 NO CURRENT 11951840525227 30/05/2017 1:14:53 AM
-- D/s duong dan logfile
select * from v$logfile order by 1;
--1 ONLINE /data/oradata/dbaviet/redo01.log NO
--2 ONLINE /data/oradata/dbaviet/redo02.log NO
--3 ONLINE /data/oradata/dbaviet/redo03.log NO
--4 ONLINE /data/oradata/dbaviet/redo04.log NO
--5 ONLINE /data/oradata/dbaviet/redo05.log NO
--6 ONLINE /data/oradata/dbaviet/redo06.log NO
--7 ONLINE /data/oradata/dbaviet/redo07.log NO
--8 ONLINE /data/oradata/dbaviet/redo08.log NO
--10 STANDBY /data/oradata/dbaviet/standby_redo10.log NO
--11 STANDBY /data/oradata/dbaviet/standby_redo11.log NO
--12 STANDBY /data/oradata/dbaviet/standby_redo12.log NO
--13 STANDBY /data/oradata/dbaviet/standby_redo13.log NO
--14 STANDBY /data/oradata/dbaviet/standby_redo14.log NO
--15 STANDBY /data/oradata/dbaviet/standby_redo15.log NO
alter database drop logfile group 10;
alter database drop logfile group 11;
alter database drop logfile group 12;
alter database drop logfile group 13;
alter database drop logfile group 14;
alter database drop logfile group 15;
--Intention is to drop and recreate these online logs with a different size.
select * from v$log;
--Group# Thread# Sequence# BytesMembers Archived
--1 1 17449 524288000 1 YES INACTIVE 11950575940971 28/05/2017 1:36:20 AM
--2 1 17448 524288000 1 YES INACTIVE 11949968296967 27/05/2017 2:05:34 AM
--3 2 26642 524288000 1 YES INACTIVE 11951023181485 28/05/2017 6:30:26 PM
--4 2 26643 524288000 1 YES INACTIVE 11951187419487 29/05/2017 1:35:35 AM
--5 2 26644 524288000 1 YES INACTIVE 11951568250526 29/05/2017 3:17:19 PM
--6 2 26645 524288000 1 NO CURRENT 11951840525221 30/05/2017 1:14:52 AM
--7 1 17450 524288000 1 YES INACTIVE 11951187419492 29/05/2017 1:35:36 AM
--8 1 17451 524288000 1 NO CURRENT 11951840525227 30/05/2017 1:14:53 AM
--+ Begin dropping the redolog groups with STATUS=’INACTIVE’ – As mentioned earlier Oracle will not allow you to drop a current online redolog file.
alter database drop logfile group 1;
alter database drop logfile group 2;
--alter database drop logfile group 3;
alter database drop logfile group 4;
alter database drop logfile group 5;
alter database drop logfile group 7;
cd /data/oradata/prepaid/
mv /data/oradata/prepaid/redo01.log /data/oradata/dbaviet/redo01.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo02.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo03.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo04.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo05.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo06.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo07.log.bkp
mv /data/oradata/dbaviet/redo01.log /data/oradata/dbaviet/redo08.log.bkp
--Recreate group with both members
select * from v$log;
select * from v$logfile;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database add logfile thread 1 group 1 '/u02/oradata/dbaviet/redo01.log' size 512m;
alter database add logfile thread 1 group 2 '/u02/oradata/dbaviet/redo02.log' size 512m;
--alter database add logfile thread 2 group 3 '/u02/oradata/dbaviet/redo03.log' size 512m;
alter database add logfile thread 2 group 4 '/u02/oradata/dbaviet/redo04.log' size 512m;
alter database add logfile thread 2 group 5 '/u02/oradata/dbaviet/redo05.log' size 512m;
alter database add logfile thread 2 group 6 '/u02/oradata/dbaviet/redo06.log' size 512m;
alter database add logfile thread 1 group 7 '/u02/oradata/dbaviet/redo07.log' size 512m;
-- Tao lai group 8 thread 1: Van con /data
-- Group# 8 INACTIVE thi drop logfile
select * from v$log;
select * from v$logfile
alter database drop logfile group 8;
alter database add logfile thread 1 group 8 '/u02/oradata/dbaviet/redo08.log' size 512m;
alter system switch logfile;
ĐỌC THÊM:
Hy vọng hữu ích cho bạn.
=============================* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
Khi nào cần tạo lại online redo log, sizing như thế nào cho chuẩn trong Oracle Database, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty