Là một người dùng ứng dụng, bạn có thể được yêu cầu viết một tập lệnh dọn dẹp để xóa dữ liệu cũ khỏi một bảng lớn có hàng triệu dòng dựa trên ngày hoặc một số trường. Là một DBA, những người làm ứng dụng thường hỏi tôi bất kỳ cách nào tốt nhất để xóa một lượng lớn các hàng khỏi một bảng khổng lồ (partition/ non-partition) nhanh nhất có thể.
Phụ thuộc vào kích thước bảng, nếu bạn cố gắng xóa toàn bộ dòng cùng một lúc thì nó sẽ tạo ra dữ liệu undo rất lớn và sẽ làm giảm hiệu suất cơ sở dữ liệu và làm cho cơ sở dữ liệu không phản hồi được dịch vụ, lỗi nghiệp vụ, treo nghiệp vụ. Vì vậy, tốt hơn hết đừng chạy bất kỳ câu lệnh xóa nào trên các bảng lớn nếu không truy vấn sẽ bị nghẽn, treo nghiệp vụ.
Có hai cách để xóa các bản ghi cũ hơn khỏi một bảng lớn:
1. Xóa các bản ghi theo lô (batch) ví dụ trên 10000 bản ghi.
2. Tạo bảng mới và insert số dòng cần thiết từ bảng chính.
Cách 1: PL/SQL Script đẻ Delete Rows từ Table theo lô (batch)
sqlplus test/test <> /data/dbaviet/delete/delete_orahow_status_4.log
set timing on;
declare
cursor ph_unq is select ID from ORAHOW where status =3 and trunc(modified_Date)<trunc(sysdate -60);
TYPE ph is TABLE of phonenumber_bkp_ID%rowtype index by binary_integer;
ph_un ph;
begin
open ph_unq;
LOOP
fetch ph_unq BULK COLLECT INTO ph_un limit 10000;
exit when ph_un.count=0;
FORALL ind in 1 .. ph_un.count
delete from orahow where id = ph_un(ind).ID;
commit;
END LOOP;
END;
/
EOD
Cách 2: Tạo bảng mới bằng cách lấy các dòng cần thiết ở bảng cũ (create table as select)
(bạn có thể tạo bảng mới và insert các dòng cần thiết vào bảng mới đó nhưng chậm hơn cách create table as select)
Bước 1: Tạo bảng mới as select
SQL> create table new_table_name as select * from source_tab where status =4 and trunc(modified_Date)<trunc(sysdate -60);
Bước 2: Đổi tên bảng các bảng
SQL> rename source_tab to bkp_mytable; SQL> rename new_table_name to source_tab;
* 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