multimaster replication/mva 中大批量数据转移,斑竹路过近来座

[复制链接]
查看11 | 回复9 | 2007-6-18 19:35:12 | 显示全部楼层 |阅读模式
环境背景
$1.= RAC-HP 9000 superdom --2节点
$2.= EMC - 每晚从($1) 底层文件系统CLONE到同构的一台库中
也就是说$2为一个备份库(白天出些报表) 转天就更新数据
数据的存活区间为一天
现在问题出现了:) - 因为我们需要每月固定的一日的数据出报表
(这些数据多为同一个用户下的数据)
$1 核心压力巨大故不参与数据的抽取
目前用过的方法是CRONTAB 脚本从 $2中exp出dmp 然后IMP到相关的库中($3)有些在异地(有些用的rsh管道有些是TNS过去),不同应用跑在相对应的($3)上,提取数据出报表。
但是随着业务的增长需要的数据越来越大EXP也就慢的不能满足需要。
在使用中的方法为,transport_tablespaces=yes因为所有的库都为9i 所以这个还能坚持不过由于源数据文件和索引不在同一表空间所以这样过来仍然是多个表空间
故现在推上桌面的是 advance replication因为考虑到安全系数我们做的是multimaster replication 多主体复制
但是问题又一次降临:
发现
1。时间上我们需要每月26日同步一次 仅仅,单项,手动
2。创建复制组往里添加复制对象 很麻烦 需要 one by one
请问斑竹们 高级复制中 能否定义 以某些用户为复制的对象
因为我们的业务逻辑中主要是依靠某几个用户中的所有对象
比如:lidd 这个用户 里面有 789张表 共7。9G
我们就要这789张表,别的不要(这个用户里的对象都要在)
而且仅仅 每月同步一次 就ok
单项 ,而且最好手动执行同步。
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
干脆按用户exp不就可以吗?
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
感覺做個物理備庫就解決了,你的需求可以將數據庫設為最大性能模式,對主庫影響很小,平時將數據庫開為僅讀模式,咝袌蟊恚?吭
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
how about writing a script to add the all the objects of the user's dictionary.
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层

大家说得都对,但是上面我也都说了
按照schema -- exp 这个方法又苯又慢而且随着业务扩展它已经跟不上了,有的一个用户下都DMP就 200G 还多。
DATAGUARD 物理模式,这个也被否定,因为$2 已经是EMC克隆核心的竞像,比免费的DATAGUARD性能好得多,何况我们需要的各个点很多有的还不是一个城市(这是大行的生产环境不是小打小闹)
写脚本,现在就是依据transport_tablespace=yes 来做 这个比按照用户EXP来得 快,我们每个用户都是独立的表空间 ,
高级复制- 能否定义 按照用户 编辑 也就是 这个用户下的对象全过来, 现在一个一个添加到复制组 实在劳民伤财
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
transport_tablespace=yes 这个应该应该是速度最快的了。
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
transport_tablespace=yes我们是9I 同构的文件系统级别
现咨询 如果数据源是 在RAW 裸设备上 这样生成了 DMP ,或者我把生成DMP路径放到本地磁盘上(但是真实数据都在裸设备上),不知道这样的DMP
能否IMP到目标数据库中,(就都是普通的文件系统,EXT3/OFS/UFS etc..)
在现等
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
等 …………………………
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
transport_Tablespace=yes这样生成的DMP 是否有数据 还是仅仅是数据字典 信息,然后把文件在FTP过来??
我实验是 IMP后就都有了 不需要挪动数据
回复

使用道具 举报

千问 | 2007-6-18 19:35:12 | 显示全部楼层
transport_Tablespace=yes 这样生成的DMP仅仅是数据字典 信息
对于裸设备比较麻烦,下面是一个网友的测试过程,供参考:
transport tablespace 测试全过程,数据库oracle9.2.0.4,操作系统平台HP
1.建立测试表空间
create tablespace tts_test datafile '/dev/vgjs03/rjsdata00274'
size 2046m reuse extent management local uniform size 1m;

2.建立测试表
create table tts_test(
a number(10),
b number(10)
)tablespace tts_test;
3.往测试表中灌数据
variable i number;
begin
for i in 1..30000 loop
insert into tts_test(a,b)
values(i,i+1);
end loop;
commit;
end;
4.检测测试表空间的完整性
execute dbms_tts.transport_set_check('tts_test', true);
若报过程dbms_tts.transport_set_check不存在,则用sys的数据库用户执行脚本"$ORACLE_HOME/rdbms/admin/dbmsplts.sql"建立之.
5.将要测试的表空间改为只读
alter tablespace tts_test read only;
6.导出元数据
exp 'sys/password@cntjs as sysdba' transport_tablespace=y
tablespaces=tts_test file=tts.dmp log=tts_e.log
7.使用dd命令拷贝出裸设备的数据
dd if=/dev/vgjs03/rjsdata00274 of=raw_device ibs=1024 obs=1024
8.删除测试的表空间
drop tablespace tts_test including contents;
9.使用dd命令将7中拷贝出的文件重新拷到裸设备中
dd if=raw_device of=/dev/vgjs03/rjsdata00274 ibs=1024 obs=1024
10.使用imp导入测试表空间
imp 'sys/password@cntjs as sysdba' transport_tablespace=y
tablespaces=tts_test file='/oracle_export/changqr/tts.dmp'
datafiles='/dev/vgjs03/rjsdata00274'
tts_owners=supp fromuser=supp touser=supp log=tts_i.log
11.将测试表空间改为可读写
alter tablespace tts_test read write;
以上步骤,已经在江苏数据库上测试通过.
关键点:
1.一定要保证所要导出表空间中数据的完备性,具体定义参见oracle的官方文档.
2.在表空间改为只读后明确有几个用户的数据在此表空间上.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行