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

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

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

瀏覽:28日期: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久久,三上悠亚国产精品一区二区三区
日本国产一区| 日韩欧美一区免费| 欧美日韩国产一区二区三区不卡| 成人亚洲一区二区| 国内精品伊人| 国产一区二区三区久久久久久久久| 久久只有精品| 色爱综合网欧美| 日韩国产欧美| 超碰成人av| 蜜桃视频在线网站| 91精品国产乱码久久久久久久 | 日本免费在线视频不卡一不卡二| 三级欧美在线一区| 亚洲精品国产精品粉嫩| 日本中文字幕一区二区| 国产欧美69| 国产成人久久精品一区二区三区| 黄色在线观看www| 亚洲成人精品| 日韩一区精品字幕| 欧美亚洲国产日韩| 国产精品亲子伦av一区二区三区| 免费在线观看一区| 亚洲最新无码中文字幕久久| 欧美~级网站不卡| 中文无码日韩欧| 国产精品乱战久久久| 久久永久免费| 在线视频观看日韩| 另类亚洲自拍| 国产精品免费99久久久| 精品久久免费| 极品日韩av| 亚洲精品乱码久久久久久蜜桃麻豆| 国产日本久久| 欧美久久天堂| 91精品观看| 日韩国产一区二| 国模精品一区| 在线视频日韩| 欧美日韩中出| 欧洲精品一区二区三区| 制服诱惑一区二区| 欧美视频一区| 性感美女一区二区在线观看| 视频一区二区欧美| 久久久免费人体| 不卡一区2区| 欧美日一区二区在线观看| 国产资源在线观看入口av| 国产精品嫩草99av在线| 日韩精品久久久久久| 国产理论在线| 亚洲影院天堂中文av色| 韩日一区二区| 天堂成人国产精品一区| 国产精品久久久久9999高清 | 动漫av一区| 亚洲欧美日韩在线观看a三区 | 日韩精品a在线观看91| 日韩大片在线观看| 奇米777国产一区国产二区| 欧美aa在线观看| 日韩精品亚洲一区二区三区免费| 91欧美在线| 日韩av中文字幕一区二区| 日本高清不卡一区二区三区视频| 日本不卡一区二区三区| 亚洲电影在线| 麻豆中文一区二区| 蜜臀av一区二区在线免费观看 | 天堂а√在线最新版中文在线| 日韩精品一二区| 欧美天堂视频| 日韩高清一区| 免费精品国产的网站免费观看| 国产精品一区二区三区四区在线观看| 亚洲小说欧美另类婷婷| 国产精品成人一区二区网站软件| 最新亚洲激情| 麻豆mv在线观看| 免费亚洲婷婷| 日韩精品一区二区三区中文在线 | 久久精品资源| 日韩在线黄色| 中文欧美日韩| 视频福利一区| 国精品产品一区| 欧美日韩夜夜| 免费人成精品欧美精品| 欧美日韩尤物久久| 麻豆精品一区二区综合av| 综合激情五月婷婷| 99国产精品| 亚洲天堂成人| 日本蜜桃在线观看视频| 美女在线视频一区| 国产剧情在线观看一区| 蜜桃一区二区三区在线观看| 久久免费黄色| 91一区二区三区四区| 国产精品高清一区二区| 日韩欧美激情电影| 蜜臀av国产精品久久久久 | 欧美日韩中文一区二区| 亚洲精品永久免费视频| 国产精品伦理久久久久久| 欧美视频久久| 日韩高清一区二区| 日本不卡高清视频| 日本不卡高清| 亚洲不卡视频| 羞羞答答国产精品www一本| 欧美福利一区| 亚洲高清成人| 欧美jjzz| 中文亚洲欧美| 水野朝阳av一区二区三区| 99国产一区| 久久电影一区| 亚洲色图国产| 亚洲欧美在线专区| 日韩精品亚洲aⅴ在线影院| 天堂va欧美ⅴa亚洲va一国产| 亚洲一区有码| 一区二区三区四区在线观看国产日韩| 美女久久一区| 视频一区视频二区在线观看| 免费久久99精品国产自在现线| 国产亚洲一区在线| 男人操女人的视频在线观看欧美| 亚洲久久一区| 国产欧美日韩一级| 免费在线亚洲欧美| 中文字幕在线视频久| 超碰99在线| 久久在线电影| 国产免费成人| 亚洲精选久久| 国产伦精品一区二区三区千人斩| 美日韩一区二区三区| 92国产精品| 亚洲风情在线资源| 亚洲二区精品| 亚洲一区二区小说| 国产探花一区在线观看| 精品丝袜久久| 女生影院久久| 日韩天堂av| 日韩精选在线| 国产一区日韩| 伊人久久大香线蕉av超碰演员| 亚洲天堂av资源在线观看| 国产欧美一区二区精品久久久| 国产成人精品一区二区三区在线| 国产在线观看www| 亚洲一区久久| 综合一区在线| 精品国产亚洲一区二区三区在线 | 亚洲专区视频| 国产精品丝袜在线播放| 日韩成人免费| 亚洲综合日本| 欧美一区不卡| 日韩精品dvd| 乱人伦精品视频在线观看| 久久激情av| 欧美精品二区| 尤物tv在线精品| 日本不卡视频在线| 色婷婷亚洲mv天堂mv在影片| 99riav国产精品| 国产福利一区二区三区在线播放| 日韩av免费| 亚洲乱码久久| 日韩av专区| 亚洲人妖在线| av日韩中文| 婷婷亚洲精品| 免费一二一二在线视频| 亚洲字幕久久| 欧美好骚综合网| 日韩视频不卡| 久久中文字幕一区二区| 妖精视频成人观看www| 国产精品一级在线观看| 特黄特色欧美大片| 日本强好片久久久久久aaa| 久草免费在线视频| 亚洲日韩中文字幕一区| 天堂√中文最新版在线| 日本不卡高清| 国产综合精品一区| 国产精品黄网站| 久久高清国产| 中文字幕成在线观看| 日韩av网站免费在线| 蜜臀国产一区| 国产精品亚洲四区在线观看|