日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

oracle數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟

概述有這么個需求,有一張5000萬大表,需要保留最后3個月數(shù)據(jù),也就是1000萬數(shù)據(jù),而這張表使用很頻繁,生產(chǎn)環(huán)境也是7*24小時不停,如果用分段delete影響的時間太長,所以用了rename切換的方法 。這里先在測試數(shù)據(jù)庫做一下演練 。
以測試環(huán)境BN_SEQUENCE表做測試,數(shù)據(jù)量大約是6千萬 。

oracle數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟


思路
oracle數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟


最近有點喜歡上畫圖,感覺形象點,可能有點丑,大家不要介意~
實現(xiàn)方案1、獲取A表定義、索引、觸發(fā)器、外鍵約束這里的表定義、索引、主外鍵實際上用PLSQL就可以直接看到了,所以就不寫了,只寫了觸發(fā)器的 。
相關(guān)sql:
--查看表上觸發(fā)器定義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 tablecreate 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、創(chuàng)建B表–BN_SEQUENCE_BAK--這里只創(chuàng)建表定義,不加約束、索引、觸發(fā)器、外鍵-- Create tablecreate 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為了避免對線上環(huán)境的影響,建議分段insert,插入最近3個月的數(shù)據(jù) 。
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') andupdate_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') andupdate_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') andupdate_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') andupdate_date <to_date('2019/06/19 00:00:00', 'yyyy/mm/dd hh24:mi:ss');
oracle數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟


4、切換表這里實際上我在生產(chǎn)環(huán)境做切換也踏坑了,沒考慮到有物化視圖這種情況,所以導(dǎo)致切換不了 。
alter table BN_SEQUENCE rename to BN_SEQUENCE_ARCH;alter table BN_SEQUENCE_BAK rename to BN_SEQUENCE;
oracle數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟


5、數(shù)據(jù)補(bǔ)錄把前面插入數(shù)據(jù)后到切換表后的數(shù)據(jù)做一下補(bǔ)錄 。
【oracle數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟】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數(shù)據(jù)庫重啟命令 卸載oracle客戶端步驟


6、B表創(chuàng)建索引、觸發(fā)器記得需要重命名 。

推薦閱讀