• RENAME方法进行分区改造


    1、新建零时表

    set time on timing on

    create table RPTUSER.RPT_TMP_10086BDL_bak

    (

    HANDLEDATE DATE,

    TEL_CALLING VARCHAR2(15)

    ) TABLESPACE "IS_IEF_CBT"

    PARTITION BY RANGE ("HANDLEDATE")

    ( partition P201805 values less than (TO_DATE('2018-06-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201806 values less than (TO_DATE('2018-07-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201807 values less than (TO_DATE('2018-08-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201808 values less than (TO_DATE('2018-09-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201809 values less than (TO_DATE('2018-10-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201810 values less than (TO_DATE('2018-11-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201811 values less than (TO_DATE('2018-12-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201812 values less than (TO_DATE('2019-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201901 values less than (TO_DATE('2019-02-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201902 values less than (TO_DATE('2019-03-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201903 values less than (TO_DATE('2019-04-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201904 values less than (TO_DATE('2019-05-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201905 values less than (TO_DATE('2019-06-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201906 values less than (TO_DATE('2019-07-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201907 values less than (TO_DATE('2019-08-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201908 values less than (TO_DATE('2019-09-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201909 values less than (TO_DATE('2019-10-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201910 values less than (TO_DATE('2019-11-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201911 values less than (TO_DATE('2019-12-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition P201912 values less than (TO_DATE('2020-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss')) tablespace IS_IEF_CBT,

    partition pmax values less than (MAXVALUE) tablespace IS_IEF_CBT);

    2、创建零时失效对象表

    create table system.dba_object_20180820 as select * from dba_objects;

    select count(*) from system.dba_object_20180820 where status <> 'VALID';

    3、rename表

    declare

    begin

    execute immediate 'alter table RPTUSER.RPT_TMP_10086BDL rename to RPT_TMP_10086BDL_20180820';

    execute immediate 'alter table RPTUSER.RPT_TMP_10086BDL_bak rename to RPT_TMP_10086BDL';

    end ;

    /

    4、对比是否有新增失效对象

    select count(*) from system.dba_object_20180820 where status <> 'VALID'

    union all

    select count(*) from dba_objects where status <> 'VALID';

    5、对比两个表的权限

    select 'grant ' || privilege || ' on ' || owner || '.' || table_name ||

    ' to ' || grantee || ';' grant_sql

    from dba_tab_privs

    where table_name = 'RPT_TMP_10086BDL_20180820';

    select 'grant ' || privilege || ' on ' || owner || '.' || table_name ||

    ' to ' || grantee || ';' grant_sql

    from dba_tab_privs

    where table_name = 'RPT_TMP_10086BDL';

    6、插入表数据

    insert into RPTUSER.RPT_TMP_10086BDL select * from RPTUSER.RPT_TMP_10086BDL_20180820

    where HANDLEDATE >= to_date('2018-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss')

    and HANDLEDATE < to_date('2018-06-01 00:00:00','yyyy-mm-dd hh24:mi:ss');

    commit;

    7.--收集统计信息

    set line 300 pages 2000 long 999999

    select 'exec dbms_stats.gather_table_stats (ownname=>''' || table_owner ||

    ''', tabname=>''' || table_name || ''', partname=>''' ||

    partition_name ||

    ''',method_opt=>''FOR ALL COLUMNS SIZE 1'',estimate_percent=>10,degree=>10,cascade=>true);'

    from dba_tab_partitions

    where table_owner = 'RPTUSER'

    and table_name = 'RPT_TMP_10086BDL'

    and last_analyzed is null

    order by partition_name;

    exec dbms_stats.gather_table_stats (ownname=>'RPTUSER', tabname=>'RPT_TMP_10086BDL', partname=>'P201805',method_opt=>'FOR ALL COLUMNS SIZE 1',estimate_percent=>10,degree=>10,cascade=>true);

    exec dbms_stats.gather_table_stats (ownname=>'RPTUSER', tabname=>'RPT_TMP_10086BDL', partname=>'P201806',method_opt=>'FOR ALL COLUMNS SIZE 1',estimate_percent=>10,degree=>10,cascade=>true);

    exec dbms_stats.gather_table_stats (ownname=>'RPTUSER', tabname=>'RPT_TMP_10086BDL', partname=>'P201807',method_opt=>'FOR ALL COLUMNS SIZE 1',estimate_percent=>10,degree=>10,cascade=>true);

    exec dbms_stats.gather_table_stats (ownname=>'RPTUSER', tabname=>'RPT_TMP_10086BDL', partname=>'P201808',method_opt=>'FOR ALL COLUMNS SIZE 1',estimate_percent=>10,degree=>10,cascade=>true);

    --查看收集到的统计信息

    ora tstat RPT_TMP_10086BDL RPTUSER

    8、备份

    expdp "/ as sysdba" directory=DIR_DP tables=RPTUSER.RPT_TMP_10086BDL_20180820 dumpfile=RPTUSER.RPT_TMP_10086BDL_20180820_%U.dmp compression=all filesize=12g parallel=5 logfile=RPTUSER.RPT_TMP_10086BDL_20180820.log

    9、MOVE剩余数据到其他表空间

    alter table RPTUSER.RPT_TMP_10086BDL_20180820 move tablespace T_WMSUSERN parallel 4;

    10 rebuild 索引

    ora unusable

    ALTER INDEX RPTUSER.RPT_TMP_10086BDL1 REBUILD ONLINE tablespace TS_WMS_DATA;

    ######################################回退方案###############################################

    declare

    begin

    execute immediate 'alter table RPTUSER.RPT_TMP_10086BDL rename to RPTUSER.RPT_TMP_10086BDL_bak';

    execute immediate 'alter table RPTUSER.RPT_TMP_10086BDL_20180820 rename to RPTUSER.RPT_TMP_10086BDL';

    end ;

    /

  • 相关阅读:
    linux grep --我最喜欢的命令~~
    svmrank 的误差惩罚因子c选择 经验
    转:机器学习中的算法(2)-支持向量机(SVM)基础
    转:关于python文件操作大全
    python 求两个时间差
    多个excel合并(excel2007)
    oracle12c 新建表空间
    数据库表被锁了
    join ,left join ,right join有什么区别
    最简洁的权限(菜单)控制
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9954317.html
Copyright © 2020-2023  润新知