2016-07-12 51 views
-2

我们的Oracle数据库大小大约为220GB,并且有两个表将二进制数据存储为blob列。二进制表大小之一是150GB左右,其他表是30GB。由于数据库规模非常巨大,因此我们很难在其他位置进行每日备份和灾难恢复计划。想要了解如何从表中分离出二进制数据并将这些表数据移动到某些集中式存储。如何在Oracle数据库中分离二进制数据

回答

0

你可以做的是建立一个第二RDS实例和移动2代BLOB表在这个新的实例,所以你将与2个服务器: - 主要服务器:30 GB - 文档服务器与BLOB表

您将离开多可用区和每日快照在服务器和计划快照每周可能为文档。

首先:备份除了斑点的所有表

可以使用expdp导出某些表只喜欢

expdp <master user>/<master pass>@source.cnrsdab7emat.us-east-1.rds.amazonaws.com:1521/DB schemas=SCOTT exclude=TABLE:"IN ('BLOB1', 'BLOB2')" directory= data_pump_dir dumpfile=dump.dmp 

:创建新实例,并导入转储

创建一个新的数据库实例,确保提供足够的空间。你不一定需要转移的dmp文件,你可以从新的实例导入数据库在网络链路

create database link to_rds connect to USERX identified by PASSX using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=source.cnrsdab7emat.us-east-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=<ORCL_SID>)))'; 

运行IMPDP

impdp <master user>/<master pass>@target.cnrsdab7emat.us-east-1.rds.amazonaws.com:1521/NEWDB network_link=to_rds directory=data_pump_dir dumpfile=dump.dmp 

第三:清理你的旧数据库

ALTER表中删除您已传输的表。

+0

采取这些步骤可以使您更好地将blob数据移出数据库并移入像S3这样的对象存储区。现有的blob表可以替换为包含指向S3中的对象的指针(URI)的表。 – jbird

+0

真实,可能;或者放在其他地方,比如aws弹性搜索,并且可以从搜索中受益,如果文件可以被索引;如果文件不能被索引s3是一个很好的存储选项 –