热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

大数据备份和恢复应用案例--通过分区表备份和恢复数据

大数据备份和恢复应用案例--通过分区表备份和恢复数据海量数据备份和恢复方案对于OLAP的数据库的业务特点,是将批量的数据加载入库,然后对这些数据进行分析处理

大数据备份和恢复应用案例--通过分区表备份和恢复数据海量数据备份和恢复方案对于OLAP的数据库的业务特点,是将批量的数据加载入库,然后对这些数据进行分析处理

大数据备份和恢复应用案例--通过分区表备份和恢复数据

海量数据备份和恢复方案

对于OLAP的数据库的业务特点,是将批量的数据加载入库,然后对这些数据进行分析处理,比如报表或者数据挖掘,最后给业务提供一种决策支持;另外,这类数据库的数据实时性非常高,一旦这些数据处理完毕后,就很少再次使用(有时,也需要对这类数据进行查询)。

对于OLAP数据库的备份和恢复可以考虑这样几种方案:

1、使用分布式数据库

将数据分布到多个库里,当数据库恢复时,只需要恢复单个库的数据,,大大节省恢复时间。

wKiom1Rr-0eyHB5SAAJmv2cd82o348.jpg

2、结合分区技术,以传输表空间方式进行备份和恢复


案例分析:

1、建立分区表,将分区存储在不同的表空间 [oracle@RH6 ~]$sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 18 17:15:47 2014 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 17:15:47 SYS@ prod >create tablespace tbs1 17:16:03 2 datafile '/dsk1/oradata/prod/tbs1.dbf' size 10m; Tablespace created. 17:17:00 SYS@ prod >create tablespace tbs2 17:17:11 2 datafile '/dsk2/oradata/prod/tbs2.dbf' size 10m; Tablespace created. 17:17:49 SYS@ prod >create tablespace tbs3 17:17:57 2 datafile '/dsk3/oradata/prod/tbs3.dbf' size 10m; Tablespace created. 17:18:35 SYS@ prod >create tablespace tbs1_indx 17:18:49 2 datafile '/dsk1/oradata/prod/tbs1_indx.dbf' size 10m; Tablespace created. 17:19:43 SYS@ prod >create tablespace tbs2_indx 17:19:54 2 datafile '/dsk2/oradata/prod/tbs2_indx.dbf' size 10m; Tablespace created. 17:20:18 SYS@ prod >create tablespace tbs3_indx 17:20:30 2 datafile '/dsk3/oradata/prod/tbs3_indx.dbf' size 10m; Tablespace created. 17:22:12 SYS@ prod >select file_id,file_name,tablespace_name from dba_data_files FILE_ID FILE_NAME TABLESPACE_NAME ---------- -------------------------------------------------- ------------------------------ 11 /dsk1/oradata/prod/tbs1.dbf TBS1 12 /dsk2/oradata/prod/tbs2.dbf TBS2 13 /dsk3/oradata/prod/tbs3.dbf TBS3 4 /u01/app/oracle/oradata/prod/users01.dbf USERS 3 /u01/app/oracle/oradata/prod/undotbs01.dbf UNDOTBS1 2 /u01/app/oracle/oradata/prod/sysaux01.dbf SYSAUX 1 /u01/app/oracle/oradata/prod/system01.dbf SYSTEM 5 /u01/app/oracle/oradata/prod/example01.dbf EXAMPLE 6 /u01/app/oracle/oradata/prod/users02.dbf USERS 7 /u01/app/oracle/oradata/prod/catatbs1.dbf CATATBS 8 /u01/app/oracle/oradata/prod/perfertbs1.dbf PERFERTBS 9 /u01/app/oracle/oradata/prod/oggtbs1.dbf OGG_TBS 10 /u01/app/oracle/oradata/prod/test1.dbf TEST1 14 /dsk1/oradata/prod/tbs1_indx.dbf TBS1_INDX 15 /dsk2/oradata/prod/tbs2_indx.dbf TBS2_INDX 16 /dsk3/oradata/prod/tbs3_indx.dbf TBS3_INDX 建立分区表及索引: 17:26:41 SCOTT@ prod >create table t1(id int,name varchar2(1000)) 17:26:57 2 partition by range(id) 17:27:01 3 (partition p1 values less than(1000) tablespace tbs1, 17:27:13 4 partition p2 values less than(2000) tablespace tbs2, 17:27:23 5 partition p3 values less than(maxvalue) tablespace tbs3); Table created. 17:30:33 SCOTT@ prod >create index t1_indx on t1(id) local 2 ( 3 partition p1 tablespace tbs1_indx, 4 partition p2 tablespace tbs2_indx, 5* partition p3 tablespace tbs3_indx ) / 17:30:37 SCOTT@ prod >select partition_name,tablespace_name from user_segments where segment_name='T1'; PARTITION_NAME TABLESPACE_NAME ------------------------------ ------------------------------ P1 TBS1 P2 TBS2 P3 TBS3 17:31:33 SCOTT@ prod >select partition_name,tablespace_name from user_segments where segment_name='T1_INDX'; PARTITION_NAME TABLESPACE_NAME ------------------------------ ------------------------------ P1 TBS1_INDX P2 TBS2_INDX P3 TBS3_INDX 插入数据: 17:34:09 SYS@ prod >begin 17:34:26 2 for i in 1..3 loop 17:34:32 3 insert into scott.t1 select object_id*i,object_name from dba_objects where object_id <1000; 17:34:43 4 end loop; 17:34:51 5 commit; 17:34:57 6 end; 17:35:02 7 / PL/SQL procedure successfully completed. 17:32:08 SCOTT@ prod >select count(*) from t1; COUNT(*) ---------- 2826 17:36:52 SCOTT@ prod >select 'p1',count(*) from t1 partition(p1) 17:37:42 2 union 17:37:47 3 select 'p2',count(*) from t1 partition(p2) 17:38:11 4 union 17:38:13 5 select 'p3',count(*) from t1 partition(p3); 'P1' COUNT(*) -------------------------------- ---------- p1 1740 p2 774 p3 312 2、传输表空间 17:35:04 SYS@ prod >alter tablespace tbs1 read only; Tablespace altered. 17:41:02 SYS@ prod >alter tablespace tbs1_indx read only; Tablespace altered. 17:39:14 SYS@ prod >create directory tbs_dir as '/home/oracle/data'; Directory created. 17:40:30 SYS@ prod >grant read,write on directory tbs_dir to scott; Grant succeeded. [oracle@RH6 data]$ expdp system/oracle directory=tbs_dir dumpfile=p1.dmp transport_tablespaces=tbs1,tbs1_indx logfile=p1.log Export: Release 11.2.0.1.0 - Production on Tue Nov 18 17:44:25 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** directory=tbs_dir dumpfile=p1.dmp transport_tablespaces=tbs1,tbs1_indx logfile=p1.log ORA-39123: Data Pump transportable tablespace job aborted ORA-39187: The transportable set is not self-contained, violation list is ORA-39901: Partitioned table SCOTT.T1 is partially contained in the transportable set. ORA-39921: Default Partition (Table) Tablespace USERS for T1 not contained in transportable set. Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" stopped due to fatal error at 17:44:49 传输表空间出错,表空间处于非自包含模式: 18:14:47 SYS@ prod >exec dbms_tts.transport_set_check('TBS1',true); PL/SQL procedure successfully completed. 18:17:49 SYS@ prod >select * from transport_set_violations; VIOLATIONS ------------------------------------------------------------------------------------------------------------------------ ORA-39921: Default Partition (Table) Tablespace USERS for T1 not contained in transportable set. . ORA-39901: Partitioned table SCOTT.T1 is partially contained in the transportable set. 解决方法,需要创建一个临时表和一个临时表索引,将分区和分区索引交换到临时表和临时表索引表空间上,然后到处临时表和临时表索引。由于临时表不是分区表,它们呢所在的表空间符合自包含条件。 17:45:37 SCOTT@ prod >create table t1_tmp as select * from t1 where 1=3; Table created. Elapsed: 00:00:00.20 17:45:58 SCOTT@ prod >create index t1_tmp_indx on t1_tmp(id); Index created. 17:46:33 SCOTT@ prod >select segment_name,tablespace_name from user_segments 17:47:18 2 where segment_name in ('T1_TMP','T1_TMP_INDX'); SEGMENT_NAME TABLESPACE_NAME --------------------------------------------------------------------------------- ------------------------------ T1_TMP USERS T1_TMP_INDX USERS 将分区表交换到临时表: 17:48:32 SCOTT@ prod >alter table t1 exchange partition p1 with table t1_tmp including indexes; Table altered. 17:49:02 SCOTT@ prod >select segment_name,tablespace_name from user_segments 17:49:35 2 where segment_name in ('T1_TMP','T1_TMP_INDX'); SEGMENT_NAME TABLESPACE_NAME --------------------------------------------------------------------------------- ------------------------------ T1_TMP TBS1 T1_TMP_INDX TBS1_INDX 17:50:44 SYS@ prod >exec dbms_tts.transport_set_check('TBS1',true); PL/SQL procedure successfully completed. 17:51:59 SYS@ prod >select * from transport_set_violations; no rows selected 已经符合自包含条件 [oracle@RH6 data]$ expdp system/oracle directory=tbs_dir dumpfile=p1.dmp transport_tablespaces=tbs1,tbs1_indx logfile=p1.log Export: Release 11.2.0.1.0 - Production on Tue Nov 18 17:52:55 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** directory=tbs_dir dumpfile=p1.dmp transport_tablespaces=tbs1,tbs1_indx logfile=p1.log Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/INDEX Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is: /home/oracle/data/p1.dmp ****************************************************************************** Datafiles required for transportable tablespace TBS1: /dsk1/oradata/prod/tbs1.dbf Datafiles required for transportable tablespace TBS1_INDX: /dsk1/oradata/prod/tbs1_indx.dbf Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 17:54:17 表空间导出成功! 17:56:16 SYS@ prod >select file_name,tablespace_name from dba_data_files where tablespace_name in ('TBS1','TBS1_INDX'); FILE_NAME TABLESPACE_NAME -------------------------------------------------- ------------------------------ /dsk1/oradata/prod/tbs1.dbf TBS1 /dsk1/oradata/prod/tbs1_indx.dbf TBS1_INDX [oracle@RH6 ~]$ cp /dsk1/oradata/prod/tbs1* /home/oracle/data [oracle@RH6 ~]$ ls -lh /home/oracle/data total 21M -rw-r----- 1 oracle oinstall 92K Nov 18 17:54 p1.dmp -rw-r--r-- 1 oracle oinstall 1.4K Nov 18 17:54 p1.log -rw-r----- 1 oracle oinstall 11M Nov 18 17:57 tbs1.dbf -rw-r----- 1 oracle oinstall 11M Nov 18 17:57 tbs1_indx.dbf 然后再将表空间的数据文件进行备份,由于表空间传输,只是导出了metadata,所以数据量非常小,速度非常快。 3、数据恢复 17:58:29 SYS@ prod >drop tablespace tbs1 including contents and datafiles; Tablespace dropped. 17:58:55 SYS@ prod >drop tablespace tbs1_indx including contents and datafiles; Tablespace dropped. 17:59:12 SYS@ prod >col segment_name for a20 17:59:42 SYS@ prod >col partition_name for a10 17:59:49 SYS@ prod >col tablespace_name for a10 17:59:59 SYS@ prod >select segment_name,partition_name,tablespace_name from dba_segments 18:00:32 2 where segment_name in ('T1','T1_INDX') order by 2; SEGMENT_NAME PARTITION_ TABLESPACE -------------------- ---------- ---------- T1 P1 USERS T1_INDX P1 USERS T1_INDX P2 TBS2_INDX T1 P2 TBS2 T1_INDX P3 TBS3_INDX T1 P3 TBS3 6 rows selected. 拷贝备份数据文件到数据库下,进行数据导入 [oracle@RH6 oradata]$ cp /home/oracle/data/tbs1*.dbf /u01/app/oracle/oradata/prod/ [oracle@RH6 data]$ impdp system/oracle directory=tbs_dir dumpfile=p1.dmp transport_datafiles='/u01/app/oracle/oradata/prod/tbs1.dbf','/u01/app/oracle/oradata/prod/tbs1_indx.dbf' logfile=imp.log Import: Release 11.2.0.1.0 - Production on Tue Nov 18 18:06:22 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** directory=tbs_dir dumpfile=p1.dmp transport_datafiles=/u01/app/oracle/oradata/prod/tbs1.dbf,/u01/app/oracle/oradata/prod/tbs1_indx.dbf logfile=imp.log Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/INDEX Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 18:06:37 数据导入成功 18:01:03 SYS@ prod >select segment_name,partition_name,tablespace_name from dba_segments 18:07:37 2 where segment_name in ('T1_TMP','T1_TMP_INDX'); SEGMENT_NAME PARTITION_ TABLESPACE -------------------- ---------- ---------- T1_TMP TBS1 T1_TMP_INDX TBS1_INDX 18:09:40 SCOTT@ prod >alter table t1 exchange partition p1 with table t1_tmp including indexes; Table altered. 18:08:15 SYS@ prod >select segment_name,partition_name,tablespace_name from dba_segments 18:10:46 2 where segment_name in ('T1','T1_INDX') order by 2; SEGMENT_NAME PARTITION_ TABLESPACE -------------------- ---------- ---------- T1 P1 TBS1 T1_INDX P1 TBS1_INDX T1_INDX P2 TBS2_INDX T1 P2 TBS2 T1_INDX P3 TBS3_INDX T1 P3 TBS3 6 rows selected. 访问正常(索引亦导入成功) 18:12:07 SCOTT@ prod >col name for a50 18:12:19 SCOTT@ prod >r 1* select * from t1 where id=4 ID NAME ---------- -------------------------------------------------- 4 C_OBJ# 4 TAB$ Elapsed: 00:00:00.00 Execution Plan ---------------------------------------------------------- Plan hash value: 1229066337 -------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | -------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2 | 1030 | 1 (0)| 00:00:01 | | | | 1 | PARTITION RANGE SINGLE | | 2 | 1030 | 1 (0)| 00:00:01 | 1 | 1 | | 2 | TABLE ACCESS BY LOCAL INDEX ROWID| T1 | 2 | 1030 | 1 (0)| 00:00:01 | 1 | 1 | |* 3 | INDEX RANGE SCAN | T1_INDX | 1 | | 1 (0)| 00:00:01 | 1 | 1 | -------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("ID"=4) Note ----- - dynamic sampling used for this statement (level=2) Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 5 consistent gets 0 physical reads 0 redo size 524 bytes sent via SQL*Net to client 419 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 2 rows processed 18:11:05 SYS@ prod >alter tablespace tbs1 read write; Tablespace altered. Elapsed: 00:00:02.10 18:14:34 SYS@ prod >alter tablespace tbs1_indx read write; Tablespace altered.

三、备份载入的原介质

wKioL1RsASeisT3lAAEZkx474KQ032.jpg


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 一份来自清华的数据分析笔记,请查收!
    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑:入门数据分析该学哪些知识点?该看哪些书?是从Pyth ... [详细]
  • 数据挖掘研讨课结束了,这门课的考核方法是每个同学根据班里面同学的课堂表现打分,然后老师再取截断平均值作为最后的分数。于是我就想,能否用p ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 数据仓库、LODP、OLAP
    数据仓库:也称为企业数据仓库,是一种数据存储系统,它将来自于不同数据源的数据进行结构化数据聚合起来,用于业务智能领域的比较和分析 ... [详细]
author-avatar
手机用户2502873837
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有