日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何在Oracle里用存儲過程定期分割表

瀏覽:26日期:2023-11-12 12:42:33
Oracle數據庫里存放著各種各樣的數據,其中有一些數據表會隨著時間的推移,越來越大。如交友聊天的日志、短信收發的日志、生產系統的日志、動態網站發布系統的日志等等。這樣的信息又和時間緊密相關,有沒有辦法讓這些日志表能按時間自動分割成歷史年月(如log200308,log200309)的表呢? 請看看我用存儲過程定期分割表的方法吧。 一、問題的引出 1.初學數據庫時只知道用delete來刪除表里的數據。但在Oracle數據庫里,大量delete記錄后,并不能釋放表所占用的物理空間,這里面有一個高水位的概念,所以我們不能用delete來分割表。 2.用重命名(rename)表的方法 (1) 先建一個和原來日志表(假如是log)數據結構一模一樣的新表(如log_new),建約束、索引及指定字段的默認值; (2) 重命名表log到log_YYYYMM; 要注重的問題是OLTP系統可能會因為DML操作阻礙重命名執行成功,出現ORA-00054資源正忙的錯誤提示,需要試多次才能成功。 (3) 重命名表log_new到log。 這樣應用程序不用修改(受影響的時間僅幾秒鐘),日志表就被截斷分割了。 上述步驟可以在Oracle里用存儲過程來實現。 二、用存儲過程來分割表 可以看到在重命名表的方法中,步驟(2)是個要害。下面這個rename_table過程會在有鎖阻礙的情況下用遞歸的方式重試100次。 重命名原始表到目標表的存儲過程rename_table: create or replace procedure rename_table(source_name in varchar2,target_name in varchar2,times in out number) isquery_str varchar2(4000);source_name1 varchar2(64);target_name1 varchar2(64);cursor c1 is select segment_name from user_segments where segment_name=upper(source_name);dummy c1%rowtype; cursor c2 is select segment_name from user_segmentswhere segment_name=upper(target_name);dummy2 c2%rowtype; beginsource_name1:=source_name;target_name1:=target_name;open c1;fetch c1 into dummy;-- if c1%found then-- dbms_output.put_line(source_name1'exist!');-- end if;open c2;fetch c2 into dummy2;-- if c2%notfound then-- dbms_output.put_line(target_name1'not exist!');-- end if;if c2%notfound and c1%found thenquery_str :='alter table 'source_name1' rename to 'target_name1;execute immediate query_str;dbms_output.put_line('rename sUCcess!');end if;close c1;close c2;exceptionWHEN OTHERS THEN times:=times+1;if times<100 then-- dbms_output.put_line('times:'times);rename_table(source_name1,target_name1,times);elsedbms_output.put_line(SQLERRM);dbms_output.put_line('error over 100 times,exit');end if;end;/截斷分割log表的存儲過程log_history: create or replace procedure log_historyisquery_str varchar2(32767);year_month varchar2(8);times number;beginselect to_char(sysdate-15,'YYYYMMDD') into year_month from dual;times:=0;query_str :='create table log_new pctfree 10 pctused 80as select * from log where 1=2';execute immediate query_str;query_str :='alter table log_new add constraints log_'year_month'_pkprimary key (id) tablespace indx nologging pctfree 10';execute immediate query_str; query_str :='alter table log_his modify logtime default sysdate';execute immediate query_str; query_str :='create index log_'year_month'_logtime on log(logtime)tablespace indx nologging pctfree 10';execute immediate query_str; rename_table('log','log'year_month,times);query_str :='alter table log_new rename to log';execute immediate query_str;end;/當然您工作環境的日志表可能和我這個做例子的日志表結構上有所不同,約束條件、索引和默認值都不盡相同。只要稍加修改就可以了。 三、用戶需要有create any table系統權限(不是角色里包含的權限) 因為在執行存儲過程時,由角色賦予的權限會失效, 所以執行log_history的用戶一定要有DBA單獨賦予的create any table系統權限。 最后在OS里定時每月一號凌晨0:00分執行log_history,讓存儲過程定期分割表。 假如要分割的日志表很多,模擬log_history可以寫很多類似的存儲過程來分割不同項目里的日志表。然后讓OS按月,按周或者不定期的執行這些存儲過程, 治理員只要查看日志就可以了。 四、其它注重事項 假如應用程序有BUG,可能對在用原始日志表產生長期不能釋放的鎖,執行log_history重命名會不成功。 這時DBA可以查看數據字典: select object_id,session_id,locked_mode from v$locked_object;select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;假如有長期出現的一模一樣的列(包括登錄時間),可能是沒有釋放的鎖。 我們要在執行分割日志表的存儲過程前,用下面SQL語句殺掉長期沒有釋放非正常的鎖: alter system kill session 'sid,serial#'; 五、結束語 用上面介紹的存儲過程定期分割日志表有很大的靈活性。歷史數據不僅查詢方便,轉移和備份起來也都很輕易。Unix和Windows平臺的都可以使用。對服務器硬盤空間較小的中小型公司意義尤其明顯。
標簽: Oracle 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美激情另类| 日韩精品91| 午夜精品影视国产一区在线麻豆| 欧美日韩国产传媒| 国产精品www994| 日本午夜精品久久久久| 亚洲永久av| 久久精品一区二区国产| 激情婷婷综合| 国产精品久久久久久久免费观看 | 你懂的国产精品| 久久aⅴ国产紧身牛仔裤| www成人在线视频| 国产高清视频一区二区| 夜夜精品视频| 久久99视频| 国产精品久久久久久久久久妞妞 | 日本久久成人网| 成人国产精品一区二区网站| 精品一区二区三区中文字幕视频| 国产成人a视频高清在线观看| 国产理论在线| 欧美日韩视频一区二区三区| av资源亚洲| 蜜桃久久精品一区二区| 国产精品日韩精品在线播放| 国产v日韩v欧美v| 首页亚洲欧美制服丝腿| 国产精品中文| 在线成人直播| 欧美在线精品一区| 成人va天堂| 国产午夜一区| 亚洲精品在线观看91| 欧美私人啪啪vps| 在线一区免费| 国产精品久久久久久久久久10秀| 爽好久久久欧美精品| 欧美日韩午夜电影网| 欧美日韩国产高清电影| 青青草91久久久久久久久| 欧美日韩国产免费观看视频| 国产精品一区二区三区av| 石原莉奈在线亚洲二区| 国产+成+人+亚洲欧洲在线| 深夜福利亚洲| 99视频+国产日韩欧美| 成人国产精品| 国产精品13p| 国产精品成人a在线观看| 国产精品porn| 精品视频一区二区三区在线观看 | 日韩va欧美va亚洲va久久| 欧美日韩国产探花| 婷婷精品视频| 国产麻豆久久| 国产精品99一区二区| 99精品在线免费在线观看| 9999国产精品| 天堂中文av在线资源库| 国产高清不卡| 亚洲高清二区| 久久福利一区| 蜜桃一区二区三区在线| 首页亚洲欧美制服丝腿| 欧美女激情福利| 久久精品观看| 亚洲天堂成人| 亚洲一级二级| 石原莉奈在线亚洲三区| 日本vs亚洲vs韩国一区三区二区| 六月婷婷一区| 日本一区二区中文字幕| 国产精品蜜月aⅴ在线| 国产精品成人一区二区网站软件| 欧美一区在线观看视频| 国产精品草草| 日韩福利一区| 天堂av在线一区| 国产欧美丝祙| 91精品精品| 亚洲欧美日韩专区| 欧美一区=区三区| 亚洲少妇自拍| 亚洲乱码一区| 日韩1区2区3区| 国产精品xx| 蜜桃久久av一区| 国产精品久久久久久久久妇女| 婷婷激情一区| 久久国产三级精品| 欧美特黄一区| 国产成人精品一区二区三区免费| 国产手机视频一区二区| 精品中文在线| 国产婷婷精品| 精品视频一二| 久色成人在线| 日韩黄色大片网站| 国产精品亚洲产品| 首页亚洲欧美制服丝腿| 日韩精品电影| 国产精品密蕾丝视频下载| 国产亚洲高清视频| 午夜精品成人av| 国内不卡的一区二区三区中文字幕| 欧美日韩国产一区二区三区不卡| 国产精品一级| 亚洲精选91| 亚洲少妇诱惑| 狠狠爱成人网| 久久久久久久久99精品大| 久久狠狠久久| 日韩精品导航| 亚洲资源网站| 老司机精品久久| 亚洲成人三区| 欧美sm一区| 欧美三级精品| 久久久久亚洲精品中文字幕| 国产精品久久久一区二区| 日韩电影免费网址| 九色porny丨国产首页在线| 午夜视频精品| 秋霞国产精品| 国产综合亚洲精品一区二| 日本欧美不卡| 欧美国产中文高清| 免费一级欧美在线观看视频| 国产精品久久久久久久久久齐齐| 国产精品一站二站| 精品国产精品久久一区免费式 | 国产偷自视频区视频一区二区| 亚洲精品网址| 亚洲精品一级| 国产精品久久久久9999高清| 伊人久久亚洲影院| 欧美日韩高清| 蜜臀久久99精品久久久画质超高清 | 欧美成人综合| 性欧美精品高清| 久久国产精品色av免费看| 久久伊人亚洲| 欧美精品第一区| 精品免费av| 欧美特黄一区| 国产日韩在线观看视频| 高清av一区| 欧美日韩第一| 国产乱论精品| 偷拍欧美精品| 欧美成人精品午夜一区二区| 欧洲av不卡| 日韩精选在线| 四虎4545www国产精品 | 婷婷激情一区| 日韩精品成人| 影音先锋久久| 久久久免费人体| 亚洲人成在线影院| se01亚洲视频 | 日韩中文av| 激情视频网站在线播放色| 美女亚洲一区| 精品国产一区二区三区噜噜噜| 久色成人在线| 国产91精品对白在线播放| 国产精品s色| 欧美亚洲tv| 午夜一区在线| 欧美日韩中文字幕一区二区三区| 免费观看亚洲天堂| 丝袜美腿亚洲一区| 国产一区日韩一区| 久久久久午夜电影| 国产精品一线| 男女男精品视频网| 免费精品国产| 欧美/亚洲一区| 黄毛片在线观看| 成人在线丰满少妇av| 麻豆国产一区| 久久国产日韩欧美精品| 免费视频最近日韩| 色乱码一区二区三区网站| 久久99免费视频| 国产精品成人自拍| 日本v片在线高清不卡在线观看| 日韩一区二区三区高清在线观看| 黄色不卡一区| 中文精品在线| 中文字幕一区二区av| 久久国产88| 国产视频一区二| 日韩精品视频在线看| 日韩一区二区三区精品视频第3页| 日韩精品国产精品| 国产经典一区| 精品国产第一福利网站| 成人av三级|