Thứ Hai, 2 tháng 2, 2026

🚨 30 SAI LẦM PHỔ BIẾN LÀM SUY GIẢM HIỆU NĂNG ORACLE DATABASE

30 SAI LẦM PHỔ BIẾN LÀM SUY GIẢM HIỆU NĂNG ORACLE DATABASE THƯỜNG GẶP

(từ thiết kế → phát triển → vận hành)

Chia thành 5 nhóm lớn để dễ nhìn bản chất.

I. ❌ Sai lầm trong THIẾT KẾ DATABASE (1–8)

1️⃣ Thiết kế bảng không dựa trên workload

  • Dùng 1 bảng cho cả OLTP + report

  • Không phân biệt bảng nóng / bảng lạnh

Tối ưu

  • Tách OLTP vs Reporting

  • Dùng partition cho bảng lớn (>10–50 triệu row)


2️⃣ Không thiết kế partition ngay từ đầu

  • Bảng lên hàng trăm triệu row rồi mới nghĩ partition

  • Range partition theo ngày/tháng

  • Local index

  • Partition pruning


3️⃣ Dùng datatype không phù hợp

  • VARCHAR2 cho số

  • CHAR cho dữ liệu biến độ dài

  • DATE cho timestamp chính xác

  • NUMBER / INTEGER đúng mục đích

  • TIMESTAMP thay DATE khi cần chính xác


4️⃣ Thiết kế PK/UK không phục vụ truy vấn

  • PK chỉ để “đủ chuẩn”

  • Index không đúng cột WHERE/JOIN

  • Index theo truy vấn thực tế

  • Composite index đúng thứ tự cột


5️⃣ Quá nhiều index trên bảng OLTP

  • INSERT/UPDATE chậm

  • Redo tăng, CPU tăng

  • Giữ index tối thiểu nhưng hiệu quả

  • Xóa index ít dùng (theo v$object_usage)


6️⃣ Không kiểm soát độ rộng row

  • Row dài → ít row/block → IO tăng

  • Chuẩn hóa cột

  • Tách bảng detail / blob


7️⃣ Dùng CLOB/BLOB bừa bãi

  • Truy vấn chậm

  • IO tăng mạnh

  • Lưu metadata trong bảng chính

  • Dữ liệu lớn lưu bảng phụ / object storage


8️⃣ Thiết kế transaction quá lớn

  • Commit sau hàng nghìn row

  • Undo phình to

  • Commit theo batch hợp lý

  • Kiểm soát undo retention


II. ❌ Sai lầm trong SQL & CODE (9–16)

9️⃣ SQL viết cho “chạy đúng” chứ không “chạy nhanh”

  • SELECT *

  • Không giới hạn kết quả

  • Chỉ select cột cần thiết

  • Luôn có điều kiện lọc


🔟 Dùng hàm trong WHERE

WHERE TO_CHAR(date_col,'YYYYMM')='202511'

❌ Mất index

WHERE date_col >= DATE '2025-11-01' AND date_col < DATE '2025-12-01'

1️⃣1️⃣ Không dùng bind variable

  • Hard parse nhiều

  • CPU tăng vọt

  • Bind variable

  • cursor_sharing=FORCE (chỉ khi bất khả kháng)


1️⃣2️⃣ SQL cost quá cao cho OLTP

  • cost > 100k – 1 triệu

  • Full scan bảng lớn

  • Chuẩn OLTP: cost < 1.000

  • Rewrite SQL + index


1️⃣3️⃣ Join sai thứ tự, thiếu điều kiện

  • Cartesian join

  • Rows explode

  • Join theo selective table trước

  • Kiểm tra execution plan


1️⃣4️⃣ Dùng PARALLEL cho OLTP

  • Session nổ

  • CPU >90%

  • OLTP: NO PARALLEL

  • Parallel chỉ cho batch/report


1️⃣5️⃣ N+1 query trong code

  • 1 query gọi hàng nghìn lần

  • Bulk fetch

  • Join thay vì loop


1️⃣6️⃣ Không kiểm soát SQL dynamic

  • SQL khác nhau liên tục

  • Shared pool bị thrash

  • Chuẩn hóa SQL

  • Giới hạn dynamic SQL


III. ❌ Sai lầm về MEMORY & INSTANCE (17–22)

1️⃣7️⃣ Cấu hình SGA/PGA theo “cảm giác”

  • Copy từ hệ khác

  • Không dựa workload

  • Dựa vào:

    • Buffer cache hit

    • PGA cache hit

    • AWR


1️⃣8️⃣ SGA quá nhỏ so với RAM

  • Logical IO tăng

  • CPU tăng

  • DB core: SGA 60–70% RAM

  • HugePages + memlock


1️⃣9️⃣ PGA quá lớn → OS pressure

  • Sort tranh RAM

  • Latency tăng

  • pga_aggregate_target hợp lý

  • Giới hạn workarea


2️⃣0️⃣ processes / sessions không đủ

  • ORA-00020

  • Login chậm

  • sessions ≈ processes × 1.1

  • Dư 20–30%


2️⃣1️⃣ Cursor cache thấp

  • Hard parse nhiều

  • session_cached_cursors 500–2000

  • open_cursors đủ lớn


2️⃣2️⃣ Shared pool bị fragmentation

  • Latch contention

  • Giảm dynamic SQL

  • Pin object quan trọng


IV. ❌ Sai lầm về STORAGE & IO (23–26)

2️⃣3️⃣ Datafile phân bố không đều

  • Một vài disk nóng

  • IO wait tăng

  • Striping đúng

  • ASM balance


2️⃣4️⃣ Redo log quá nhỏ

  • Log switch liên tục

  • Redo log ≥ 1–4GB

  • Switch > 10–15 phút


2️⃣5️⃣ Không tách DATA / INDEX / UNDO / TEMP

  • IO tranh nhau

  • Tách workload IO

  • TEMP đủ lớn cho sort


2️⃣6️⃣ Không theo dõi IO latency

  • Chỉ nhìn %util

  • Quan tâm:

    • await

    • svctm

    • IO wait events


V. ❌ Sai lầm trong VẬN HÀNH & GIÁM SÁT (27–30)

2️⃣7️⃣ Không có baseline hiệu năng

  • Không biết “bình thường là gì”

  • Baseline CPU, IO, SQL top

  • So sánh trước/sau


2️⃣8️⃣ Chỉ xử lý khi sự cố xảy ra

  • Cháy rồi mới chữa

  • Giám sát proactive

  • Phát hiện SQL nguy hiểm sớm


2️⃣9️⃣ Không kiểm soát batch / job

  • Batch đè OLTP

  • Giờ cao điểm chết

  • Chạy batch giờ thấp tải

  • Resource Manager


3️⃣0️⃣ Không review định kỳ

  • SQL xấu tồn tại lâu dài

  • Review:

    • SQL top cost

    • Segment growth

    • Index usage


🎯 KẾT LUẬN CHUYÊN GIA

80% vấn đề hiệu năng Oracle đến từ thiết kế & SQL
chỉ 20% do phần cứng.

Tối ưu Oracle không phải tuning vài tham số, mà là:

  • Tư duy thiết kế đúng

  • Kỷ luật vận hành

  • Giám sát liên tục

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