Oracle百亿数据清理方案-数据泵dmp

本文介绍了Oracle中处理大数据量清理的策略,包括为何避免使用`delete`操作,选择`rename`表配合重建索引的方式,以及按月自动分区的方法。详细讲解了按时间戳、日期和字符字段进行分区的实现,并提供了脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一,Oracle数据泵导入导出dmp

(一)设置目录和操作权限

(二)导入

(三)导出

二,案例-Oracle 数据清理

(一)为什么大数据量不能用delete删除

(二)选择使用rename重建表方式

1,综上所述选择rename方式把,历史数据进行备份;

2,删除索引(会与原历史表的重复);

3,重新创建历史表,并按月添加分区;

3.1,oracle按时间戳(TIMESTAMP)类型按月自动分区

3.2,oracle按时间DATE类型按月自动分区

3.3,oracle按字符VARCHAR2类型字段按月自动分区

3.4 查看分区数据

(三)sh脚本

三,删除历史表

(一)先truncate 后drop删除历史表

(二)分步分阶段大表删除

(三)观察表空间大小


一,Oracle数据泵导入导出dmp

(一)设置目录和操作权限

1.登录root权限,然后切换到Oracle用户下;
su - oracle;

2.登录dba权限数据库;
sqlplus sys/123456 as sysdba;

2.1 检查目录是否存在
#select * from dba_directories where DIRECTORY_NAME='EXPDP_PATH';


3.连接成功后。创建目录、后面引号部分是你的dmp文件所在的路径。必须放到Oracle文件下面。路径不要有中文;
#应programmer_ada同学提议修改
#expdp目录需额外创建,根据自身业务调整
create directory EXPDP_PATH as '/home/oracle/expdp';

4.授权成功后。把读写IMPDMP目录权限赋予给cim 数据库用户;
grant read,write on directory IMPDMP to cim;

5.退出数据库
exit;

6.如果提示没有directory权限
grant create any directory to oracle;
grant drop any dirctory to oracle;


7.如果该目录不使用,建议删除
drop directory EXPDP_PATH; 

或者覆盖 create or replace 

针对2.1 ,3步骤的优化

2.1 检查目录是否存在
#select * from dba_directories where DIRECTORY_NAME='IMPDMP';

3.对导出的.dmp做目录目录上的调整,不建议直接使用:标准目录
#应programmer_ada同学提议修改
#expdp目录需额外创建,根据自身业务调整
create directory EXPDP_PATH as '/home/oracle/expdp';


如果该目录不使用,建议删除
drop directory EXPDP_PATH; 

(二)导入

username 用户名,password 密码  database 数据库名称

#导入整个用户的表
impdp username/password@database directory=IMPDMP  dumpfile=dumpName.dmp;

(三)导出


同样需要文件授权 ; username 用户名,password 密码  database 数据库名称

expdp username/password@databasedumpfile=22.dmp logfile=tables.log  directory=IMPDMP;

#按表,有条件导出
expdp username/password@database directory=IMPDMP  dumpfile=22.dmp logfile=22.log table=tableName query=\"t where t.id=1\";

二,案例-Oracle 数据清理

(一)为什么大数据量不能用delete删除

delete删除是逐条,需要进行事务提交,数据量大的时候,耗时会非常长,还会造成undo表空间不足。

Oracle undo表空间

当我们对数据库进行DML操作的时候,Oracle能通过undo为我们提供保存修改前数据的镜像。

 1、提供读一致性

      例如用户A修改表TB1,在他进行操作前Oracle将TB1存放于undo中,在用户A修改的同时用户B若访问TB1,则访问的是undo中的TB1,其他访问TB1的用户也是如此,因此在用户A修改TB1的时候,undo保证了其他用户对TB1的读一致性。

2、为事务提供回滚

      通过保留在undo中的镜像来恢复用户未提交的数据。当用户未提交数据,而此时数据库发生异常关闭,undo中保留的镜像会自动将数据回滚。

3、提供闪回操作

      保留在undo中的镜像在事务结束后并未马上删除,而是保留了一段时间,在这段时间内用户即便已经提交了事务,仍可以通过 flashback 技术查询。

  

(二)选择使用rename重建表方式

把原有表改为历史表,然后把表中对应索引也删除重建;

对原有表,索引重建,并添加分区。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值