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 ... 
随机推荐
- Django-自定义分页组件
			1.封装的分页代码: class PageInfo(object): def __init__(self,current_page,all_count,per_page,base_url,show_p ... 
- LeetCode OJ:Peeking Iterator(peeking 迭代器)
			Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ... 
- myeclipes快捷键
			package com.Test02;//alt+shift+s+s 自动创建toString()//ctrl+ shift+ o 自动导包//* alt+ shift +s+o 有参构造//* a ... 
- 解决chrome报Not allowed to load local resource错误的方法
			最近项目中遇到了关于图片的更改->保存->本地读取 在本地读取的环节上面出现了错误,一开始用的是直接本地路径,但是在页面上调试的出现了下面的错误,他的路径还是相对路径,下图所示: Goog ... 
- Windows下安装tomcat
			一.Tomcat下载与安装: 1.直接到官网下载Tomcat安装程序包:http://tomcat.apache.org/ 2.下载下来后是个压缩包,如:apache-tomcat-8.0.26,解压 ... 
- operator模块常见方法介绍
			operator.concat(a, b) 对于 a.b序列,返回 a + b(列表合并) --------------------------------- operator.countOf(a, ... 
- linux下c语言源码编译
			一.源码编译过程 源码 ---> 预处理 ---> 编译 ---> 汇编 ---> 链接 --->执行 我们可以把它分为三部分来完成: ./configure ... 
- openssl之aes加密(源码分析 AES_encrypt 与 AES_cbc_encrypt ,加密模式)
			首先要了解AES加密是什么,以及几种加密模式的区别.之后才是编程.具体的编程案例,在下面的链接. openssl之aes加密(AES_cbc_encrypt 与 AES_encrypt 的编程案例) ... 
- 【剑指offer】数组中的逆序对。C++实现
			原创文章,转载请注明出处! 博客文章索引地址 博客文章中代码的github地址 # 题目 # 思路 基于归并排序的思想统计逆序对:先把数组分割成子数组,再子数组合并的过程中统计逆序对的数目.统计逆序对 ... 
- Linux服务器运行环境搭建(四)——Tomcat安装
			官网地址:http://tomcat.apache.org 官网下载地址(Tomcat6):http://tomcat.apache.org/download-60.cgi,Windows下载wind ... 
