Mục đích: Fix trùng Pieces với datafile dung lượng lớn 1.9TB, 900GB
I.VẤN ĐỀ
II.NGUYÊN NHÂN, GIẢI PHÁP
1) Nguyên nhân thật sự
Log cho thấy nhiều channel cùng backup cùng một datafile 45 theo kiểu multisection:
-
backing up blocks 6553601 through 13107200 -
nhiều channel lần lượt
starting piece 2 - nhưng tất cả đều cố tạo cùng một tên file:
/backupdb/level0/smartf_20260526_CDB1_9j4p2tg1_1331
nên bị:
-
ORA-19504: failed to create file -
ORA-27038: created file already exists
Theo tài liệu Oracle, mỗi backup piece phải có tên duy nhất. Oracle khuyến nghị dùng biến thay thế trong FORMAT để sinh tên duy nhất; %U là cách đơn giản nhất vì Oracle nói %U mặc định tạo tên unique cho backup piece. Ngoài ra %p là piece number within the backup set.
2) Vì sao formatbị trùng?
Đang dùng:
FORMAT '/backupdb/level0/smartf_%T_%d_%u_%s'
Format này không có %p và cũng không dùng %U.
Trong khi Oracle mô tả:
-
%s= backup set number -
%t= backup set timestamp -
%p= piece number in the backup set -
%U= unique generated name for backup piece
Khi backup file lớn bằng SECTION SIZE, một backup set có thể sinh ra nhiều pieces/sections. Nếu format không chứa %p hoặc %U, nhiều channel có thể đụng cùng một tên file.
3) Cách sửa đúng nhất
Cách 1 — Khuyên dùng nhất: dùng %U
Thay format backup database thành:
FORMAT '/backupdb/level0/smartf_%T_%d_%U'
hoặc gọn hơn:
FORMAT '/backupdb/level0/%U'
Đây là cách an toàn nhất.
Cách 2 — Nếu muốn giữ pattern dễ đọc
Dùng thêm %p:
FORMAT '/backupdb/level0/smartf_%T_%d_s%s_p%p_u%u'
Khi đó mỗi piece sẽ có:
-
set number
%s -
piece number
%p -
unique part
%u
=> không bị trùng nữa.
4) Script sửa chuẩn
Tôi khuyên sửa cả 2 vấn đề trước đó luôn:
-
bỏ
MAXSETSIZE -
dùng
MAXPIECESIZE -
thêm
SECTION SIZE -
đổi
FORMATsang có%U
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backupdb/level0/auto_smartf_ctl%F';
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c3 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c4 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c5 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c6 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c7 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c8 DEVICE TYPE DISK MAXPIECESIZE 40G;
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP AS COMPRESSED BACKUPSET
INCREMENTAL LEVEL 0
DATABASE
SECTION SIZE 32G
FORMAT '/backupdb/level0/smartf_%T_%d_%U'
SKIP READONLY
SKIP OFFLINE
SKIP INACCESSIBLE
FILESPERSET 1
TAG LEVEL0;
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP AS COMPRESSED BACKUPSET
ARCHIVELOG ALL
FORMAT '/backupdb/level0/arc_%T_%d_%U'
FILESPERSET 20
TAG ARCH;
DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-2';
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
RELEASE CHANNEL c3;
RELEASE CHANNEL c4;
RELEASE CHANNEL c5;
RELEASE CHANNEL c6;
RELEASE CHANNEL c7;
RELEASE CHANNEL c8;
}
EXIT;
5) Vì sao FILESPERSET 1 vẫn chưa đủ?
Nhiều anh em nghĩ FILESPERSET 1 thì không thể trùng tên. Không đúng.
Với datafile rất lớn và có:
SECTION SIZE 32G
thì một datafile vẫn sinh ra nhiều piece trong cùng backup set.
Lúc đó:
-
FILESPERSET 1chỉ có nghĩa là 1 datafile / backup set - nhưng trong set đó vẫn có nhiều piece
-
nên vẫn phải có
%phoặc%U
6) Cần dọn file cũ không?
Có. Vì Oracle đã tạo được ít nhất một số file như:
/backupdb/level0/smartf_20260526_CDB1_9j4p2tg1_1331
Trước khi chạy lại, nên:
cd /backupdb/level0
ls -l smartf_20260526_CDB1_*
Trong RMAN:
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED BACKUP;
Nếu có file dở dang không catalog, xác minh rồi xóa OS-level.
7) Khuyến nghị thêm cho file 1.98TB
Với file cực lớn, nên backup riêng trước để dễ kiểm soát:
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c3 DEVICE TYPE DISK MAXPIECESIZE 40G;
ALLOCATE CHANNEL c4 DEVICE TYPE DISK MAXPIECESIZE 40G;
BACKUP AS COMPRESSED BACKUPSET
INCREMENTAL LEVEL 0
DATAFILE 45
SECTION SIZE 32G
FORMAT '/backupdb/level0/df45_%T_%d_%U'
TAG LEVEL0_DF45;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
RELEASE CHANNEL c3;
RELEASE CHANNEL c4;
}
Sau đó backup phần còn lại của DB.
8) Kết luận ngắn gọn
Anh đang có 2 vấn đề khác nhau:
Vấn đề 1
Datafile quá lớn so với:
MAXSETSIZE 40G
→ đã xử bằng cách bỏ MAXSETSIZE.
Vấn đề 2
Tên backup piece bị trùng vì:
FORMAT '/backupdb/level0/smartf_%T_%d_%u_%s'
không đủ unique cho multisection backup.
→ phải đổi thành:
FORMAT '/backupdb/level0/smartf_%T_%d_%U'
hoặc thêm %p.
Mindmap text
RMAN backup file lớn bị ORA-19504 / ORA-27038
│
├─ Bản chất
│ ├─ Nhiều channel cùng tạo backup piece
│ └─ Tên file output bị trùng
│
├─ Nguyên nhân
│ ├─ FORMAT hiện tại không có %p
│ ├─ Không dùng %U
│ ├─ Dùng multisection backup
│ └─ Một backup set sinh nhiều pieces
│
├─ Oracle rule
│ ├─ Mỗi backup piece phải có tên duy nhất
│ ├─ %p = piece number
│ └─ %U = unique backup piece name
│
├─ Cách sửa
│ ├─ FORMAT '/backupdb/level0/smartf_%T_%d_%U'
│ ├─ hoặc FORMAT có thêm %p
│ ├─ bỏ MAXSETSIZE
│ ├─ dùng MAXPIECESIZE 40G
│ └─ thêm SECTION SIZE 32G
│
└─ Khuyến nghị
├─ FILESPERSET 1
├─ backup riêng datafile 45 nếu cần
└─ dọn file backup dở trước khi chạy lại
III.THỦ TỤC CHI TIẾT
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- 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
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
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
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, 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/21c/23c/23ai, 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, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty