网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  在数据库日渐庞大时进行归档的解决思路     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:45次  录入:管理员--2008-07-17  
 

问:在数据库日渐庞大时应该如何进行归档?

答:以下是一些解决的思路:

◆1.新建一个表空间存放各表的历史数据。

1.1写一个存储过程搬数据,数据搬迁到历史表后,在基表中将搬迁的数据删除。

◆2.定期将历史数据exp到磁带中去做永久保存。

◆3.历史数据exp之后,可以清空各历史数据表。这样,表空间的大小实际上是很容易伸缩及控制的。

在这个过程当中,我们可以看到基本的数据由于可以定期清理到历史数据表,继而再清理到磁带。因此,数据库不会越来越大。方便备份及减少查询时间。

具体的实现过程如下:

1.创建临时表:

create global temporary table scott.archive_rows

(

crowid varchar2(20 byte),

primarykey varchar2(15 byte)

)

on commit preserve rows

/

2.创建归档表:

sql>create table emp_archive as select * from emp_b;

3.创建归档记录表:

create table scott.archive_log

(

tablename varchar2(50 byte),

recordcount number,

updatedate date

)

logging

nocompress

nocache

noparallel

monitoring

/

4. procedure:

create or replace procedure archive_emp

(maxarchiverow number) is /* 定义归档的记录数*/

v_crowid archive_rows.crowid%type; /* 存放基表的rowid*/

intloop number; /* 记数器*/

v_primarykey archive_rows.primarykey%type;

cursor c_arch_emp is

select * from archive_rows; /* 创建游标*/

begin

delete from archive_rows; /*先清空临时表*/

commit;

insert into archive_rows

select rowid,'' from emp_b where rownum < maxarchiverow;

commit; /*将基表中指定行数的rowid插入临时表*/

intloop:=0;

open c_arch_emp;

loop fetch c_arch_emp into v_crowid,v_primarykey;

intloop:=intloop+1;

exit when c_arch_emp%notfound;

insert into emp_archive select * from emp_b where rowid=v_crowid;

/*根据rowid,将数值插入到归档表中*/

commit;

delete from emp_b where rowid=v_crowid; /*将基表已归档数据删除*/

commit;

if mod(intloop,200)=0 /*以200行为界记录归档情况*/

then

insert into archive_log values('emp_b',intloop,sysdate);

commit;

end if;

end loop;

end archive_emp;

/

 
 
上一篇: oracle数据库启动监听器不启动或打开出错    下一篇: 在单机上创建物理oracle数据库9i standby
  相关文档
教你轻松掌握Oracle数据库中的物理结构 09-29
用quick slice获取oracle进程的线程状态 07-07
单机创建物理Oracle9istandby数据库 05-13
不容忽视的oracle 10g statspack功能 02-01
解析Oracle 准备开发的文件系统 Btrfs 09-01
oracle数据库pl/sql过程调试的输出方法 08-18
轻松取得Oracle 9i建表和索引DDL语句 04-11
排除cache影响手动强制刷新buffer cache 05-27
undo表空间暴长后如何才能取消自动扩展 04-18
监控数据库性能的"sql"语句都有哪些? (1) 02-27
带你深入了解oracle中几个相对特殊的函数 01-31
Linux平台下数据库资源使用情况分析 04-11
在Oracle中使用自治事务保存日志表条目 05-13
数据字典管理的表空间存在着效率问题 09-01
怎样在oracle里用存储过程定期分割表 (1) 01-25
Oracle *Graphics中不同类型图形的切换 09-01
oracle 10g中scn与timestamp的斗转星移 04-28
更改oracle用户名及外部用户验证的授权问题 02-28
深入讲解ora-00600 2262错误的解决方法 04-03
三方面描述Oracle优化R方法(Method R) 05-27
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息