Thứ Hai, 28 tháng 2, 2022

KHI NÀO CẦN TẠO PARTITION CHO BẢNG CSDL ORACLE

KHI NÀO NÊN TẠO PARTITION CHO BẢNG?

Oracle đã dựa trên câu chuyện bó đũa của Việt Nam để đưa ra tính năng tuyệt vời này: Tức là với bảng lớn (tương đương 10 cây đũa) thì rất khó chúng ta có thể thao tác, quản trị; nhưng khi chia thành những phần nhỏ chúng ta lại dễ dàng quản trị (bẽ gây đũa) được 😀😀😀

Vậy khi nào chúng ta cần tạo partition cho CSDL Oracle Theo khuyến cáo của Oracle thì chúng ta cần cân nhắc tạo partition cho bảng khi:
• Khi bảng lớn hơn 2GB
• Bảng có dữ liệu lịch sử: Chỉ cần DML trong tháng hiện tại (VD tháng 10/2019), còn lại trước đó Read Only
• Bảng chứa nhiều partition phân tán trên các phân vùng đĩa khác nhau (như SSD, FC, SAS, SATA) khi đó sẽ được lưu trên các tablespace tương ứng (như DATA2019, DATA2018, DATA2017,...)
• Còn 1 nội dung nữa mà Oracle không đưa ra trong phần lý thuyết đó là: Thực tế câu lệnh SELECT của chúng ta hay sử dụng quét theo điều kiện gì (theo ngày, theo tháng, theo quý hay theo năm) để chúng ta quyết định loại partition cho phù hợp.

Lựa chọn kiểu partition gì?

Chúng ta lựa chọn các kiểu partition dưới đây hoặc kết hợp các loại partition với nhau (composite):
- 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í dụ:

-- Partition theo RANGE
CREATE TABLE invoices
(invoice_no    NUMBER NOT NULL,
 invoice_date  DATE   NOT NULL,
 comments      VARCHAR2(500))
PARTITION BY RANGE (invoice_date)
(PARTITION invoices_q1 VALUES LESS THAN (TO_DATE('01/04/2001', 'DD/MM/YYYY')) TABLESPACE users,
 PARTITION invoices_q2 VALUES LESS THAN (TO_DATE('01/07/2001', 'DD/MM/YYYY')) TABLESPACE users,
 PARTITION invoices_q3 VALUES LESS THAN (TO_DATE('01/09/2001', 'DD/MM/YYYY')) TABLESPACE users,
 PARTITION invoices_q4 VALUES LESS THAN (TO_DATE('01/01/2002', 'DD/MM/YYYY')) TABLESPACE users);
-- Partition theo HASH
CREATE TABLE invoices
(invoice_no    NUMBER NOT NULL,
 invoice_date  DATE   NOT NULL,
 comments      VARCHAR2(500))
PARTITION BY HASH (invoice_no)
PARTITIONS 4
STORE IN (users, users, users, users);
-- Composite Partition (partition theo RANGE và subpartition theo HASH)
CREATE TABLE invoices
(invoice_no    NUMBER NOT NULL,
 invoice_date  DATE   NOT NULL,
 comments      VARCHAR2(500))
PARTITION BY RANGE (invoice_date)
SUBPARTITION BY HASH (invoice_no)
SUBPARTITIONS 8
(PARTITION invoices_q1 VALUES LESS THAN (TO_DATE('01/04/2001', 'DD/MM/YYYY')),
 PARTITION invoices_q2 VALUES LESS THAN (TO_DATE('01/07/2001', 'DD/MM/YYYY')),
 PARTITION invoices_q3 VALUES LESS THAN (TO_DATE('01/09/2001', 'DD/MM/YYYY')),
 PARTITION invoices_q4 VALUES LESS THAN (TO_DATE('01/01/2002', 'DD/MM/YYYY'));
Hy vọng hữu ích cho bạn.
=============================
* 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
Sửa bài viết

Hiểu về index partition, phân biệt local index và global index

Mục đích: 

Index tạo trên bảng partition có thể là partition hoặc nonpartition, với partition index giúp dễ dàng quản lý, tăng tính sẵn sàng, hiệu năng cao hơn và khả năng mở rộng tốt hơn. Bạn có thể tạo partititioin độc lập (global index) hoặc tự động ánh xạ 1-1 với partition của table (local index). Nhưng nhìn chung bạn nên tạo global index cho ứng dụng OLTP (do nhiều khi không quét theo trường partition key của bảng được) và local index cho ứng dụng data warehousing hoặc DSS (decision support system).

Qua bài viết này hy vọng sẽ giúp bạn Hiểu về index partition, phân biệt local index và global index. 
Sửa bài viết

Chủ Nhật, 27 tháng 2, 2022

Tìm ra session chạy trước đó trong Oracle Database

Có thể lấy từ báo cáo ASH, hoặc từ view DBA_HIST_ ACTIVE_SESS_ HISTORY . Có 3 view có thể sử dụng:

Sửa bài viết

Tìm tiến trình chiếm nhiều CPU nhất trong Linux, AIX

Linux Command 

ps -eo pid,cmd,%cpu,%mem --sort=-%cpu | head -n 100 Sample Output
Sửa bài viết

Hướng dẫn cách đọc log trong Solaris

1. Log in bằng root

Sửa bài viết

Quản trị user từ A-Z trong Oracle Database

I.QUẢN LÝ USER

1. Check
SELECT * FROM DBA_USERS;
select sid, serial#, username, osuser, machine from v$session where username is not NULL;
select username, account_status, expiry_date, profile from dba_users;
Sửa bài viết

Thứ Bảy, 26 tháng 2, 2022

Đổi tên bảng core gặp lỗi " ORA-04020: deadlock detected while trying to lock object"

LỖI:

Thực hiện đổi tên bảng core (bảng gọi nhiều, cột Used By rất nhiều) thì gặp lỗi bên dưới:

alter table APP_OWNER.TAB1_NEW rename to TAB1; 

[1]: ORA-04020: deadlock detected while trying to lock object PUBLIC.TAB1
Sửa bài viết

ĐỌC NHIỀU

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