Oracle清理大表,降水位
背景:一张表的清理机制存在问题,导致该表的数据一直在增加,该表水位已很高,需要对该表的数据进行清理并降水位。
1.1 迁移前准备
步骤一、新建表 p_transaction_bak。
oracle@linux-nxv6:~/orcale > sqlplus test/test
SQL> create table p_transaction_bak
as
select * from p_transaction where 1 = 0;
SQL> alter table p_transaction_bak modify OPERATIONDATE DEFAULT
sysdate;
SQL> alter table p_transaction_bak modify INVALID DEFAULT 0;
步骤二、有需要的有效数据插入新表中。
SQL> alter
session enable parallel dml;
insert /*+ append parallel(p,8) */ into
p_transaction_bak p select /*+ parallel(n,8) */ * from
p_transaction n
where to_char(n.operationdate, 'yyyy-mm-dd') between
to_char(to_date('2016-06-27', 'yyyy-mm-dd'), 'yyyy-mm-dd') and
to_char(to_date('2016-07-04', 'yyyy-mm-dd'), 'yyyy-mm-dd');
commit;
步骤三、为新表 p_transaction
table创建主键和索引
SQL> create unique index PK_PO_TRANSACTION_NEW on
p_transaction_bak(STREAMINGID) tablespace portaloneindx parallel 8 online;
SQL> alter table p_transaction_bak add constraint
PK_PO_TRANSACTION_NEW primary key (STREAMINGID);
SQL> alter index PK_PO_TRANSACTION_NEW noparallel;
SQL> create index ix_transaction_operationdate on
p_transaction_bak(operationdate) tablespace portaloneindx parallel 8 online;
SQL> alter index ix_transaction_operationdate noparallel;
----End
1.2 执行数据迁移
步骤一、停应用
步骤二、以SYSDBA用户登录数据库。
oracle@linux-nxv6:~/orcale > sqlplus
/ as sysdba
步骤三、检查数据表空间和索引表空间使用率。
SQL>select total.tablespace_name,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name) total
where free.tablespace_name = total.tablespace_name;
步骤四、并行将数据插入新表。
SQL> alter
session enable parallel dml;
insert /*+ append parallel(p,8) */ into
p_transaction_bak p select /*+ parallel(n,8) */ * from
p_transaction n
where to_char(n.operationdate, 'yyyy-mm-dd') =
to_char(to_date('2016-07-05', 'yyyy-mm-dd'), 'yyyy-mm-dd');
commit;
步骤五、备份旧表。
SQL> rename p_transaction
to p_transaction_old;
步骤六、重命名新表。
SQL> rename
p_transaction_bak to p_transaction;
----End
1.3 回滚以上操作 oracle@linux-nxv6:~/ orcale >
sqlplus test/test
SQL>rename
p_transaction to p_transaction_new;
SQL>rename p_transaction_old to p_transaction;
SQL>truncate table p_transaction_new;
SQL>drop table p_transaction_new;
----End
Oracle清理大表,降水位的更多相关文章
- Oracle的大表,小表与全表扫描
大小表区分按照数据量的大小区分: 通常对于小表,Oracle建议通过全表扫描进行数据访问,对于大表则应该通过索引以加快数据查询,当然如果查询要求返回表中大部分或者全部数据,那么全表扫描可能仍然是最好的 ...
- Oracle对大表进行delete注意事项
如果对大表进行大量的delete和update,那么可以注意一下如下说明: (1) 查看执行计划,如果说删除的记录很多,走索引的成本会比全表扫描更大,因为更新数据时还需要做一些约束校验和创建index ...
- oracle count 大表
刚从生产环境导了一个大表到测试环境,迫不及待的要好好玩弄一下. 1.coun(1) ) from table_name; 条数: 567979280 时间:4:47 2.count 索引字段 sele ...
- Oracle 删除大表中部分数据
需求: 项目中有一张表大概有7000多万条数据,造成表空间已满,需要清理部分数据,打算清理3000万. 2B 做法: delete from table_name where ID > '400 ...
- ORACLE 清理SYSAUX表空间
在数据库检查中发现SYSAUX表空间占用过大,SYSAUX是ORACLE10G开始提供的功能,用于数据库为SYSTEM表空间减负. 用以下语句查出相应的表空间值 select a.tablespace ...
- 【原创】记一次MySQL大表高并发写入引发CPU飙升的排障过程
目录 一.故障现象... 1 二.初步分析... 2 三.排障过程... 2 1.排查是否QPS或insert并发请求上升导致问题发生... 2 2.排查是否锁资源等待或block导致了insert变 ...
- oracle 大表删除数据后,回收空间的问题。
在oracle中由于表结构设计不合理或者需要清楚老数据的时候,经常需要对大表数据进行清理. 一般有一下几种方法: 1. 删除大部分数据,留下小部分数据.我们可以把需要保留的数据转移到别的表,然后再把大 ...
- oracle大表添加字段default经验分享
当oracle单表数据量上亿时,对表进行alter table aa add column_1 varchar2(2) defalut 'Y';时,效率及安全性是必须考虑的因素. 本帖以2亿的数据表a ...
- [记录]一则清理MySQL大表以释放磁盘空间的案例
一则清理MySQL大表以释放磁盘空间的案例 一.基本情况: 1.dbtest库554G,先清理st_online_time_away_ds(37G)表的数据,保留半年的数据: 1)删除的数据:sele ...
随机推荐
- 如何解决svn Authorization failed错误
出现这种问题肯定是SVN服务器出现了问题,需要修改其三个配置文件: 1.svnserve.conf: [general] anon-access = read auth-access = write ...
- LeetCode之Longest Substring Without Repeating Characters
[题目描述] Given a string, find the length of the longest substring without repeating characters. Exampl ...
- Java基础学习-Collection体系结构和迭代测试
package Collection; import java.util.ArrayList; import java.util.Collection; import java.util.Iterat ...
- Linux之sshd服务
---恢复内容开始--- ---恢复内容结束--- 一.linux中对服务管理与控制(以sshd为例) 1.什么是服务 可以用来给客户提供相关操作,对自己没有什么好处 2.用什么控制服务 系统初始化进 ...
- Java高级软件工程师面试题
Java 软件高级工程师笔试题 [智力部分](30分) 1. 烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5分) 两头同时烧 2. 4,4,10,10,加减乘除,怎么出24点?四个数字分别 ...
- 动态PIVOT行转列
id name subject score remark1 l math 86 2 l eng 68 3 l phy 88 4 z chn 99 5 z math 92 6 z com 98 7 z ...
- 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)
简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...
- Leetcode 590. N-ary Tree Postorder Traversal
DFS,递归或者栈实现. """ # Definition for a Node. class Node: def __init__(self, val, childre ...
- flutter笔记1:VScode安装dart code插件踩坑记录
新手菜鸟一枚,想从产品转入技术坑,目标:移动端APP开发.最近听技术达人 飞狐 说flutter beta发布了,支持跨平台APP开发,各种强大易上手,于是乎零基础入坑~话说想提高英文水平的同学,请移 ...
- 为Java程序员金三银四精心挑选的五十道面试题与答案
1.面向对象的特征有哪些方面? [基础] 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问 ...