oracle数据库重启命令(卸载oracle客户端步骤)

概述有这么个需求,有一张5000万大表,需要保留最后3个月数据,也就是1000万数据,而这张表使用很频繁,生产环境也是7*24小时不停,如果用分段delete影响的时间太长,所以用了rename切换的方法。这里先在测试数据库做一下演练。以测试环境

概述

有这么个需求,有一张5000万大表,需要保留最后3个月数据,也就是1000万数据,而这张表使用很频繁,生产环境也是7*24小时不停,如果用分段delete影响的时间太长,所以用了rename切换的方法。这里先在测试数据库做一下演练。

以测试环境BN_SEQUENCE表做测试,数据量大约是6千万。

oracle数据库重启命令(卸载oracle客户端步骤)

oracle数据库重启命令(卸载oracle客户端步骤)

思路

oracle数据库重启命令(卸载oracle客户端步骤)

oracle数据库重启命令(卸载oracle客户端步骤)

最近有点喜欢上画图,感觉形象点,可能有点丑,大家不要介意~

实现方案

1、获取A表定义、索引、触发器、外键约束

这里的表定义、索引、主外键实际上用PLSQL就可以直接看到了,所以就不写了,只写了触发器的。

相关sql:

–查看表上触发器定义
SELECT * FROM DBA_TRIGGERS WHERE TABLE_NAME=\’BN_SEQUENCE\’;
SELECT DBMS_METADATA.GET_DDL(\’TRIGGER\’,\’CHK_BIU_BN_SEQUENCE\’,\’GLOGOWNER\’) FROM DUAL;
SELECT DBMS_METADATA.GET_DDL(\’TRIGGER\’,\’BN_SEQUENCE_PN\’,\’GLOGOWNER\’) FROM DUAL;
— Create table
create table BN_SEQUENCE
(
BN_RULE_GID VARCHAR2(101 CHAR) not null,
BN_CONTEXT VARCHAR2(300 CHAR) not null,
BN_SEQUENCE_ID VARCHAR2(50 CHAR) not null,
CURVALUE VARCHAR2(50 CHAR),
DOMAIN_NAME VARCHAR2(50 CHAR) not null,
INSERT_USER VARCHAR2(128 CHAR) not null,
INSERT_DATE DATE not null,
UPDATE_USER VARCHAR2(128 CHAR),
UPDATE_DATE DATE
)
tablespace DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1
next 1
minextents 1
maxextents unlimited
pctincrease 0
);
…..

2、创建B表–BN_SEQUENCE_BAK

–这里只创建表定义,不加约束、索引、触发器、外键
— Create table
create table BN_SEQUENCE_BAK
(
BN_RULE_GID VARCHAR2(101 CHAR) not null,
BN_CONTEXT VARCHAR2(300 CHAR) not null,
BN_SEQUENCE_ID VARCHAR2(50 CHAR) not null,
CURVALUE VARCHAR2(50 CHAR),
DOMAIN_NAME VARCHAR2(50 CHAR) not null,
INSERT_USER VARCHAR2(128 CHAR) not null,
INSERT_DATE DATE not null,
UPDATE_USER VARCHAR2(128 CHAR),
UPDATE_DATE DATE
)
tablespace DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1
next 1
minextents 1
maxextents unlimited
pctincrease 0
);

3、分段insert

为了避免对线上环境的影响,建议分段insert,插入最近3个月的数据。

insert into BN_SEQUENCE_BAK select * from BN_SEQUENCE where update_date >=to_date(\’2019/08/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’) and
update_date <to_date(\’2019/09/19 14:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’);
insert into BN_SEQUENCE_BAK select * from BN_SEQUENCE where update_date >=to_date(\’2019/07/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’) and
update_date <to_date(\’2019/08/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’);
insert into BN_SEQUENCE_BAK select * from BN_SEQUENCE where update_date >=to_date(\’2019/06/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’) and
update_date <to_date(\’2019/07/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’);
insert into BN_SEQUENCE_BAK select * from BN_SEQUENCE where update_date >=to_date(\’2018/06/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’) and
update_date <to_date(\’2019/06/19 00:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’);

oracle数据库重启命令(卸载oracle客户端步骤)

oracle数据库重启命令(卸载oracle客户端步骤)

4、切换表

这里实际上我在生产环境做切换也踏坑了,没考虑到有物化视图这种情况,所以导致切换不了。

alter table BN_SEQUENCE rename to BN_SEQUENCE_ARCH;
alter table BN_SEQUENCE_BAK rename to BN_SEQUENCE;

oracle数据库重启命令(卸载oracle客户端步骤)

oracle数据库重启命令(卸载oracle客户端步骤)

5、数据补录

把前面插入数据后到切换表后的数据做一下补录。

insert into BN_SEQUENCE select * from BN_SEQUENCE_ARCH where update_date >=to_date(\’2019/09/19 14:00:00\’, \’yyyy/mm/dd hh24:mi:ss\’)

oracle数据库重启命令(卸载oracle客户端步骤)

oracle数据库重启命令(卸载oracle客户端步骤)

6、B表创建索引、触发器

记得需要重命名。

— Add comments to the table
comment on table BN_SEQUENCE
is \’This table stores the current sequence value of the business number.\’;
— Add comments to the columns
comment on column BN_SEQUENCE.BN_RULE_GID
is \’BN_RULE_GID contains the unique identifier for the Business Number (BN) rule.\’;
— Create/Recreate primary, unique and foreign key constraints
alter table BN_SEQUENCE
add constraint PK_BN_SEQUENCE primary key (BN_RULE_GID, BN_CONTEXT, BN_SEQUENCE_ID)
using index
tablespace INDX
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
);
alter table BN_SEQUENCE
add constraint FK_BN_SEQRULE_GID foreign key (BN_RULE_GID)
references BN_RULE (BN_RULE_GID);
— Grant/Revoke object privileges
grant select, insert, update, delete on BN_SEQUENCE to APP_USER;
grant select on BN_SEQUENCE to APP_USER_SELECT;
grant select, insert, update, delete on BN_SEQUENCE to EXT_USER;
….

7、校验数据

oracle数据库重启命令(卸载oracle客户端步骤)

oracle数据库重启命令(卸载oracle客户端步骤)

结果:数据全部迁移了,保留了去年6月19号到现在的数据,整个过程10分钟

8、drop表

建议保留一段时间后再执行。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/31018.html

(0)
nan
上一篇 2021-09-28
下一篇 2021-09-28

相关推荐

  • 贵州哪些大学可以考在在职研究生(贵州哪些大学)

    贵州大学创建于1902年,历经贵州大学堂、省立贵州大学、国立贵州农工学院、国立贵州大学等时期,1950年10月定名为贵州大学。1951年11月,毛泽东主席亲笔题写“贵州大学”校名。1997年8月,与贵州农学院等院校合并。2004年8月,与贵州工业大学…

    2022-01-18
    0
  • 茶叶蛋能够保存多少天(茶叶蛋怎么保存可以不容易坏)

    茶叶蛋是用茶叶煮鸡蛋放一些其余的配料制作成的,有许多人都十分喜欢吃茶叶蛋,当我们自己家做了茶叶蛋之后可以保存多久呢?茶叶蛋可以用哪些方法保存让它不容易坏?和久久派小编一起来看看吧。茶叶蛋因其做法简单,

    2022-03-10
    0
  • 什么时候买空调划算(空调几月份买最便宜)

    作为十年的资深空调销售给大家几点建议:1.一定要在淡季3月份和10月份买空调,这两个月是全年淡季时候,因为天气不冷也不热,买的人少,门店没有生意,会有大的折扣跑量冲业绩。这时候买空调价格便宜。2.淡季时候安装师傅也不忙,安装起来更有耐心。要知道空调

    2021-09-28
    0
  • 阿里云ssl免费证书申请条件(阿里云ssl证书安装教程)

    一、在阿里云购买免费的SSL证书1、在阿里云后台进入“产品与服务”->“SSL证书(应用安全)”。2、点击“购买证书”,选择免费型DVSSL。二、证书签发申请证书购买完成后需要进行证书的签发申请,将证书和域名进行绑定。1、对已购买的证书点击

    2021-09-28 随笔
    0
  • 互联网游戏周边创业项目(网络游戏创业)

    国内手机游戏仍在高速增长,全球市场影响力日益加深。这吸引了无数风险投资者进入游戏行业。那么,游戏创业的项目是什么?第一个游戏结束时,游戏结束时的制作成本从几十万到几百万不等。成本相当高,这是大多数人无

    2022-01-19
    0
  • 售罄率一般多少才合理(售罄率计算公式是什么)

    做商品工作的小伙伴平时一定少不了写分析做报告,比如近期销售低迷,商品要分析总结;库存大了,商品也得分析原因;售罄率低了,商品还得分析总结…….虽说商品不是万能的,但是没有商品的分析和总结却是万万不能的,所以今天我们借此拿一个最易背锅的售罄率

    2021-11-30
    0

发表回复

登录后才能评论