• 间隔分区表导出指定的分区数据


    180大表备份处理方法:

    准备备份空间:

    SQL> conn zy/xxx

    已连接。

    SQL> create or replace directory bak as '/bak/dmp180';

    目录已创建。

    SQL> grant read,write on directory bak to public;

    授权成功。

    SQL> exit        

    查看最大分区表数据:

             SEGMENT_NAME    SUM(BYTES)/1024/1024/1024

    1       IPTV_ZTE_DATA      751

    2       IPTV_HW_DATA      266

    3       AAA_DATA       63

    4       KD_HW_DATA          39

    5       HJLL_ONLINE_DATA        38

    6       HJJL_LIULIANG_DATA     21

    7       KD_FH_DATA  6

    参考语句zy用户下:

    select segment_name,sum(bytes)/1024/1024/1024 from user_segments

    where  segment_type in('TABLE PARTITION') group by segment_name  order by sum(bytes) desc;

    确认可清理备份的数据:

     select * from IPTV_ZTE_DATA where currenttime

     select * from IPTV_HW_DATA  where PCF_TIMESTAMP

     select * from AAA_DATA where inserttime

     select * from KD_HW_DATA where inserttime

    select * from HJLL_ONLINE_DATA  where  inserttime

    select * from HJJL_LIULIANG_DATA where INSERTTIME

    select * from KD_FH_DATA where INSERTTIME

    准备导出备份脚本:

    通过pl/sql 查看分区结构,查看对应表2018年3月1日之前的分区名称

    或者通过如下语句查询:

    1. SELECT *
    2. FROM (SELECT TABLE_OWNER,
    3. TABLE_NAME,
    4. PARTITION_NAME,
    5. substr(LONG_HELP.SUBSTR_OF('SELECT HIGH_VALUE
    6. FROM DBA_TAB_PARTITIONS WHERE TABLE_OWNER=:TABLE_OWNER
    7. AND TABLE_NAME=:TABLE_NAME
    8. AND PARTITION_NAME=:PARTITION_NAME',
    9. 1,
    10. 4000,
    11. 'TABLE_OWNER',
    12. TABLE_OWNER,
    13. 'TABLE_NAME',
    14. TABLE_NAME,
    15. 'PARTITION_NAME',
    16. PARTITION_NAME),11,19) HIGH_VALUE
    17. FROM DBA_TAB_PARTITIONS
    18. where table_name in('IPTV_ZTE_DATA','IPTV_HW_DATA','AAA_DATA','KD_HW_DATA','HJLL_ONLINE_DATA','HJJL_LIULIANG_DATA','KD_FH_DATA')
    19. ) b
    20. where b.high_value='2018-02-28 00:00:00'
    21. order by HIGH_VALUE;

    函数准备:

    1. create or replace package long_help
    2. authid current_user
    3. as
    4. function substr_of
    5. ( p_query in varchar2,
    6. p_from in number,
    7. p_for in number,
    8. p_name1 in varchar2 default NULL,
    9. p_bind1 in varchar2 default NULL,
    10. p_name2 in varchar2 default NULL,
    11. p_bind2 in varchar2 default NULL,
    12. p_name3 in varchar2 default NULL,
    13. p_bind3 in varchar2 default NULL,
    14. p_name4 in varchar2 default NULL,
    15. p_bind4 in varchar2 default NULL )
    16. return varchar2;
    17. end;
    18. /
    19. create or replace package body long_help
    20. as
    21. g_cursor number := dbms_sql.open_cursor;
    22. g_query varchar2(32765);
    23. procedure bind_variable( p_name in varchar2, p_value in varchar2 )
    24. is
    25. begin
    26. if ( p_name is not null )
    27. then
    28. dbms_sql.bind_variable( g_cursor, p_name, p_value );
    29. end if;
    30. end;
    31. function substr_of
    32. ( p_query in varchar2,
    33. p_from in number,
    34. p_for in number,
    35. p_name1 in varchar2 default NULL,
    36. p_bind1 in varchar2 default NULL,
    37. p_name2 in varchar2 default NULL,
    38. p_bind2 in varchar2 default NULL,
    39. p_name3 in varchar2 default NULL,
    40. p_bind3 in varchar2 default NULL,
    41. p_name4 in varchar2 default NULL,
    42. p_bind4 in varchar2 default NULL )
    43. return varchar2
    44. as
    45. l_buffer varchar2(4000);
    46. l_buffer_len number;
    47. begin
    48. if ( nvl(p_from,0) <= 0 )
    49. then
    50. raise_application_error
    51. (-20002, 'From must be >= 1 (positive numbers)' );
    52. end if;
    53. if ( nvl(p_for,0) not between 1 and 4000 )
    54. then
    55. raise_application_error
    56. (-20003, 'For must be between 1 and 4000' );
    57. end if;
    58. if ( p_query <> g_query or g_query is NULL )
    59. then
    60. if ( upper(trim(nvl(p_query,'x'))) not like 'SELECT%')
    61. then
    62. raise_application_error
    63. (-20001, 'This must be a select only' );
    64. end if;
    65. dbms_sql.parse( g_cursor, p_query, dbms_sql.native );
    66. g_query := p_query;
    67. end if;
    68. bind_variable( p_name1, p_bind1 );
    69. bind_variable( p_name2, p_bind2 );
    70. bind_variable( p_name3, p_bind3 );
    71. bind_variable( p_name4, p_bind4 );
    72. dbms_sql.define_column_long(g_cursor, 1);
    73. if (dbms_sql.execute_and_fetch(g_cursor)>0)
    74. then
    75. dbms_sql.column_value_long
    76. (g_cursor, 1, p_for, p_from-1,
    77. l_buffer, l_buffer_len );
    78. end if;
    79. return l_buffer;
    80. end substr_of;
    81. end;
    82. /

    expdp zy/xxx directory=bak tables=IPTV_HW_DATA dumpfile=IPTV_HW_DATA_201803.dmp logfile=IPTV_HW_DATA_201803.log parfile=IPTV_HW_DATA_201803.par

    文件IPTV_HW_DATA_201803.par内容:

    EXCLUDE=STATISTICS,INDEX,TABLE_DATA:"IN (select partition_name from (select partition_name,to_number(substr(partition_name,instr(partition_name,'_P',-1)+2)) n from user_tab_partitions a where a.table_name='IPTV_HW_DATA') b where b.n>20759)"

    expdp zy/xxx directory=bak tables=IPTV_ZTE_DATA dumpfile=IPTV_ZTE_DATA_201803.dmp logfile=IPTV_ZTE_DATA_201803.log parfile=IPTV_ZTE_DATA_201803.par

    文件IPTV_ZTE_DATA_201803.par内容:

    EXCLUDE=STATISTICS,INDEX,TABLE_DATA:"IN (select partition_name from (select partition_name,to_number(substr(partition_name,instr(partition_name,'_P',-1)+2)) n from user_tab_partitions a where a.table_name='IPTV_ZTE_DATA') b where b.n>20760)"

    nohup ./xxx.sh > ./xxx.out &

    准备清理分区脚本:

    select 'alter table AAA_DATA drop partition '||partition_name|| ';' from (select partition_name,to_number(substr(partition_name,instr(partition_name,'_P',-1)+2)) n from user_tab_partitions a where a.table_name='AAA_DATA') b where b.n<=20624 order by b.n

    查看索引状态:(本地索引不受drop分区影响)

    select a.index_name,a.partition_name,a.status from user_ind_partitions a,user_indexes b

     where a.index_name=b.index_name and b.table_name='KD_FH_DATA' and a.status<>'USABLE'

  • 相关阅读:
    【stack】【queue】【priority_queue】【deque】详解
    【Redis系列】缓存击穿、穿透、雪崩解决方案详解
    【数据结构初阶】直接插入排序和希尔排序&链表排序
    如何实现一个业务系统的自动化框架搭建
    【备战NOIP】专题复习2-动态规划-区间DP
    redis导致fullGc
    springboot启动自动配置原理分析
    DeferredResult解决了什么问题
    猕猴桃的红色果肉受到特定的激活-抑制系统的控制
    PHP请求API接口案例采集电商平台数据获取淘宝/天猫优惠券查询示例
  • 原文地址:https://blog.csdn.net/jycjyc/article/details/136214343