Thứ Ba, 26 tháng 5, 2026

Fix trùng Pieces với datafile dung lượng lớn 1.9TB, 900GB + Script backup

Mục đích: Fix trùng Pieces với datafile dung lượng lớn 1.9TB, 900GB 

I.VẤN ĐỀ

channel ORA_DISK_7: specifying datafile(s) in backup set input datafile file number=00045 name=+DATA/CDB1/0C359E63D67606DDE0631F1C020A3B2F/DATAFILE/mobifonereport_hchc.306.1221751493 backing up blocks 6553601 through 13107200 channel ORA_DISK_7: starting piece 2 at 2026-05-26 12:41:41 RMAN-03009: failure of backup command on ORA_DISK_7 channel at 05/26/2026 12:41:42 ORA-19504: failed to create file "/backupdb/level0/smartf_20260526_CDB1_9j4p2tg1_1331" ORA-27038: created file already exists Additional information: 1 channel ORA_DISK_7 disabled, job failed on it will be run on another channel channel ORA_DISK_1: finished piece 1 at 2026-05-26 12:42:07 piece handle=/backupdb/level0/smartf_20260526_CDB1_9j4p2tg1_1331 tag=LEVEL0 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:30 channel ORA_DISK_1: starting compressed incremental level 0 datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00045 name=+DATA/CDB1/0C359E63D67606DDE0631F1C020A3B2F/DATAFILE/mobifonereport_hchc.306.1221751493 backing up blocks 6553601 through 13107200 channel ORA_DISK_1: starting piece 2 at 2026-05-26 12:42:07 RMAN-03009: failure of backup command on ORA_DISK_1 channel at 05/26/2026 12:42:08 ORA-19504: failed to create file "/backupdb/level0/smartf_20260526_CDB1_9j4p2tg1_1331" ORA-27038: created file already exists Additional information: 1 channel ORA_DISK_1 disabled, job failed on it will be run on another channel channel ORA_DISK_6: finished piece 1 at 2026-05-26 12:42:33 piece handle=/backupdb/level0/smartf_20260526_CDB1_9o4p2tg2_1336 tag=LEVEL0 comment=NONE channel ORA_DISK_6: backup set complete, elapsed time: 00:00:55 channel ORA_DISK_6: starting compressed incremental level 0 datafile backup set channel ORA_DISK_6: specifying datafile(s) in backup set input datafile file number=00045 name=+DATA/CDB1/0C359E63D67606DDE0631F1C020A3B2F/DATAFILE/mobifonereport_hchc.306.1221751493 backing up blocks 6553601 through 13107200 channel ORA_DISK_6: starting piece 2 at 2026-05-26 12:42:33 RMAN-03009: failure of backup command on ORA_DISK_6 channel at 05/26/2026 12:42:34 ORA-19504: failed to create file "/backupdb/level0/smartf_20260526_CDB1_9j4p2tg1_1331" ORA-27038: created file already exists Additional information: 1 channel ORA_DISK_6 disabled, job failed on it will be run on another channel

Database có các tablespace, chỉ 1 datafile dung lượng rất lớn, 1.9TB, 900GB, 800GB...



(Datafile 1.9TB)
(Datafile 900GB)..

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 %ppiece 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 FORMAT sang 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 1 chỉ 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ó %p hoặ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ự động Backup Oracle Database 19c hàng ngày qua Crontab_New

Mục đích: Tự động Backup Oracle Database 19c hàng ngày qua Crontab

Check môi trường:

[oracle@node2 backupdb]$ env |grep ORA
ORACLE_UNQNAME=cdb1
ORACLE_SID=cdb12
ORACLE_HOSTNAME=node2.vietdba.com
ORACLE_BASE=/u01/app/oracle/product/19.3.0
ORACLE_TERM=xterm
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1


1. Tạo script backup:
1.1. Tạo scritp backup level 0
[root@node2 backupdb]# chown -Rf oracle:oinstall .
[root@node2 backupdb]# chmod -Rf 775 .
su - oracle
cd /backupdb;
mkdir  /backupdb/logs;
mkdir  /backupdb/level0;
mkdir  /backupdb/level1;

oracle@vietdba-db02 # vi /backupdb/level0.rman
#################################################
# By Tran Van Binh, 090.29.12.888                               #
# Script for backup full database vietdba #
#################################################
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backupdb/level0/auto_vietdba_ctl%F';
run {
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE;
CROSSCHECK ARCHIVELOG ALL;
delete noprompt expired archivelog all;
BACKUP AS COMPRESSED BACKUPSET DEVICE TYPE DISK INCREMENTAL LEVEL 0 DATABASE FORMAT '/backupdb/level0/vietdba_%T_%d_s%s_p%p_u%u'  skip readonly skip offline skip inaccessible FILESPERSET 1 SECTION SIZE 50G TAG LEVEL0; 
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP AS COMPRESSED BACKUPSET DEVICE TYPE DISK ARCHIVELOG ALL FORMAT '/backupdb/level0/arc_%T_%d_s%s_p%p_u%u' FILESPERSET 10 TAG ARCH;
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-2';
#sql ' BEGIN TEST_SEND_MAIL_BACKUP; END; ';
}
EXIT;

[oracle@node2 level0]$ more /backupdb/level0.sh 
#################################################
# By Tran Van Binh, 090.29.12.888                               #
# Script for backup full database vietdba #
#################################################
#su - oracle
logfile=`date +%Y%m%d`_level0.log 
export ORACLE_SID=cdb12
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / nocatalog cmdfile /backupdb/level0.rman  log /backupdb/logs/$logfile
exit


1.2. Tạo script backup level 1

oracle@vietdba-db02 # vi /backupdb/level1.rman
#################################################
# By Tran Van Binh, 090.29.12.888                               #
# Script for backup incremental database vietdba #
#################################################
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backupdb/level1/auto_vietdba_ctl%F';
run {
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE;
CROSSCHECK ARCHIVELOG ALL;
delete noprompt expired archivelog all;
BACKUP AS COMPRESSED BACKUPSET DEVICE TYPE DISK INCREMENTAL LEVEL 1 DATABASE FORMAT '/backupdb/level1/vietdba_%T_%d_%u_%s'  skip readonly skip offline skip inaccessible  FILESPERSET 10 MAXSETSIZE 40G TAG LEVEL1; 
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP AS COMPRESSED BACKUPSET DEVICE TYPE DISK ARCHIVELOG ALL FORMAT '/backupdb/level1/arc_%T_%d_%u_%s_%U' FILESPERSET 10 TAG ARCH;
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-1';
#sql ' BEGIN TEST_SEND_MAIL_BACKUP; END; ';
}
EXIT;

[oracle@node2 level0]$ more /backupdb/level1.sh
#################################################
# By Tran Van Binh, 090.29.12.888                               #
# Script for backup incremental database vietdba #
#################################################
logfile=`date +%Y%m%d`_level1.log 
export ORACLE_SID=cdb12
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
rman target / nocatalog cmdfile /backupdb/level1.rman  log /backupdb/logs/$logfile
exit

2. Phân quyền chạy 
$ cd /backupdb/

$ chmod +x *.sh

Yêu cầu phải có đầy đru các file sau:


(file swp bỏ qua)

3. Tạo crontab backup tự động trên OS, user oracle

#########backupdb_vietdba########
Vào bằng user oracle

(oracle)$ crontab -e
#################################################
# By Tran Van Binh, 090.29.12.888               #       
# Automation for backup database vietdba         #       
#################################################
00 00 * * 0,3 /backupdb/level0.sh             #00h00 ngay thu 4, CN level 0
00 00 * * 1,2,4,5,6 /backupdb/level1.sh       #00h00 Cac ngay con lai level 1

Sau đó lưu lại bằng phím Esc --> :wq (write and quite)

Kiểm tra lại nếu có 2 dòng như trên là thành công

Lưu ý: Nếu DB tải cao thì backup vào chủ nhật, các ngày còn lại backup incremental:

(oracle)$ crontab -e

00 00 * * 0 /backupdb/level0.sh                   #00h00  chủ nhật backup level 0
00 00 * * 1,2,3,4,5,6 /backupdb/level1.sh    #00h00 Các ngày còn lại backup level 1

(oracle)$ crontab -l 

Kiểm tra log lịch chạy bằng crontab sinh ra:

root@ol7 log]# tail -1000f /var/log/cron
Oct  1 21:22:03 ol7 run-parts(/etc/cron.daily)[9660]: finished logrotate
Oct  1 21:22:03 ol7 run-parts(/etc/cron.daily)[9648]: starting man-db.cron
Oct  1 21:22:07 ol7 run-parts(/etc/cron.daily)[9720]: finished man-db.cron
Oct  1 21:22:07 ol7 run-parts(/etc/cron.daily)[9648]: starting mlocate
Oct  1 21:22:09 ol7 run-parts(/etc/cron.daily)[9733]: finished mlocate
Oct  1 21:22:09 ol7 anacron[4831]: Job `cron.daily' terminated (produced output)
Oct  1 21:30:01 ol7 CROND[11327]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct  1 21:40:01 ol7 CROND[13559]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct  1 21:42:03 ol7 anacron[4831]: Job `cron.weekly' started
Oct  1 21:42:03 ol7 anacron[4831]: Job `cron.weekly' terminated
Oct  1 21:42:03 ol7 anacron[4831]: Normal exit (2 jobs run)
Oct  1 21:50:01 ol7 CROND[15624]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct  1 22:00:01 ol7 CROND[17775]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct  1 22:01:01 ol7 CROND[17980]: (root) CMD (run-parts /etc/cron.hourly)
Oct  1 22:01:01 ol7 run-parts(/etc/cron.hourly)[17980]: starting 0anacron
Oct  1 22:01:01 ol7 run-parts(/etc/cron.hourly)[17996]: finished 0anacron
Oct  1 22:01:01 ol7 run-parts(/etc/cron.hourly)[17980]: starting mcelog.cron
Oct  1 22:01:01 ol7 run-parts(/etc/cron.hourly)[18002]: finished mcelog.cron
Oct  1 22:10:01 ol7 CROND[19960]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct  1 22:15:36 ol7 crontab[21130]: (oracle) BEGIN EDIT (oracle)
Oct  1 22:15:48 ol7 crontab[21130]: (oracle) REPLACE (oracle)
Oct  1 22:15:48 ol7 crontab[21130]: (oracle) END EDIT (oracle)
Oct  1 22:15:52 ol7 crontab[21188]: (oracle) LIST (oracle)
Oct  1 22:17:08 ol7 crontab[21516]: (oracle) BEGIN EDIT (oracle)
Oct  1 22:17:18 ol7 crontab[21516]: (oracle) REPLACE (oracle)
Oct  1 22:17:18 ol7 crontab[21516]: (oracle) END EDIT (oracle)
Oct  1 22:18:01 ol7 crond[3184]: (oracle) RELOAD (/var/spool/cron/oracle)
Oct  2 00:00:01 ol7 CROND[22178]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Oct  2 00:00:01 ol7 CROND[22179]: (oracle) CMD (/backupdb/level1.sh    #C\303\241ng\303\240c\303\262?i backup level 1)
Oct  2 00:00:47 ol7 crontab[22437]: (oracle) LIST (oracle)
Oct  2 00:00:58 ol7 crontab[22469]: (oracle) BEGIN EDIT (oracle)
Oct  2 00:01:14 ol7 crontab[22469]: (oracle) REPLACE (oracle)
Oct  2 00:01:14 ol7 crontab[22469]: (oracle) END EDIT (oracle)
Oct  2 00:01:22 ol7 crontab[22533]: (oracle) LIST (oracle)
Oct  2 00:01:36 ol7 crontab[22583]: (oracle) LIST (oracle)
Oct  2 00:01:01 ol7 crond[3184]: (oracle) RELOAD (/var/spool/cron/oracle)


4. Kiểm tra lại bản backup

RMAN > list backup;

RMAN> list backup summary;

RMAN> list backup of datafile 1;

SQL> select command_id, start_time, end_time, status,INPUT_TYPE, input_bytes_display, output_bytes_display, time_taken_display, round(compression_ratio,2) RATIO , input_bytes_per_sec_display, output_bytes_per_sec_display
from v$rman_backup_job_details 
where trunc(end_time)>=trunc(sysdate-120)
order by end_time desc; 

Trong đó:

- Start_time: là thời gian bắt đầu chạy backup
- End_Time: Thời gian kết thúc backup
- Status: Completed là hoàn thành (nếu lỗi báo Fail, còn 1 trạng thái nữa là Completed with warning, check kỹ warning)
- Input_type: DB FULL, là backpu full DB
- Input_bytes_display: Dung lượng đầu vào backup 3.21GB
- Output_bytes_display: Dung lượng bản backup 2.98GB, để sizing vùng backup cần cộng các bản backup của các ngày là ra
- Time_taken_display: Thời gian backup, 00:01:01 là 1 phút, 1s

Khi có lỗi backup kiểm tra log file: /backupdb/logs/$logfile (trong dó logfile=`date +%Y%m%d`_level1.log)

--Chạy luôn 1 bản full
[oracle@node2 backupdb]$ /backupdb/level0.sh

RMAN-03002: failure of backup command at 05/26/2026 12:21:58
RMAN-06183: datafile or datafile copy +DATA/CDB1/0C359E63D67606DDE0631F1C020A3B2F/DATAFILE/mobifonereport_hchc.306.1221751493 (file number 45) larger than MAXSETSIZE

Recovery Manager complete.
=============================
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

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master