CHECKLIST HƯỚNG DẪN KIỂM TRA TIẾP NHẬN ORACLE DATABASE
2.1. Hướng dẫn kiểm tra tiếp nhận DB
- Một số nội dung công việc cần thực hiện và kiểm tra lại trước khi tiếp nhận hoặc đưa DB mới vào môi trường hoạt động:
2.2. Nội dung cần thực hiện ngay sau khi tiếp nhận :
2.3. Hướng dẫn thiết lập tham số Oracle DB
Sau đây là một số yêu cầu và hướng dẫn thiết lập các thành phần cho một Oracle DB:
2.4. Hướng dẫn thiết lập tham số hugepages cho Oracle DB trên Linux
Note: Trước tiên cần Disabling Transparent HugePages theo khuyến nghị của Oracle sau đó mới thực hiện cấu hình
Mục đích: Với Oracle Database chạy Linux Server từ 16GB SGA (mà chỉ cần >=8GB) thì nên sử dụng HugePages. Khi đó Oracle sẽ hoạt động hiệu quả hơn. Khi chúng ta cấu hình HugePage, Linux Kernel sẽ dùng page hớn (gọi là huge page). Thay vì 4K với Linux x86 và x86_64 hay 16 KB với IA64 chúng ta sẽ đặt 4 MB on x86, 2MB với x86_64 hay 256MB trên IA64. Page lớn hơn tức là hệ thống sẽ cần ít bảng quản lý page (page table) hơn, do đó việc ánh xạ giữa page table và block cần truy xuất.
Tuy nhiên giới hạn của Oracle là tính năng AMM (Automatic Memory Management) không hỗ trợ HugePages. Do đó AMM disable (memory_max_size = 0, memory_target=0) và thay bằng ASMM (Automatic Shared Memory Management), tức là cấu hình SGA_MAX_SIZE, SGA_TARGET.
Bước 1: Thiết lập tham số memlock trong file /etc/security/limits.conf để giới hạn khả năng sử dụng RAM của user, ví dụ hệ thống có 64GB RAM thì thiết lập tối đa 90% của RAM tính theo KB.
Kiểm tra lại :
(oracle)$ ulimit -l
Bước 2:Disable AMM
Với Oracle Database từ 11g trở đi thì disable AMM bằng các tham số MEMORY_TARGET và MEMORY_MAX_TARGET (nếu có).
Bước 3: Thiết lập lại giá trị SGA cho Oracle DB (memory 90% tức là 57.6GB, SGA 80% tức 46GB còn lại 11.6GB cho PGA).
Bước 4: Restart DB.
Nếu không thay đổi tham số SGA_MAX_SIZE thì không cần phải làm bước này.
Bước 5: Tính toán và thiết lập giá trị hugepages.
Tính bằng tay:
- Kiểm tra Hugepagesize
grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
- Tính vm.nr_hugepages = SGA/Hugepagesize = 46*1024*1024/2048=23552
Hoặc Chạy script hugepages_settings.sh (từ My Oracle Support (MOS) note 401749.1).) để tính toán ra giá trị hugepages cần thiết lập. Giả sử giá trị cần đặt ở đây là 22960.
#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`
# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`
# Start from 1 pages to be on the safe side and guarantee 1 free HugePage
NUM_PG=1
# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"`
do
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
if [ $MIN_PG -gt 0 ]; then
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
fi
done
# Finish with results
case $KERN in
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
*) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac
# End
$ chmod u+x ./hugepages_setting.sh
$ ./hugepages_settings.sh
.
.
.
Recommended setting: vm.nr_hugepages = 23552
Bước 6: Từ root, Sửa file /etc/sysctl.conf và thiết lập tham số vm.nr_hugepages theo giá trị tính toán ở trên:
vm.nr_hugepages = 23552
Bước 7: Shutdown tất cả các DB instance và reboot server hoặc không cần reboot thì thực hiện # sysctl -p
Bước 8: Kiểm tra lại cấu hình.
Sau khi server và DB lên, kiểm tra lại cấu hình xem có chuẩn không.
2.6. Hướng dẫn tối ưu hóa cấu trúc CSDL Oracle
v Cấu trúc bảng:
Khi tạo bảng mới cần áp dụng các phương án như sau:
- Với bảng có dữ liệu lớn (2G trở lên) phải đánh partition.
+ Với dữ liệu lịch sử thì đánh theo By Range.
+ Với dữ liệu xác định trước được giá trị thì đánh theo By list.
+ Với dữ liệu không có quy luật thì đánh theo By Hash.
- Với các bảng có đánh partition thì index phải đánh theo Local.
- Hạn chế sử dụng trigger trên bảng.
- Đánh giá trong câu lệnh select có trường nào xác định được đối tượng tìm kiếm chính xác nhất và có độ dài trường ngắn nhất (ưu tiên trường number) thì đánh index theo trường đó.
- Hạn chế dùng foreign key.
- Với các bảng có tần suất update hoặc insert lớn không nên dùng primary key/unique key
v Câu lệnh tác động:
Khi viết câu lệnh tác động vào bảng cần làm theo hướng dẫn sau:
- Tất cả các câu lệnh đều phải có index, không câu lệnh nào được quét full bảng.
- Nếu bảng có partition thì trong câu lệnh phải có thêm trường partition (ngoại trừ một số trường hợp đặc biệt).
- Khi join hai bảng với nhau thì bảng có dữ liệu lớn hơn phải có index.
- Trong câu lệnh không dùng điều kiện is null, cần chuyển sang phương án dùng các toán tử : >, <, =.
- Hạn chế sử dụng câu lệnh delete, cần chuyển sang câu lệnh truncate hoặc tạo bảng mới.
- Hạn chế sử dụng câu lệnh update, cần chuyển sang câu lệnh insert và select.
- Với các bảng tmp có dữ liệu trong quá trình chạy và xóa dữ liệu sau khi chạy (không cần backup dữ liệu), cần chuyển bảng sang nologging và câu lệnh insert cần có thêm append, tablespace DUMP.
v Câu lệnh tạo view:
Các lưu ý khi tạo view:
- Trong view không nên thêm trường mới vì khi câu lệnh select vào view có thể sẽ bị quét full bảng.
- Hạn chế sử dụng view lồng nhau.
v Tạo tablespace:
Với mỗi DB thường, tạo các loại tablespace như sau:
- Loại tablespace cố định: để lưu default các user ứng dụng, các bảng không có partition, ví dụ: DATA, index tương ứng INDX
- Loại tablespace không cố định: lưu các bảng có partition, ví dụ DATAyyymmdd, DATAyyyymm, DATAyyyy, index tương ứng INDXyyyymmdd, INDXyyyymm, INDXyyyy
- Loại tablespace cho người dùng: lưu các bảng của người dùng CSDL trực tiếp tạo ra, ví dụ: DATA_NGHIEPVU, INDX_NGHIEPVU
- Loại tablespace tmp: lưu các bảng tmp, các bảng không cần backup, ví dụ: DUMP.
* 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: 0902912888
⚡️ Skype: tranbinh48ca
👨 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: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Đị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
=============================
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,khóa học pl/sql, 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 dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty