网站首页  |   业界社区  |  电信社区  |  技术社区   |  极客社区  |  游戏社区  |  生活社区   |   科技博客  |   同事录
TechWeb-技术社区


标题: [推荐] 在数据库日渐庞大时进行归档
组装机
TW高级会员
Rank: 4



UID 80581
精华 18
积分 533
帖子 233
阅读权限 50
注册 2006-8-2
状态 离线
发表于 2008-7-24 09:00 资料 短消息 加为好友
在数据库日渐庞大时进行归档

在数据库日渐庞大时应该如何进行归档?*P0q o/s1~)s/G
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛7b;V4u9`$e'q
        以下是一些解决的思路:
$P#a7C6p'wtech.techweb.com.cn&u/k$n(y0g:W3i
        ◆1.新建一个表空间存放各表的历史数据。
*A!E:f:A3w程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛*E/b1f9v6k
        1.1写一个存储过程搬数据,数据搬迁到历史表后,在基表中将搬迁的数据删除。
8K%~;u!U)f2]._4l1e4V程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛"p6U&a4n:M'Q2{)r
        ◆2.定期将历史数据exp到磁带中去做永久保存。
7q5|%q:~:g,S6_!{*q!U!i程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
&e*N3r9`4E k(N&v程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛        ◆3.历史数据exp之后,可以清空各历史数据表。这样,表空间的大小实际上是很容易伸缩及控制的。
$N+W6I.c1|&i%e程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
0Y1X(@$A:P/J2b'P/J.W程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛        在这个过程当中,我们可以看到基本的数据由于可以定期清理到历史数据表,继而再清理到磁带。因此,数据库不会越来越大。方便备份及减少查询时间。
3V/o"i5K(?#D-Utech.techweb.com.cn
#U!H$G6v$A'X3{        具体的实现过程如下:
.z8N/R%d9Y:Z1Y8o,i+a&s3\5K1e+~
        1.创建临时表:          CREATE GLOBAL TEMPORARY TABLE SCOTT.ARCHIVE_ROWSTechWeb-技术社区 s"A E:E*k(z
        (
.v1|:U-F)@3O9~$LTechWeb-技术社区        CROWID VARCHAR2(20 BYTE),tech.techweb.com.cn6W&@2h$f8x8q
        PRIMARYKEY VARCHAR2(15 BYTE)TechWeb-技术社区/J/W0p0T%N/?.c's:r5V'\$\
        ):n5@#a j-d-X2r3b
        ON COMMIT PRESERVE ROWS 0d1B }-G:P8u(E
5}1v(t.T7N4j)P0x$v
程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛"l4Y:x3~1}(o%H'],Y%i
        2.创建归档表:          sql>create table emp_archive as select * from emp_b;
!?/R"a0q;n0}!D'R
&N)K'E'_-a0c'V2H&hTechWeb-技术社区
4\5m!M9C;K9y:p.k        3.创建归档记录表:          CREATE TABLE SCOTT.ARCHIVE_LOG
9K3U(B'[7o U8S"]&_3}5|tech.techweb.com.cn        (/@'g8u8J&W
        TABLENAME VARCHAR2(50 BYTE),TechWeb-技术社区5A(X \)I5N)W
        RECORDCOUNT NUMBER,
;e&C(n:g0w1v-k%r+w)M/g        UPDATEDATE DATE6{-W(@7T$]-r-u
        )*M8j/k-L+_)_'h2Q2F
        LOGGING/A9T5|3M/n%U&|!P'w
        NOCOMPRESS
!e5{1@'C0t.KTechWeb-技术社区        NOCACHETechWeb-技术社区$|5u+V#|4d3l;Y
        NOPARALLEL
:H:X)b)J/e&I-M4m8d @%|        MONITORING 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛&o6O(Z0d/k N1e
){%V0V(a I)g0m!D

(V$T5S$v&Q*F/r(\        4. procedure:         CREATE OR REPLACE PROCEDURE archive_emp
0b8y"U9l(R#O.d5d        (maxarchiverow number) IS /* 定义归档的记录数*/
$P5y(g+z;n;K-xtech.techweb.com.cn        v_crowid archive_rows.crowid%type; /* 存放基表的rowid*/
*Q6u0Q"^(h,X9`        intLoop number; /* 记数器*/
,H'?3F;?6~tech.techweb.com.cn        v_primarykey archive_rows.PRIMARYKEY%type;程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛&I$C.p/}3]!N/s Z
        CURSOR C_ARCH_EMP IS)k(w!T#a E$Y"A!~
        SELECT * FROM ARCHIVE_ROWS; /* 创建游标*/
(i0]/Z(k8F+D:}%C#~2s        BEGIN
5~.i;m%c$x;rtech.techweb.com.cn        DELETE FROM ARCHIVE_ROWS; /*先清空临时表*/
3T-\3V"` Z6f,`        COMMIT;tech.techweb.com.cn$J2[)m({6a
        INSERT INTO ARCHIVE_ROWS程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛+z%z&V8E"j#r
        SELECT ROWID,'' FROM EMP_B WHERE ROWNUM < MAXARCHIVEROW;2J+U&H1x:H5E
        COMMIT; /*将基表中指定行数的rowid插入临时表*/
5C6N!}3Q3O5h)j7H3~'N        INTLOOP:=0;2u*T&S9X+Z9I-a/g
        OPEN C_ARCH_EMP;
&x*P/T7^(u(m        LOOP FETCH C_ARCH_EMP INTO V_CROWID,V_PRIMARYKEY;)v#a%O#e3]2g/N
        INTLOOP:=INTLOOP+1;
+k)r:_,a%|(M!_ YTechWeb-技术社区        EXIT WHEN C_ARCH_EMP%NOTFOUND;
5s"V%L8F#V#a-j7p3@8Xtech.techweb.com.cn        INSERT INTO EMP_ARCHIVE SELECT * FROM EMP_B WHERE ROWID=V_CROWID;
;n$D7t O;Z%a5N        /*根据rowid,将数值插入到归档表中*//M7w.x4T*E/X7@
        COMMIT;
#H7T;X)H7B*U)^        DELETE FROM EMP_B WHERE ROWID=V_CROWID; /*将基表已归档数据删除*/'U)X2o1o#|#x7^
        COMMIT;1`(g5T7m6])Q!D4g(f
        IF MOD(INTLOOP,200)=0 /*以200行为界记录归档情况*/程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛"U.z"V-E3A0|7k9]9`
        THEN/\(a'D*T2U6_!i
        INSERT INTO ARCHIVE_LOG VALUES('EMP_B',INTLOOP,SYSDATE);
%B'y%g/q&h!_)L.S-Y程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛        COMMIT;
;N3`+z2j9J6z;]程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛        END IF;.d$o"s5c7e'w,D6{-B*q,A;e7c
        END LOOP;程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛,g)k.F!i5F6o3Y/V
        END ARCHIVE_EMP;

引用 回复 顶部
查看积分策略说明快速回复主题
选项 标题 Smilies
禁用 URL 识别
禁用 Smilies
禁用 Discuz!代码
使用匿名发帖
使用个人签名
接收新回复邮件通知
内容





当前时区 GMT+8, 现在时间是 2008-12-3 05:59
京ICP证060517号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2008 Comsenz Inc.
Processed in 0.044655 second(s), 8 queries

清除 Cookies - 联系我们 - TechWeb.com.cn - Archiver - WAP