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

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

在ORACLE里用存儲過程定期分割表

瀏覽:166日期:2023-11-12 09:33:57
;;;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_nameinvarchar2, target_namein varchar2, timesin outnumber) is query_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_segments where segment_name=upper(target_name); dummy2 c2%rowtype; begin source_name1:=source_name; target_name1:=target_name; open c1; fetch; c1; intodummy; --if c1%found then --dbms_output.put_line(source_name1'exist!'); --end if; open c2; fetch; c2; intodummy2; --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; exception WHEN OTHERS THEN; times:=times+1; if times<100 then --;;;;;dbms_output.put_line('times:'times); rename_table(source_name1,target_name1,times); else dbms_output.put_line(SQLERRM); dbms_output.put_line('error over 100 times,exit'); end if; end; / 截斷分割log表的存儲過程log_history: create or replace procedure log_history is query_str varchar2(32767); year_month varchar2(8); timesnumber; begin select to_char(sysdate-15,'YYYYMM') into year_month from dual; times:=0; query_str :='create table log_new pctfree 10 pctused 80 as select * from log where 1=2'; execute immediate query_str; query_str :='alter table log_new add constraints log_'year_month'_pk primary 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亚洲国产高清| 在线人成日本视频| 久久免费国产| 午夜在线视频观看日韩17c| 蜜桃视频一区二区三区| 日本高清久久| 成人免费一区| 午夜国产一区二区| 国产精品日韩欧美一区| 97精品久久| 免费福利视频一区二区三区| 91九色精品| 日本欧美一区二区| 水蜜桃精品av一区二区| 五月天久久777| 欧美综合社区国产| 日韩av二区| 免费观看在线色综合| 欧美黑人巨大videos精品| 激情亚洲影院在线观看| 免费人成精品欧美精品| 国产一区三区在线播放| 亚洲免费影院| 欧美激情精品| 亚洲欧美伊人| 国产精一区二区| 天堂资源在线亚洲| 欧美亚洲一级| 午夜欧美在线| 精品国产精品国产偷麻豆| 欧美日韩中文| 国产黄大片在线观看| 国产高清精品二区| 亚洲小说春色综合另类电影| 精品久久亚洲| 国产视频久久| 中文在线中文资源| 日韩二区在线观看| 1024精品久久久久久久久| 日韩中文av| 久久久久久黄| 久久99久久人婷婷精品综合| 午夜在线精品偷拍| 成人亚洲一区| 日韩av成人高清| 黄色亚洲在线| 在线人成日本视频| 国产欧美一区二区三区精品观看| 国产亚洲毛片| 成人看片网站| 精品国产亚洲一区二区三区在线| 男人的天堂久久精品| 另类中文字幕国产精品| 日韩国产欧美三级| 国产偷自视频区视频一区二区| 色婷婷色综合| 精品免费在线| 国产免费久久| 日韩在线观看中文字幕| 国产精品日本| 亚洲天堂黄色| 亚洲黄色中文字幕| 美女视频黄久久| 日本伊人午夜精品| 欧美日韩国产探花| 99精品在线观看| 日韩成人三级| 国产不卡精品| 美女精品久久| 麻豆中文一区二区| 欧美1区二区| 国产精品欧美三级在线观看| 婷婷精品在线观看| 日韩在线a电影| 国产精品嫩草99av在线| 不卡一区综合视频| 欧美va天堂| 色爱av综合网| 日韩欧美不卡| 欧美aa在线观看| 欧美freesex黑人又粗又大| 成人精品久久| 高清一区二区三区| 精品伊人久久| 国产精品国产一区| 久久精品国产999大香线蕉 | 模特精品在线| 国产一区二区精品| 国产视频一区在线观看一区免费| 久久美女精品| 国户精品久久久久久久久久久不卡 | 国产精品日韩| 日韩中文字幕高清在线观看| 久久男人天堂| 日韩在线短视频| 亚洲欧美伊人| 蜜桃久久久久久| 红桃视频亚洲| 亚洲图片久久| 国产精品一站二站| 国产伊人久久| 私拍精品福利视频在线一区| 999国产精品视频| 悠悠资源网久久精品| 日韩一区精品视频| 国产视频一区二| 福利一区和二区| 中文字幕人成乱码在线观看| 香蕉久久精品| 亚洲婷婷丁香| 另类小说一区二区三区| 中文字幕在线视频网站| av亚洲在线观看| 亚洲毛片在线免费| 另类欧美日韩国产在线| 久久天堂精品| 在线精品观看| 免费一级欧美片在线观看网站| 日本韩国欧美超级黄在线观看| 日韩一区二区免费看| 日韩动漫一区| 电影亚洲精品噜噜在线观看| 婷婷中文字幕一区| 日韩精品视频网| 国产美女高潮在线| 蜜桃免费网站一区二区三区| 欧美国产先锋| 国产国产精品| 国产精品对白| 婷婷色综合网| 久久av综合| 六月婷婷一区| 国产成人77亚洲精品www| 国产精品女主播一区二区三区| 国产毛片精品| 伊人久久亚洲美女图片| 国产日本精品| 国产亚洲一区二区手机在线观看| 香蕉成人久久| 精品一区二区三区的国产在线观看 | 久久在线免费| 9色国产精品| 美女精品视频在线| 日韩精品一级中文字幕精品视频免费观看| 国产欧美日韩一区二区三区四区 | 激情欧美丁香| 国产亚洲欧美日韩在线观看一区二区 | 91嫩草精品| 成人一区而且| 天堂va欧美ⅴa亚洲va一国产| 国语精品一区| 在线国产精品一区| 日韩影院二区| 国产伦理久久久久久妇女| 黄色在线一区| 免费观看亚洲| 国产伦精品一区二区三区视频 | 国产精品久久久免费| 国产专区一区| 国产精品一区二区免费福利视频 | 精品一区二区三区中文字幕视频| 亚洲欧美日本国产专区一区| 成人国产综合| 青草久久视频| 美女精品网站| av一区在线| 狂野欧美性猛交xxxx| 日欧美一区二区| 亚洲一区中文| 亚洲日本网址| 麻豆免费精品视频| 亚洲一区导航| 在线亚洲自拍| 欧美日韩免费看片| 精品视频在线观看网站| 国产调教精品| 午夜亚洲福利| 亚洲欧美日韩专区| 欧美成人国产| 久久精品播放| 日韩欧美一区二区三区在线视频| 国产精品一区二区美女视频免费看 | 免费精品国产的网站免费观看| 免费不卡在线视频| 久久精品av| 亚洲a在线视频| 日韩毛片视频| 激情国产在线| 欧美亚洲日本精品| 日韩电影免费网址| 成人午夜在线| 日韩av片子| 伊人久久视频| 久久久久久黄| 国产精品专区免费| 桃色av一区二区| 日本国产精品| 亚洲一级特黄|