oracle 高水位分析处理

来源:这里教程网 时间:2026-03-03 19:04:37 作者:

1、确认业务停机无数据写入表 2、设置表为只读 alter table RPTPROD.RPT_ODST_LOTSTA_HST read only; 3、导出表 expdp  bkadmin/""  directory=DUMP dumpfile=tables_2023-10-25_%U.dmp filesize=20480M logfile=tables_2023-10-25.log tables=RPTPROD.RPT_ODST_LOTSTA_HST parallel=2 cluster=N job_name=my_job 4、重命名旧表 conn RPTPROD/"" rename RPT_ODST_LOTSTA_HST to RPT_ODST_LOTSTA_HST_bak_20231026; alter index ROLOTSTACR2A_IDX03  rename to ROLOTSTACR2A_IDX03_bak_20231026; alter index ROLOTSTACR2A_IDX04  rename to ROLOTSTACR2A_IDX04_bak_20231026; alter index ROLOTSTACR2A_IDX05  rename to ROLOTSTACR2A_IDX05_bak_20231026; alter index ROLOTSTACR2A_IDX06  rename to ROLOTSTACR2A_IDX06_bak_20231026; alter index ROLOTSTACR2A_IDX01  rename to ROLOTSTACR2A_IDX01_bak_20231026; alter index ROLOTSTACR2A_IDX02  rename to ROLOTSTACR2A_IDX02_bak_20231026; 5、导入表 impdp  bkadmin/""  directory=DUMP dumpfile=tables_2023-10-25_%U.dmp logfile=imp_tab_1026.log  tables=RPTPROD.RPT_ODST_LOTSTA_HST parallel=2 job_name=my_job2 exclude=index:"in('ROLOTSTACR2A_IDX04')" 6、删除旧表 drop table RPTPROD.RPT_ODST_LOTSTA_HST_bak_20231026; SELECT * FROM ( SELECT TABLE_NAME, (BLOCKS*8192/1024/1024) AS HWH_MB, --已占用大小(高水位线) (NUM_ROWS*AVG_ROW_LEN/1024/1024) AS USED_MB , --实际大小 ROUND((NUM_ROW*SAVG_ROW_LEN/1024/1024)/(BLOCKS*8192/1024/1024),3) AS USED_RATE --实际使用率 FROM USER_TABLES WHERE BLOCKS >0 ) WHERE USED_RATE <0.3 --(使用率不到30%) 查询表的空间使用情况 SELECT TABLE_NAME, (BLOCKS * 8192 / 1024 / 1024) “高水位空间MB”, (NUM_ROWS * AVG_ROW_LEN / 1024 / 1024) “已用空间MB”, blocks*10/100*8192/1024/1024 “预留空间MB(pctfree)”, (BLOCKS * 8192 / 1024 / 1024)-(NUM_ROWS * AVG_ROW_LEN / 1024 / 1024)-(blocks*10/100*8192/1024/1024) “浪费空间MB” FROM USER_TABLES WHERE table_name = ‘T3’; analyse index t_idx validate structure; select name,height,pct_used,del_lf_rows/lf_rows from index_stats; 1.HEIGHT>=4 2.PCT_USED<50% 3.DEL_ROWS/LF_ROWS>0.2 如果查询到的值符合以上三种情况的任意一种,就说明我们需要进行碎片整理工作了 碎片整理语句:alter index ind_1 rebuild [online] [tablespace name]; 一般情况下都是要加上online参数的,不必加tablespace name。

相关推荐