Thứ Hai, 24 tháng 8, 2026

Đặt các tham số chuẩn Oracle

Có một điểm rất quan trọng cần chuẩn hóa trong runbook: không nên để cùng một tham số xuất hiện ở nhiều file mà không biết file nào thắng. Oracle 19c hiện hướng dẫn dùng /etc/sysctl.d/97-oracle-database-sysctl.conf; HugePages có thể tách riêng /etc/sysctl.d/99-nr_hugepages.conf. Các giá trị Oracle công bố cho fs.file-max, fs.aio-max-nr, kernel.sem, network buffer... là minimum, không phải cứ tăng cao hơn là database nhanh hơn. (Oracle Docs)

RUNBOOK CHUẨN HÓA OS/KERNEL/MEMORY CHO ORACLE DATABASE RAC 19c TRÊN LINUX

1. Mục đích

Runbook này chuẩn hóa các tham số Linux phục vụ Oracle Database/RAC 19c, tập trung vào:

  • SGA/PGA

  • HugePages

  • memlock

  • Shared Memory

  • Async I/O

  • Open Files

  • Semaphore

  • Network kernel parameters

  • Transparent HugePages

  • Kiểm tra xung đột giữa /etc/sysctl.conf/etc/sysctl.d/*.conf

  • Kiểm tra xung đột giữa /etc/security/limits.conf/etc/security/limits.d/*.conf

Nguyên tắc quan trọng:

Không chỉ kiểm tra file cấu hình. Giá trị cuối cùng kernel/process thực sự nhận mới là giá trị quyết định.


2. Phân biệt đúng 4 nhóm file

2.1 Kernel parameters

Có thể tồn tại trong:

/etc/sysctl.conf

và:

/etc/sysctl.d/*.conf

Ví dụ:

/etc/sysctl.d/97-oracle-database-sysctl.conf
/etc/sysctl.d/99-nr_hugepages.conf

Các tham số thuộc nhóm này:

fs.aio-max-nr
fs.file-max

kernel.sem
kernel.shmall
kernel.shmmax
kernel.shmmni
kernel.panic_on_oops

net.ipv4.ip_local_port_range
net.core.rmem_default
net.core.rmem_max
net.core.wmem_default
net.core.wmem_max

vm.nr_hugepages
vm.swappiness

2.2 User/process limits

Có thể tồn tại trong:

/etc/security/limits.conf

và:

/etc/security/limits.d/*.conf

Ví dụ:

/etc/security/limits.d/oracle-database-preinstall-19c.conf

Các tham số:

nofile
nproc
stack
memlock

thuộc nhóm này.

Không đặt memlock, nofile, nproc, stack trong sysctl.conf.


3. Baseline Oracle 19c

Oracle 19c công bố các minimum kernel parameters quan trọng:

ParameterOracle minimum
fs.aio-max-nr1048576
fs.file-max6815744
kernel.sem250 32000 100 128
kernel.shmmni4096
kernel.panic_on_oops1
net.ipv4.ip_local_port_range9000 65500
net.core.rmem_default262144
net.core.rmem_max4194304
net.core.wmem_default262144
net.core.wmem_max1048576

Lưu ý:

Đây là minimum requirement của Oracle. Nếu giá trị hiện tại lớn hơn và có lý do kỹ thuật hợp lệ thì không giảm một cách máy móc.


4. Kiểm tra toàn bộ cấu hình trước khi thay đổi

Bước 1 – Backup

Thực hiện trên từng node:

mkdir -p /root/oracle_os_backup_$(date +%Y%m%d)

cp -p /etc/sysctl.conf \
/root/oracle_os_backup_$(date +%Y%m%d)/

cp -pr /etc/sysctl.d \
/root/oracle_os_backup_$(date +%Y%m%d)/

cp -p /etc/security/limits.conf \
/root/oracle_os_backup_$(date +%Y%m%d)/

cp -pr /etc/security/limits.d \
/root/oracle_os_backup_$(date +%Y%m%d)/

5. Phát hiện tham số bị khai báo trùng

Đây là bước bắt buộc.

Kernel

grep -RniE \
"fs\.aio-max-nr|fs\.file-max|kernel\.sem|kernel\.shmall|kernel\.shmmax|kernel\.shmmni|panic_on_oops|rmem|wmem|ip_local_port_range|nr_hugepages|swappiness" \
/etc/sysctl.conf /etc/sysctl.d/

Ví dụ có thể phát hiện:

/etc/sysctl.conf:
fs.aio-max-nr=1048576

/etc/sysctl.d/97-oracle-database-sysctl.conf:
fs.aio-max-nr=1048576

Không nên duy trì hai bản cấu hình giống nhau không cần thiết.


Limits

grep -RniE \
"oracle.*(nofile|nproc|stack|memlock)|grid.*(nofile|nproc|stack|memlock)" \
/etc/security/limits.conf /etc/security/limits.d/

Đặc biệt kiểm tra:

memlock
nofile
nproc
stack

6. Chuẩn hóa file kernel Oracle

Khuyến nghị sử dụng:

/etc/sysctl.d/97-oracle-database-sysctl.conf

thay vì rải các Oracle parameter khắp nhiều file.

Tạo/sửa:

vi /etc/sysctl.d/97-oracle-database-sysctl.conf

Baseline:

fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.panic_on_oops = 1

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144
net.core.rmem_max = 4194304

net.core.wmem_default = 262144
net.core.wmem_max = 1048576

Không giảm một giá trị production hiện tại chỉ vì nó lớn hơn minimum của Oracle.

Ví dụ:

fs.aio-max-nr = 3145728

nếu đã được sizing dựa trên workload thì không cần hạ xuống 1048576.


7. kernel.shmmax

Oracle 19c đưa minimum:

kernel.shmmax >= 50% Physical RAM

đơn vị là byte.

Ví dụ RAM 128GB:

128 × 1024³
= 137438953472 bytes

50%:

68719476736

Minimum:

kernel.shmmax = 68719476736

Tuy nhiên không cần thiết phải giới hạn đúng 50%.

Nếu oracle-database-preinstall-19c đã đặt một giá trị lớn như:

kernel.shmmax = 4398046511104

thì đây không phải vấn đề cần sửa chỉ vì nó lớn hơn RAM.

Điểm quan trọng:

kernel.shmmax >= Oracle requirement

8. kernel.shmall

kernel.shmall được tính theo pages, không phải byte.

Oracle yêu cầu:

SHMALL >= SHMMAX / PAGE_SIZE

Kiểm tra page size:

getconf PAGE_SIZE

Thông thường:

4096

Ví dụ:

SHMMAX = 68719476736
PAGE_SIZE = 4096

thì:

SHMALL >=
68719476736 / 4096
=
16777216 pages

Cấu hình:

kernel.shmall = 16777216

Nếu hệ thống đã có shmall lớn hơn requirement thì không cần giảm.


9. HugePages

9.1 Kiểm tra HugePage Size

Không hard-code ngay 2MB.

Phải kiểm tra:

grep Hugepagesize /proc/meminfo

Ví dụ:

Hugepagesize: 2048 kB

khi đó:

HugePage Size = 2MB

10. HugePages chỉ sizing cho SGA

Nguyên tắc:

Physical RAM
      |
      +----- HugePages -----> SGA
      |
      +----- Normal Pages --> PGA
                         --> OS
                         --> Grid
                         --> ASM
                         --> Agents
                         --> Page Cache

Không tính:

HugePages = SGA + PGA

Mà tính:

HugePages ≈ Total SGA sử dụng HugePages trên NODE

11. Công thức sơ bộ

Nếu HugePage Size = 2MB:

HugePages
≈
SGA(GB) × 1024 / 2

Ví dụ:

SGA = 72GB

thì giá trị lý thuyết:

72 × 1024 / 2
=
36864 pages

Không nên lấy 36864 rồi mặc định dùng ngay cho production.

Oracle khuyến nghị dùng:

hugepages_settings.sh

theo MOS Note 401749.1.

Script cần chạy khi tất cả database cần HugePages đang hoạt động.


12. Cấu hình HugePages

Oracle 19c hướng dẫn có thể tách riêng:

vi /etc/sysctl.d/99-nr_hugepages.conf

Ví dụ sau khi script xác định cần:

36874

thì:

vm.nr_hugepages = 36874

Apply:

sysctl -p /etc/sysctl.d/99-nr_hugepages.conf

Kiểm tra:

sysctl vm.nr_hugepages

grep Huge /proc/meminfo

Quan trọng:

vm.nr_hugepages

trong file chưa đủ để chứng minh Linux đã reserve được toàn bộ.

Phải xem:

HugePages_Total

13. Nếu nr_hugepages khác HugePages_Total

Ví dụ:

vm.nr_hugepages = 36874

nhưng:

HugePages_Total: 32000

nghĩa là Linux chưa allocate được toàn bộ HugePages yêu cầu.

Một nguyên nhân thường gặp:

Memory fragmentation

Trong trường hợp này Oracle hướng dẫn có thể cần reboot để HugePages được reserve sớm khi hệ điều hành khởi động.


14. memlock

memlock không nằm trong sysctl.

Cấu hình tại:

/etc/security/limits.conf

hoặc tốt hơn:

/etc/security/limits.d/oracle-database-preinstall-19c.conf

Oracle 19c hướng dẫn khi HugePages được enable:

memlock >= 90% Physical RAM

Đơn vị:

KB

Công thức:

memlock(KB)
=
RAM(GB)
× 1024
× 1024
× 90%

15. Ví dụ RAM 128GB

128 × 1024 × 1024 × 0.9
≈ 120795955 KB

Cấu hình:

oracle soft memlock 120795955
oracle hard memlock 120795955

Nếu Grid owner cũng cần cấu hình theo thiết kế của hệ thống:

grid soft memlock 120795955
grid hard memlock 120795955

Lưu ý đặc biệt:

Exadata:
memlock = unlimited

theo hướng dẫn Oracle dành cho HugePages.


16. Kiểm tra memlock thực tế

Sau khi thay đổi phải logout/login lại.

su - oracle
ulimit -l

Ví dụ:

120795955

Không được chỉ nhìn:

/etc/security/limits.conf

rồi kết luận đã thành công.


17. Open Files – nofile

Phải phân biệt hai tham số:

fs.file-max

và:

nofile

Chúng hoàn toàn khác nhau.

fs.file-max:

System-wide maximum file handles

nofile:

Per-user/process open file descriptors

18. fs.file-max

Oracle minimum:

fs.file-max = 6815744

Đặt trong:

/etc/sysctl.d/97-oracle-database-sysctl.conf

Kiểm tra:

sysctl fs.file-max
cat /proc/sys/fs/file-max

19. nofile

Cấu hình tại:

/etc/security/limits.d/oracle-database-preinstall-19c.conf

Ví dụ:

oracle soft nofile 65536
oracle hard nofile 65536

Đây là cấu hình production phổ biến và phù hợp với hard limit do Oracle preinstall package thiết lập.

Kiểm tra:

su - oracle
ulimit -Sn
ulimit -Hn

Kỳ vọng:

65536
65536

20. nproc

Ví dụ baseline:

oracle soft nproc 16384
oracle hard nproc 16384

Kiểm tra:

ulimit -Su
ulimit -Hu

Lưu ý:

nproc phải được đánh giá cùng:

Oracle PROCESSES
Grid processes
OS processes
Agents

Không tăng tùy tiện để chữa vấn đề connection storm.


21. stack

Baseline Oracle preinstall:

oracle soft stack 10240
oracle hard stack 32768

Đơn vị:

KB

Kiểm tra:

ulimit -Ss
ulimit -Hs

22. Async I/O

Oracle minimum:

fs.aio-max-nr = 1048576

Kiểm tra:

sysctl fs.aio-max-nr

cat /proc/sys/fs/aio-max-nr
cat /proc/sys/fs/aio-nr

aio-max-nr là giới hạn concurrent outstanding asynchronous I/O requests.

Không nên tăng theo RAM.

Ví dụ sai:

RAM tăng gấp đôi
→ aio-max-nr tăng gấp đôi

Không có công thức Oracle như vậy.

Sizing cao hơn minimum phải dựa vào workload.


23. Transparent HugePages

Standard HugePages và Transparent HugePages là hai cơ chế khác nhau.

Với Oracle Database 19c theo mô hình static HugePages truyền thống, kiểm tra:

cat /sys/kernel/mm/transparent_hugepage/enabled

Mục tiêu:

always madvise [never]

Nếu chưa disable thì phải thực hiện theo phương pháp phù hợp với Oracle Linux/kernel đang sử dụng và kiểm tra lại sau reboot.


24. Oracle Database Memory

Khi dùng HugePages, không dùng AMM.

Kiểm tra:

SHOW PARAMETER memory_target;
SHOW PARAMETER memory_max_target;

SHOW PARAMETER sga_target;
SHOW PARAMETER sga_max_size;

SHOW PARAMETER pga_aggregate_target;
SHOW PARAMETER pga_aggregate_limit;

SHOW PARAMETER use_large_pages;

Với cấu hình HugePages production:

MEMORY_TARGET     = 0
MEMORY_MAX_TARGET = 0

Sử dụng:

SGA_TARGET
SGA_MAX_SIZE

PGA_AGGREGATE_TARGET
PGA_AGGREGATE_LIMIT

25. USE_LARGE_PAGES

Sau khi HugePages và memlock đã được kiểm chứng đầy đủ, production có thể cấu hình:

ALTER SYSTEM SET use_large_pages='ONLY'
SCOPE=SPFILE SID='*';

Ý nghĩa:

HugePages đủ
     |
     +----> Oracle START
             SGA dùng Large Pages

HugePages thiếu
     |
     +----> Oracle không START

Ưu điểm là tránh tình trạng database âm thầm chạy bằng regular/mixed pages.

Không bật ONLY trước khi kiểm chứng HugePages và memlock.


26. Apply sysctl

Sau khi chuẩn hóa:

sysctl --system

Kiểm tra:

sysctl fs.aio-max-nr
sysctl fs.file-max

sysctl kernel.sem
sysctl kernel.shmall
sysctl kernel.shmmax
sysctl kernel.shmmni

sysctl net.ipv4.ip_local_port_range

sysctl net.core.rmem_default
sysctl net.core.rmem_max
sysctl net.core.wmem_default
sysctl net.core.wmem_max

sysctl vm.nr_hugepages

27. Kiểm tra toàn bộ sysctl source

Chạy:

systemd-sysctl --cat-config

hoặc:

sysctl --system

và quan sát file nào đang được đọc.

Sau đó:

grep -Rni "nr_hugepages" \
/etc/sysctl.conf \
/etc/sysctl.d/ \
/usr/lib/sysctl.d/ \
/run/sysctl.d/ 2>/dev/null

Làm tương tự cho tham số nghi ngờ.

Mục tiêu:

1 parameter
        |
        v
1 authoritative configuration
        |
        v
1 runtime value

Không để:

/etc/sysctl.conf
          +
97-oracle.conf
          +
99-custom.conf
          |
          v
3 giá trị khác nhau

28. Kiểm tra limits source

grep -RniE \
"oracle.*(nofile|nproc|stack|memlock)" \
/etc/security/limits.conf \
/etc/security/limits.d/

Sau đó login mới:

su - oracle

Kiểm tra:

ulimit -Sn
ulimit -Hn

ulimit -Su
ulimit -Hu

ulimit -Ss
ulimit -Hs

ulimit -l

Runtime ulimit mới là kết quả cuối cùng.


29. Kiểm tra trước restart Database

Không restart nếu chưa PASS:

grep Huge /proc/meminfo

free -g

ulimit -l

cat /sys/kernel/mm/transparent_hugepage/enabled

Kiểm tra:

HugePages_Total >= HugePages requirement
memlock đủ
THP đúng trạng thái
Normal RAM còn đủ cho OS/PGA/Grid

30. Restart Oracle RAC

Với RAC thực hiện rolling từng node/instance theo kế hoạch thay đổi đã được phê duyệt.

Không restart đồng thời toàn cluster nếu không cần thiết.

Trước thao tác:

crsctl stat res -t

Kiểm tra:

srvctl status database -d <DB_UNIQUE_NAME>
srvctl status service -d <DB_UNIQUE_NAME>

31. Kiểm tra ngay sau startup

grep Huge /proc/meminfo

Theo dõi:

HugePages_Total
HugePages_Free
HugePages_Rsvd
HugePages_Surp
Hugepagesize

Nếu Oracle sử dụng HugePages:

HugePages_Free

sẽ giảm đáng kể sau startup.

Nhưng không lấy HugePages_Free=0 làm mục tiêu.


32. Kiểm tra Alert Log

Tìm:

grep -i -A20 -B5 \
"PAGESIZE\|HugePages\|memlock\|ORA-27106" \
$ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log

Oracle có thể ghi dạng:

PAGESIZE  AVAILABLE_PAGES  EXPECTED_PAGES  ALLOCATED_PAGES  ERROR(s)

2048K     ....             ....            ....             NONE

Tiêu chí quan trọng:

ALLOCATED_PAGES ≈ EXPECTED_PAGES
ERROR(s) = NONE

33. Xử lý ORA-27106

Nếu gặp:

ORA-27106:
system pages not available to allocate memory

không sửa shmmax, shmall, HugePages và memlock cùng lúc.

Kiểm tra theo thứ tự:

1. Alert log EXPECTED_PAGES
        ↓
2. HugePages_Total
        ↓
3. HugePages_Free
        ↓
4. HugePages_Rsvd
        ↓
5. vm.nr_hugepages runtime
        ↓
6. ulimit -l runtime
        ↓
7. SGA_MAX_SIZE
        ↓
8. USE_LARGE_PAGES
        ↓
9. MEMORY_TARGET

Nếu:

vm.nr_hugepages = 36874

nhưng:

HugePages_Total < 36874

Linux chưa reserve đủ HugePages.

Nếu không tăng được HugePages_Total, khả năng cao RAM fragmentation; có thể cần reboot server để HugePages được reserve ngay từ boot.


34. Checklist nghiệm thu

  • Backup /etc/sysctl.conf

  • Backup /etc/sysctl.d

  • Backup /etc/security/limits.conf

  • Backup /etc/security/limits.d

  • Không còn kernel parameter xung đột

  • fs.aio-max-nr >= 1048576

  • fs.file-max >= 6815744

  • kernel.sem >= 250 32000 100 128

  • kernel.shmmni >= 4096

  • kernel.shmmax đạt Oracle requirement

  • kernel.shmall đủ theo SHMMAX/page size

  • vm.nr_hugepages được sizing theo workload thực tế

  • HugePages_Total đạt giá trị yêu cầu

  • memlock >= 90% RAM khi HugePages enabled

  • ulimit -l đúng sau login mới

  • nofile đúng

  • nproc đúng

  • stack đúng

  • THP đúng trạng thái

  • MEMORY_TARGET=0

  • MEMORY_MAX_TARGET=0

  • SGA/PGA đúng thiết kế

  • USE_LARGE_PAGES đúng thiết kế

  • Oracle startup thành công

  • Alert log không có lỗi HugePages

  • ALLOCATED_PAGES ≈ EXPECTED_PAGES

  • RAC resources ONLINE

  • Service ONLINE đúng node

  • Không phát sinh ORA-27106

  • Không phát sinh ORA-04030/ORA-04031 bất thường


35. Cấu trúc file cuối cùng khuyến nghị

/etc/sysctl.d/97-oracle-database-sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.panic_on_oops = 1

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144
net.core.rmem_max = 4194304

net.core.wmem_default = 262144
net.core.wmem_max = 1048576

# kernel.shmmax = <sizing thực tế>
# kernel.shmall = <sizing thực tế>

/etc/sysctl.d/99-nr_hugepages.conf

vm.nr_hugepages = <GIÁ TRỊ TỪ hugepages_settings.sh>

Có thể quản lý vm.swappiness trong một file tuning riêng nếu tổ chức có OS baseline.

/etc/security/limits.d/oracle-database-preinstall-19c.conf

oracle soft nofile 65536
oracle hard nofile 65536

oracle soft nproc 16384
oracle hard nproc 16384

oracle soft stack 10240
oracle hard stack 32768

oracle soft memlock <>=90% RAM, KB>
oracle hard memlock <>=90% RAM, KB>

oracle soft data unlimited
oracle hard data unlimited

36. Nguyên tắc vận hành cuối cùng

Không áp dụng công thức:

RAM → suy ra tất cả kernel parameters

cho Oracle.

Phải chia thành ba nhóm:

NHÓM 1 – Oracle minimum
fs.file-max
fs.aio-max-nr
kernel.sem
network parameters
        |
        v
Đạt minimum trước
NHÓM 2 – Phụ thuộc RAM/SGA
kernel.shmmax
kernel.shmall
memlock
HugePages
        |
        v
Sizing theo server/database
NHÓM 3 – Per-user/process
nofile
nproc
stack
memlock
        |
        v
limits.conf / limits.d

Và nguyên tắc quan trọng nhất:

File cấu hình chỉ thể hiện mong muốn. Runtime kernel value, runtime ulimit, /proc/meminfo và Oracle alert log mới chứng minh cấu hình thực sự có hiệu lực.

Một điều tôi muốn sửa so với cách tính trước đó: kernel.shmmax không cần đặt bằng 90% RAM và kernel.shmall cũng không nên mặc định tính bằng 90% RAM. Oracle 19c công bố minimum shmmax = 1/2 physical RAM, còn shmall phải ≥ shmmax tính theo số page. Nếu preinstall RPM đã đặt giá trị lớn hơn thì Oracle cũng nói fixup không hạ giá trị đó xuống. (Oracle Docs)

Riêng HugePages, bài trên tranvanbinh.vn hiện đã cập nhật theo hướng SGA + hugepages_settings.sh; Oracle 19c chính thức hướng dẫn lưu vm.nr_hugepages trong /etc/sysctl.d/99-nr_hugepages.conf, memlock ít nhất 90% RAM khi bật HugePages, logout/login rồi xác minh bằng ulimit -l. Nếu kernel không reserve đủ nr_hugepages vì fragmentation, Oracle nói có thể phải reboot. (Tran Van Binh)

Tài liệu Oracle tham chiếu trực tiếp: Oracle 19c – Minimum Parameter Settings, Oracle 19c – Changing Kernel Parameter ValuesOracle 19c – Configuring HugePages on Linux.

=============================
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