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 ;
/
RENAME方法进行分区改造的更多相关文章
- 普通表分区改造_rename方式
一.需求 配合开发人员,对业务临时表进行分区改造(业务认为的临时表,只需要保留近一月数据,并非oracle临时表类型) 二.如下记录完整过程 开发需求 TS_PM 以time_key分区 .沟通明确方 ...
- Python os.rename() 方法
概述 os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError.高佣联盟 www.cgewang.com 语法 rename()方法语 ...
- C# rename方法重命名文件
记得C# File类中是没有rename这个方法 所以网上很多都用的是move moveTo copy+delete等这些方法 其实以上的方法 虽然可以实现功能 但看起来总觉得很蛋疼 今天百度 突然发 ...
- node.js中的fs.rename()方法
node.js 中的fs.rename()模块 var fs=require('fs');//node.js的核心模块 原生模块.修改文件名称,可更改文件的存放路径 方法说明 : 修改文件名称,可更改 ...
- 对5月13号中BaseDao方法进行优化改造,更接近于框架的编写
/* * 通用查询.更新升级版 * */ public class BaseDao2 { static { try { Class.forName(ConfigUtil.getValue(" ...
- Appium 三种wait方法(appium 学习之改造轮子)
前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html 知乎Android客户端登陆:htt ...
- 【Spark 深入学习-08】说说Spark分区原理及优化方法
本节内容 ------------------ · Spark为什么要分区 · Spark分区原则及方法 · Spark分区案例 · 参考资料 ------------------ 一.Spark为什 ...
- Linux下基于LVM调整分区容量大小的方法
Linux下调整分区容量大小的方法(适用于centos6-7) 说明:以下方法均使用centos6.9和centos7.4进行测试. Centos6分区容量调整方法 1.web分区空间不足,新添加一块 ...
- HAWQ技术解析(八) —— 大表分区
一.HAWQ中的分区表 与大多数关系数据库一样,HAWQ也支持分区表.这里所说的分区表是指HAWQ的内部分区表,外部分区表在后面"外部数据"篇讨论. 在数据仓库应用中 ...
随机推荐
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]
刚开始学ABAP的时候,学到iternal table时,感觉一阵混乱.搞不清楚什么是work area,什么是header line,以及occurs是干什么用的.今天终于差不多搞明白了(我还是太弱 ...
- js绝对地址图片转换成base64的方法
//将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...
- js中$
$符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的1.首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asdasd ...
- 命名实体识别,使用pyltp提取文本中的地址
首先安装pyltp pytlp项目首页 单例类(第一次调用时加载模型) class Singleton(object): def __new__(cls, *args, **kwargs): if n ...
- GitStack 第三方开源服务器端
GitStack 开源集成Git的界面服务器端 官网URL:http://gitstack.com 详情 请看<分布式版本控制系统Git--使用GitStack+TortoiseGi ...
- Java知多少(73)文件的压缩处理
Java.util.zip 包中提供了可对文件的压缩和解压缩进行处理的类,它们继承自字节流类OutputSteam 和 InputStream.其中 GZIPOutputStream 和 ZipOut ...
- Go 实现异常处理机制
实例: package main import "fmt" type DevideError struct { devidee int devider int } func (de ...
- 【转】在xcode5中修改整个项目名
本文转载自:http://www.cnblogs.com/tbfirstone/p/3601541.html 总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode ...
- Thinkphp5 关联模型
必须建立两个模型分类模型(attr).文章模型(article) attr模型 <?php namespace app\common\model; use think\Model; class ...
- POJ 1904 King's Quest(强连通)
Language: Default King's Quest Time Limit: 15000MS Memory Limit: 65536K Total Submissions: 7635 ...