国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ORACLE 歷史數(shù)據(jù)管理策略--數(shù)據(jù)清理

willin / 2217人閱讀

摘要:背景由于性能數(shù)據(jù)每天導(dǎo)入量,數(shù)據(jù)庫(kù)表空間每天增長(zhǎng)很快,且不需要太長(zhǎng)的保存周期,為避免爆表,因此需要定制定期清理計(jì)劃。數(shù)據(jù)的清理可以有多種方案,根據(jù)場(chǎng)景的不同可以分為離線,在線。

背景

由于性能數(shù)據(jù)每天導(dǎo)入量,數(shù)據(jù)庫(kù)表空間每天增長(zhǎng)很快,且不需要太長(zhǎng)的保存周期,為避免爆表,因此需要定制定期清理計(jì)劃。
數(shù)據(jù)的清理可以有多種方案,根據(jù)場(chǎng)景的不同可以分為離線,在線。后續(xù)又在可以細(xì)分。這里僅考慮在線方式數(shù)據(jù)里比如DELETE與 REDEFINITION,這種方式帶來(lái)的問(wèn)題就是會(huì)產(chǎn)生大量的LOG,同時(shí)產(chǎn)生回滾段,需要定期進(jìn)行redefinition。為避免場(chǎng)景復(fù)雜,這里采用分區(qū)表方式。

分區(qū)方案

目前有兩種方案,一種是按照ingerval分區(qū),未定義分區(qū)oracle會(huì)智能分區(qū),分區(qū)簡(jiǎn)單,但是帶來(lái)的問(wèn)題就是分區(qū)名字無(wú)法直接確定,后期維護(hù)不方便
這里不做重點(diǎn)介紹
使用虛擬列,固定分區(qū)名字,引入問(wèn)題需要新增虛擬列,即本文使用方案。

關(guān)于索引

表分區(qū)以后,同時(shí)需要同步修改索引,這里根據(jù)我們的應(yīng)用場(chǎng)景,需要構(gòu)建LNP(LOCAL NON PREFIXED) INDEX--引入的虛擬列作為分區(qū)字段,沒(méi)有其它功能。
如果需要構(gòu)建唯一索引,LNP index必須包含分區(qū)鍵。
對(duì)于程序訪問(wèn)路徑帶來(lái)的變化就是最好顯式的指定分區(qū),如果不指定,即使匹配索引,也是匹配所有表的LNP IDNEX

select INDEX_NAME,PARTITIONING_TYPE,LOCALITY, ALIGNMENT from all_part_indexes where table_name="xxx"
select index_name,status from user_indexes where index_name="xxx"
select INDEX_NAME,PARTITION_NAME,status from User_Ind_Partitions a where a.Index_Name="xxx"
新增虛擬列 新增虛擬列語(yǔ)法
 v_month as (substr(datadate,6,2))
 partition by list(v_month)
(
 partition p1 values("01"),
 partition p2 values("02"),
 partition p3 values("03"),
 partition p4 values("04")
);

新增虛擬列不會(huì)增加存儲(chǔ)空間消耗,但是會(huì)增加CPU消耗,即新增列的信息僅寫(xiě)入metadata.

SELECT TABLE_NAME,PARTITION_NAME,HIGH_VALUE FROM user_tab_partitions WHERE TABLE_NAME=
select TABLE_NAME,PARTITIONING_TYPE  from user_part_tables where table_name="
select segment_name||" "||partition_name||" "||segment_type from user_segments where segment_name like 
應(yīng)用程序變化 SELECT
SELECT *

會(huì)現(xiàn)實(shí)虛擬列

INSERT

不支持

insert into table xx values()

需要顯式指定插入列:

insert into table xx(col1,col2,...) values()
update

同insert

按月份分區(qū)數(shù)據(jù)清理

表按照月分區(qū),共12個(gè)分區(qū),數(shù)據(jù)保留3個(gè)月,每個(gè)月出清理三個(gè)月之前的分區(qū)數(shù)據(jù),即清理腳本每月執(zhí)行
生成truncate分區(qū)的腳本如下:

from  datetime import date,timedelta
from monthdelta import MonthDelta
current_day = date.today()
prev_2month = current_day- MonthDelta(2)
month_of_partition = prev_2month.month
print "current day is:{0} and previous day of last 2 months is:{1},so the partition need to truncate is:{2}".format(current_day,prev_2month,month_of_partition)
with open("partition_by_day_table") as f:
    for table in f:
        print "alter table {0} truacate partition p{1}".format(table.strip(),month_of_partition)

確定分區(qū)后,通過(guò)定時(shí)任務(wù)執(zhí)行對(duì)應(yīng)的SQL即可。

按天分區(qū)數(shù)據(jù)清理

表按照天分區(qū),數(shù)據(jù)至少保留7天以上
表分區(qū)原則:表按天分區(qū),共31個(gè)分區(qū),每天清理8天前的分區(qū),清理腳本每月執(zhí)行
生成truncate分區(qū)的腳本如下:

#!/usr/bin/python
from  datetime import date,timedelta,datetime
current_day = date.today()
prev_8day = current_day-timedelta(days=8)
day_of_partition = prev_8day.day
print "current day is: {0}  and  previsus day of 8 day is:{1},so the partition need to trucate is:{2}".format(current_day,prev_8day,day_of_partition)
print "#"*72
fout=open("/home/oracle/scripts/minute.log","a")
with open("/home/oracle/scripts/partition_by_day_tables") as f:
        for table in f:
                syntax= "alter table {0} truacate partition p{1}".ljust(72," ").format(table.strip(),day_of_partition)+"; commit;
"
                #print syntax 
                fout.write(syntax)
now=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
fout.write(now+"
")
f.close()
print "#"*72

對(duì)應(yīng)的SQL腳本如下:

alter table xx1 truacate partition p3                                 ; commit;
alter table xx2 truacate partition p3                                 ; commit;
alter table xx3 truacate partition p3                                 ; commit;

確定分區(qū)后,通過(guò)定時(shí)任務(wù)執(zhí)行對(duì)應(yīng)的SQL即可。

定時(shí)腳本

通過(guò)crontab定時(shí)任務(wù)完成

5 4 * * * --daily 
5 4 1 * * ---monthly

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44247.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<