Thứ Tư, 16 tháng 3, 2022

Các câu lệnh Gather statistic trong Oracle Database

Mục đích: Các câu lệnh Gather statistic trong Oracle Database

1. Gather dictionary stats:

-- Thực hiện gathers statistics các dictionary schemas 'SYS', 'SYSTEM' và những schema internal.

EXEC DBMS_STATS.gather_dictionary_stats; 

2. Gather fixed object stats:

--- Fixed object có dạng gv$ or v$views

EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; 

3. Gather full database stats:

EXEC DBMS_STATS.gather_database_stats;

-- Với tham số estimate_percent to 15% hoặc giá trị khác , nếu db size rất lớn
EXEC DBMS_STATS.gather_database_stats(estimate_percent => 15);
EXEC DBMS_STATS.gather_database_stats(estimate_percent => 15, cascade => TRUE);

-- Với tham số auto sample size và parallel degree 
EXEC DBMS_STATS.gather_database_stats(estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,degree => 8);  

4. Gather schema statistics:

EXEC DBMS_STATS.gather_schema_stats('DBAVIET');

EXEC DBMS_STATS.gather_schema_stats('DBAVIET', estimate_percent => 25);
EXEC DBMS_STATS.gather_schema_stats('DBAVIET', estimate_percent => 100, cascade => TRUE);
-- STATS WITH AUTO ESTIMATION and degree 8 exec dbms_stats.gather_schema_stats( ownname => 'DBAVIET',method_opt => 'FOR ALL COLUMNS SIZE 1',
 granularity => 'ALL', degree => 8, cascade => TRUE, estimate_percent=>dbms_stats.auto_sample_size); 

5. Gather table statistics:

EXEC DBMS_STATS.gather_table_stats('DBAVIET', 'EMP');
EXEC DBMS_STATS.gather_table_stats('DBAVIET', 'EMP', estimate_percent => 15);
EXEC DBMS_STATS.gather_table_stats('DBAVIET', 'EMP', estimate_percent => 15, cascade => TRUE);
exec DBMS_STATS.GATHER_TABLE_STATS (ownname => 'DBAVIET' , tabname => 'EMP',cascade => true,
 method_opt=>'for all indexed columns size 1', granularity => 'ALL', degree => 8); exec DBMS_STATS.GATHER_TABLE_STATS (ownname => 'DBAVIET' , tabname => 'EMP',
 cascade => true, method_opt=>'FOR ALL COLUMNS SIZE 1', granularity => 'ALL', degree => 8);

6. Gather 1 partition của 1 table:

BEGIN
DBMS_STATS.GATHER_TABLE_STATS (
ownname => 'SCOTT',
tabname => 'TEST', --- TABLE NAME
partname => 'TEST_JAN2016' --- PARTITOIN NAME
method_opt=>'for all indexed columns size 1',
GRANULARITY => 'APPROX_GLOBAL AND PARTITION',
degree => 8);
END;
/

7. Lock/unlock statistics:

-- Lock stats 1 schema:
EXEC DBMS_STATS.lock_schema_stats('DBACLASS');

-- Lock stats 1 table:
EXEC DBMS_STATS.lock_table_stats('DBACLASS', 'EMP');

-- Lock stats 1 partition:
EXEC DBMS_STATS.lock_partition_stats('DBACLASS', 'EMP', 'EMP');

-- unlock stats 1 schema:
EXEC DBMS_STATS.unlock_schema_stats('DBACLASS');

-- unlock stats 1 table: 
EXEC DBMS_STATS.unlock_table_stats('DBACLASS', 'DBACLASS');

--unlock stats 1 partition: 
EXEC DBMS_STATS.unlock_partition_stats('DBACLASS', 'EMP', 'TEST_JAN2016');

--- Kiểm tra trạng thái stats: 
SELECT stattype_locked FROM dba_tab_statistics WHERE table_name = 'TEST' and owner = 'SCOTT'; 

8 . Xoá thông tin statistics:

-- Xoá thông tin complete db statistics:
EXEC DBMS_STATS.delete_database_stats;

-- Xoá thông tin schema statistics:
EXEC DBMS_STATS.delete_schema_stats('DBACVIET');

-- Xoá thông tin table statistics:
EXEC DBMS_STATS.delete_table_stats('DBACVIET', 'EMP');

-- Xoá thông tin column statistics: EXEC DBMS_STATS.delete_column_stats('DBACVIET', 'EMP', 'EMPNO');
-- Xoá thông tin index statistics: EXEC DBMS_STATS.delete_index_stats('DBACVIET', 'EMP_PK');
-- Xoá thông tin dictionary statistics: EXEC DBMS_STATS.delete_dictionary_stats;  -- Xoá thông tin fixed object statistics: exec dbms_stats.delete_fixed_objects_stats; -- Xoá thông tin system statistics: exec dbms_stats.delete_system_stats('STAT_TAB'); 

8. Thiết lập statistics preference:

-- Hiển thị preference của database:
SELECT dbms_stats.get_prefs('PUBLISH') EST_PCT FROM dual;

-- Hiển thị Publish preference của table
-- Hiển thị Publish preference của schema:
  select dbms_stats.get_prefs('PUBLISH', 'SCOTT') from dual -- Hiển thị preference của table
select dbms_stats.get_prefs(ownname=>'DBACVIET',tabname=>'EMP',pname=>'PUBLISH') FROM DUAL;
select DBMS_STATS.get_prefs(ownname=>'DBACVIET',tabname=>'EMP',pname=>'INCREMENTAL') FROM DUAL;
select DBMS_STATS.get_prefs(ownname=>'DBACVIET',tabname=>'EMP',pname=>'GRANULARITY') FROM DUAL;
select DBMS_STATS.get_prefs(ownname=>'DBACVIET',tabname=>'EMP',pname=>'STALE_PERCENT') FROM DUAL;
select DBMS_STATS.get_prefs(ownname=>'DBACVIET',tabname=>'EMP',pname=>'ESTIMATE_PERCENT') FROM DUAL;
select DBMS_STATS.get_prefs(ownname=>'DBACVIET',tabname=>'EMP',pname=>'DEGREE') FROM DUAL;
-- Set table preferences exec dbms_stats.set_table_prefs('DBACVIET','EMP','PUBLISH','FALSE');
exec dbms_stats.set_table_prefs('DBACVIET','EMP','ESTIMATE_PERCENT','20');
exec dbms_stats.set_table_prefs('DBACVIET','EMP','DEGREE','8');
-- Set schema preferences: exec dbms_stats.SET_SCHEMA_PREFS('DBATEST','PUBLISH','FALSE'); exec dbms_stats.SET_SCHEMA_PREFS('DBATEST','ESTIMATE_PERCENT','20'); exec dbms_stats.SET_SCHEMA_PREFS('DBATEST','CASCADE','TRUE'); -- Set database preference: exec dbms_stats.set_database_prefs('PUBLISH', 'TRUE'); exec dbms_stats.set_database_prefs('DEGREE', '16'); -- Set global preference: exec dbms_stats.set_global_prefs('PUBLISH', 'TRUE'); exec dbms_stats.set_global_prefs('DEGREE', '16');  

9 . Xoá preferences :

-- Xoá schema preference:

exec dbms_stats.delete_schema_prefs('DBACVIET', 'DEGREE');
 exec dbms_stats.delete_schema_prefs('DBACVIET', 'CASCADE');
-- Xoá database preference: exec dbms_stats.delete_database_prefs('ESTIMATE_PERCENT', FALSE); exec dbms_stats.delete_database_prefs('DEGREE', FALSE);   

10 . Xuất bản statistics đang pending:

-- Với schema DBACVIET
 exec dbms_stats.publish_pending_stats('DBACVIET',null);
-- Với bảng DBACVIET.EMP
 EXEC DBMS_STATS.PUBLISH_PENDING_STATS ('DBACVIET','EMP');

11. Xoá pending statistics:

-- Với table DBACVIET.EMP
 exec dbms_stats.delete_pending_stats('DBACVIET', 'EMP');
-- Với  schema DBACVIET
 exec dbms_stats.delete_pending_stats('DBACVIET', null);

12. Upgrade stats table:

--Nếu chúng ta import stats table  từ phiên bản cao hơn xuống phiên bản DB thấp hơn thi trước khi import vào DB, chúng ta cần upgrade stats table.  
EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE(OWNNAME =>'RAJ',STATTAB =>'STAT_TEST');

13. Hiển thị và thay đổi vòng đời lưu trữ statistics:

-- Hiển thị vòng đời statistic hiện tại: 
select dbms_stats.get_stats_history_retention from dual;

-- Thay đổi retention
exec DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(60); 

14. Tạo stats table:

--- Tạo bảng staging để lưu trữ dữ liệu statistics:
exec dbms_stats.create_stat_table(ownname => 'SCOTT', stattab => 'STAT_BACKUP',tblspace=>'USERS');  

15. Export stats data:

-- Export full database stats vào bảng SCOTT.STAT_BACKUP

exec dbms_stats.export_database_stats(statown => 'SCOTT' ,stattab=>'STAT_BACKUP');

-- Export statistic của bảng DBACVIET.EMP và lưu statistic vào bảng SCOTT.STAT_BACKUP
exec dbms_stats.export_table_stats(ownname=>'DBACVIET', tabname=>'EMP', statown =>'SCOTT',stattab=>'STAT_BACKUP', cascade=>true);
-- Export statistic của schema DBACVIET vào bảng SCOTT.STAT_BACKUP
exec dbms_stats.export_schema_stats(ownname=>'DBACVIET', statown =>'SCOTT' , stattab=>'STAT_BACKUP');
-- Export statistic của  fixed object stats vào bảng SCOTT.STAT_BACKUP exec dbms_stats.export_fixed_objects_stats(statown => 'SCOTT' ,stattab=>'STAT_BACKUP'); -- Export statistic của dictionary  vào bảng SCOTT.STAT_BACKUP
exec dbms_stats.export_dictionary_stats(statown => 'SCOTT' ,stattab=>'STAT_BACKUP'); -- Export statistic của index DBACVIET.EMP_UK1 vào bảng  SCOTT.STAT_BACKUP table
exec dbms_stats.export_index_stats(ownname=>'DBACVIET', indname=>'EMP_UK1', statown =>'SCOTT',stattab=>'STAT_BACKUP');
   

16. Import stats table data:

-- Import full database stats từ  statistic trong bảng SCOTT.STAT_BACKUP

exec dbms_stats.import_database_stats(statown => 'SCOTT' ,stattab=>'STAT_BACKUP');

-- Import stats của table DBACVIET.EMP từ  statistic trong bảng SCOTT.STAT_BACKUP
exec dbms_stats.import_table_stats(ownname=>'DBACVIET', tabname=>'EMP', statown =>'SCOTT',stattab=>'STAT_BACKUP', cascade=>true);
-- Import stats của schema DBACVIET từ statistic trong bảng SCOTT.STAT_BACKUP
exec dbms_stats.import_schema_stats(ownname=>'DBACVIET', statown =>'SCOTT' , stattab=>'STAT_BACKUP');
-- Import fixed object stats từ statistic trong bảng SCOTT.STAT_BACKUP exec dbms_stats.import_fixed_objects_stats(statown => 'SCOTT' ,stattab=>'STAT_BACKUP'); -- Import dictionary stats từ statistic trong bảng SCOTT.STAT_BACKUP exec dbms_stats.import_dictionary_stats(statown => 'SCOTT' ,stattab=>'STAT_BACKUP'); -- Import stats của index DBACLAS.EMP_UK1 từ statistic trong bảng SCOTT.STAT_BACKUP  exec dbms_stats.import_index_stats(ownname=>'DBACVIET', indname=>'EMP_UK1', statown =>'SCOTT',stattab=>'STAT_BACKUP');

17 . Các câu lệnh kiểm tra statistics:

-- Kiểm tra các bảng có bị stable không 
select owner,table_name,STALE_STATS from dba_tab_statistics where owner='&SCHEMA_NAME' and table_name='&TABLE_NAME';

--Kiểm tra index có bị stale không: 
select owner,INDEX_NAME,TABLE_NAME from DBA_IND_STATISTICS where owner='&SCHEMA_NAME' and index_name='&INDEX_NAME'; 

-- Chi tiết lịch sử của TABLE statistics
setlines 200
col owner for a12
col table_name for a21
select owner,TABLE_NAME,STATS_UPDATE_TIME from dba_tab_stats_history where table_name='&TABLE_NAME';  

 -- Dung lượng lưu trữ statistic trong SYSAUX tablespace: 
SQL> select occupant_desc, space_usage_kbytes from v$sysaux_occupants where OCCUPANT_DESC like '%Statistics%';  

-- Kiểm tra bảng nào bị lock hay không lock statistic:
select owner, table_name, stattype_locked from dba_tab_statistics where stattype_locked is not null and owner not in ('SYS','SYSTEM');

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

=============================
gather statistic, tunning, 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