Thứ Ba, 13 tháng 9, 2022

[VIP5] CHECKLIST HƯỚNG DẪN KIỂM TRA TIẾP NHẬN ORACLE DATABASE

CHECKLIST HƯỚNG DẪN KIỂM TRA TIẾP NHẬN ORACLE DATABASE

Mục lục:

2.1. Hướng dẫn kiểm tra tiếp nhận DB 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 2.4. Hướng dẫn thiết lập tham số hugepages cho Oracle DB trên Linux 2.6. Hướng dẫn tối ưu hóa cấu trúc CSDL Oracle

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:

STT

Nội dung

Yêu cầu phải đạt được trước khi tiếp nhận

1

Kiểm tra kiến trúc dự phòng DB

DB chạy cơ chế active – active theo công nghệ Oracle Real application Cluster (RAC), ứng dụng kết nối đảm bảo khả năng load balance và failover trên DB; xem xét cài đặt DataGuard sau khi tiếp nhận.

Với những DB single bắt buộc phải cài đặt dự phòng  DataGuard/GoldenGate.

2

Kiểm tra cấu hình DB

Redo khai báo phù hợp: có ít nhất 3 redo log group mỗi instance DB, mỗi group có ít nhất 2 member trên 2 vùng khác nhau, đảm bảo mirror dự phòng cho nhau.

DB chạy ở chế độ archive log mode, archive log nên sinh ra nằm trên 2 vùng đĩa riêng biệt.

UNDO, TEMP, tablespace ứng dụng có các datafile nằm trên ít nhất 2 mount point khác nhau (nếu dạng file system)

SGA khai báo phù hợp: dung lượng SGA + PGA tương đương 80% dung lượng RAM (trong đó SGA từ 50-80% dung lượng đó, PGA 20-50% tuỳ nghiệp vụ OLTP hay Data Warehouse)

DB_FILES khai báo từ 1000 – 5000.

Đặt tham số resource_limit = true để các chính sách user profile đặt trong DB có hiệu lực.

Đặt các tham số sessions, proceses (500-3000) phù hợp với yêu cầu nghiệp vụ của từng DB.

DB chạy chế độ Dedacated server, nếu tài nguyên hữu hạn có thể đặt chế độ shared (shared_server từ 50 – 400), các ứng dụng kết nối vào cũng đang chạy theo chế độ shared.

Cấu hình RMAN giữ ít nhất 2 bản full và đảm bảo các điều kiện sau:

-  Auto backup control file

-  MAXPIECESIZE tối đa 5-40GB

-  Nên đặt db_block_checking

Đối với DB sử dụng ASM:

-            Có ít nhất 3 disk group khác nhau (CRS, DATA, FRA)

-            Mỗi disk group có ít nhất 4 LUN cùng size dạng external, nếu quan trọng nên dùng normal (CRS là bắt buộc phải dùng kiểu normal tối thiểu 3 disk)

3

Kiểm tra DB Objects

-            Các object đặt option noparallel.

-            Các datafile có thể đặt auto extend nếu đủ dung lượng và kiểm soát được, còn không thì không đặt auto extend.

-            Drop các user không sử dụng, revoke quyền DBA của các user.

-            Kiểm tra profile chứa user ứng dụng đảm bảo profile này đặt unlimited cho mọi tham số.

-            Bảng dữ liệu ứng dụng không nằm trên user tablespace.

-            Không xuất hiện corrupt block trong DB.

-            Tất cả các object ở trạng thái valid (các object bị invalid thì phải drop).

-            Tất cả index không ở trạng thái unusable.

-            Định dạng tên partition đối với các bảng đánh partition theo thời gian là DATAyyyy, DATAyyyymm hay DATAyyyymmdd tuỳ theo loại partition (partition theo năm, tháng hoặc ngày tương ứng) hoặc DATA_TENNGHIEPVUyyyy hay DATA_TENNGHIEPVUyyyymm hay DATA_TENNGHIEPVUyyyymm; index là cặp đối xứng với DATA ví dụ INDXyyyy, INDX_TENNGHIEPVUyyyy

2.2. Nội dung cần thực hiện ngay sau khi tiếp nhận :

STT

Nội dung

Các công việc cần thực hiện ngay sau khi tiếp nhận

1

Kiểm tra kiến trúc dự phòng DB

Với DB RAC xem xét cài đặt DataGuard

Với những DB single phải cài đặt dự phòng  DataGuard/GoldenGate sớm.

2

Kiểm tra và cấu hình cảnh báo cho DB

Cấu hình cảnh báo DB như các DB khác đang chạy:

-            Check, đặt cảnh báo Tablespace

-            Check, đặt cảnh báo ASM disk group

-            Check, đặt cảnh báo disk u01, /

-            Check và đặt cảnh báo performance

-            Check và đặt cảnh báo alert log

-            Check và cấu hình Analyze bảng và index

-            Check, đặt trigger Firewall DB

-            Check, đặt cảnh báo tác động DDL

-            Check, đặt cảnh báo tác động DML (FGA)

-            Check, đặt cảnh báo Listener, instance, log backup

2

Kiểm tra cơ chế backup DB

-            Giữ ít nhất 2 bản backup full có cảnh báo.

-            Đẩy sớm lên backup tập trung dự phòng (đối với các DB chạy trên local disk).

3

Kiểm tra và drop các bảng không sử dụng

-            Drop tất cả các bảng ứng dụng không sử dụng.

-            Drop tất cả các bảng rác do user cá nhân tạo ra.

-            Tạo thêm tablesapce NGHIEPVU.

4

Kiểm tra profile cho user DB

User cá nhân và user ứng dụng đặt trên 2 profile có policy khác nhau (user cá nhân đặt giới hạn 3 session, expire password 45 ngày).

5

Kiểm tra tính năng audit DB

Nếu ở chế độ audit, các bảng log audit cần phải đặt trên tablespace riêng không thuộc system tablespace.  audit_trail=none, dùng FGA để audit select, DML bảng.

6

Kiểm tra chính sách quay vòng dữ liệu

Xác định chính sách vòng đời của các bảng dữ liệu theo quy định.

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:

STT

Nội dung

Yêu cầu

Cách kiểm tra/thiết lập

1

Thiết lập vùng swap cho máy chủ DB

-            Với máy chủ có RAM 2-16GB: đặt dung lượng swap bằng với dung lượng RAM.

-            Với máy chủ có RAM>16GB: đặt dung lượng swap là 16GB hoặc 75%-80% dung lượng RAM.

Tuỳ vào từng loại hệ điều hành, dùng lệnh của hệ điều hành để kiểm tra RAM, swap:

-            Linux: swapon –s

-            Solaris: swap -s

2

Thiết lập cấu hình cho DB

Redo khai báo ít nhất 3 redo log group cho mỗi instance DB, mỗi group gồm ít nhất 2 member nằm trên 2 vùng khác nhau, đảm bảo mirror cho nhau.

-            Kiểm tra:

SELECT thread#, group#, members

FROM v$log

ORDER BY thread#, group#;

-            Thiết lập:

alter database add logfile group n ('/.../redon_a.log','/.../redon_b.log') size ...M;

DB chạy ở chế độ archive log mode.

-            Kiểm tra:

archive log list;

-            Thiết lập:

startup mount;

alter database archivelog;

UNDO, TEMP, tablespace ứng dụng có các datafile nằm dàn trải trên ít nhất 2 mount point khác nhau.

-            Kiểm tra:

SELECT file_name  FROM dba_data_files

WHERE tablespace_name LIKE 'UNDO%';

SELECT file_name  FROM dba_temp_files;

-            Thiết lập:

alter tablespace UNDOTBS add datafile '/.../undon.dbf' size ...M;

alter tablespace TEMP add tempfile '/.../temp0n.dbf' size ...M;

SGA khai báo phù hợp, dung lượng SGA + PGA tương đương  80% dung lượng RAM vật lý:

-            Đối với Oracle 11g/12c/19c, sử dụng các tham số sga_max_size và sga_target như Oracle 10g.

-            Tham số pga_aggregate_target đặt tương đương 10-20% tổng SGA+PGA nói trên.

(Có thể sử dụng tự động memory)

-            Kiểm tra:

sqlplus "/as sysdba"

show parameter sga_;

show parameter pga_;

show parameter memory;

-            Đảm bảo các tham số memory_max_target=0 và memory_target=0.

-            Thiết lập:

alter system set <param>=...G scope=spfile sid='*';

DB_FILES khai báo từ 1000 – 3000.

-            Kiểm tra:

sqlplus "/as sysdba"

show parameter db_files;

-            Thiết lập:

alter system set db_files=2000 scope=spfile sid='*';

Đặt tham số resource_limit = true để các chính sách user profile đặt trong DB có hiệu lực.

-            Kiểm tra:

sqlplus "/as sysdba"

show parameter resource_limit ;

-            Thiết lập:

alter system set resource_limit=true scope=spfile sid='*';

Đặt các tham số sessions, processes (500-3000) phù hợp với yêu cầu nghiệp vụ của từng DB.

-            Kiểm tra:

sqlplus "/as sysdba"

show parameter session;

-            Thiết lập:

alter system set sessions=<n> scope=spfile sid='*';

Nếu DB chạy chế độ shared (shared_server từ 50 – 400), các ứng dụng kết nối vào chạy theo chế độ shared.

-            Kiểm tra:

sqlplus "/as sysdba"

show parameter shared_server;

-            Thiết lập:

alter system set shared_server=<n> scope=spfile sid='*';

Đối với DB sử dụng ASM:

-            Có 3 disk group khác nhau CRS, DATA (chưa data, redo),FRA (chứa archived log,  reodo thứ 2, control file thứ 2, backup)

-            Mỗi disk group có ít nhất 4 LUN

-            Kiểm tra:

sqlplus "/as sysdba"

select name from v$asm_diskgroup;

-            Thiết lập: tạo thêm các diskgroup nếu chưa thoả mãn yêu cầu.

CREATE DISKGROUP <name> external redundancy DISK '<device_name>';

 

2.4.  Hướng dẫn thiết lập tham số hugepages cho Oracle DB trên Linux

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 80% của RAM tính theo KB.
# vi /etc/security/limits.conf
*   soft   memlock    53687091
*   hard   memlock    53687091

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ó).
ALTER SYSTEM SET MEMORY_TARGET = 0 SCOPE=SPFILE;
ALTER SYSTEM SET MEMORY_MAX_TARGET = 0 SCOPE=SPFILE;

Bước 3: Thiết lập lại giá trị SGA cho Oracle DB (memory 80% tức là 51GB, SGA 80% tức 41GB còn lại 10GB cho PGA).
ALTER SYSTEM SET SGA_MAX_SIZE = 41G scope=spfile;
ALTER SYSTEM SET SGA_TARGET = 41G  scope=spfile;
ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 20G scope=spfile;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 10G scope=spfile;

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 = 41*1024*1024/2048 +1 =20973
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 = 20973

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

Thiết lập thêm tham số: 

kernel.shmall=13421773 (=shmmax/shmmni)
kernel.shmmax=54975581389 (=80% RAM)

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.
# grep HugePages /proc/meminfo
HugePages_Total:    20973
HugePages_Surp:        0

# grep ^Huge /proc/meminfo
HugePages_Total:   20973
HugePages_Free:    100
HugePages_Rsvd:     2016
HugePages_Surp:        0
Hugepagesize:       2048 kB

Tham số tham khảo: 0.8 là 80% RAM vật lý, 0.65 là 65% RAM vật lý, tôi hay sử dụng 80% RAM, còn anh em thửa RAM có thể đặt 65% RAM vật lý cho memory (SGA+PGA):

Loại DBMemory (GB)Khuyến nghịSGA (GB)PGA (GB)shmmni (byte)shmmax(byte)shmallhugepage_size(KB)Hugepagelimits.conf (KB)
OLTP5120.83288240964398046511101073741822048167773429496730
OLTP5120.65266674096357341279027872415232048136316348966093
OLTP2560.816441409621990232555553687091204883887214748365
OLTP2560.6513333409617867063951443620762204868158174483046
OLTP1920.812331409616492674416640265318204862916161061274
OLTP1920.6510025409613400297963532715571204851119130862285
OLTP1600.810226409613743895347233554432204852430134217728
OLTP1600.658321409611166914969627262976204842599109051904
OLTP1280.88220409610995116277826843546204841944107374182
OLTP1280.6567174096893353197572181038120483408087241523
OLTP960.861154096824633720832013265920483145880530637
OLTP960.6550124096670014898181635778620482556065431142
OLTP940.860154096807453851651971322920483080378852915
OLTP940.6549124096656056254461601699820482502864067994
OLTP640.841104096549755813891342177320482097353687091
OLTP640.653384096446676598781090519020481704043620762
OLTP320.8205409627487790694671088620481048726843546
OLTP320.6517440962233382993954525952048852121810381
OLTP160.810340961374389534733554432048524413421773
OLTP160.658240961116691497027262982048426110905190

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

=============================
[VIP5] CHECKLIST HƯỚNG DẪN KIỂM TRA TIẾP NHẬN ORACLE DATABASE, 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

ĐỌC NHIỀU

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