- 浏览: 154780 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
驭乐MJ:
好!谢谢啦!正在学习使用sean中。。
Seam学习笔记 -
laorer:
00 -现在,互联网造就了一批富翁,但那时,似乎什么都不会去想 ...
如果时光能够回流到八年前 -
liuqizhi0925:
八年前,OMG ,能改变的事情真的很多...
如果时光能够回流到八年前
(一) 高级复制(Advanced Replication)
首先,从总部业务系统的业务需求出发,业务系统只需要对只读的数据进行同步和查询。
Oracle高级复制,也成为对称复制,分为多主体复制、物化试图复制和前两种的混合复制(参考图1-1,图1-2)。高级复制主要是用在对称的、等同的数据库表之间的(单向或双向)的复制,以满足分布式应用的需求。但高级复制也有一些缺点:
1. 对网络的稳定性和传输速度要求比较高。
2. 配置和管理稍微麻烦。
图1-1 Multimaster Replication
图1-2 Read-Only Materialized View Replication
下面是高级复制中的 物化视图架构的创建步骤:
1、检查系统初始化参数
global_names 为 TRUE 以及job_queue_processes大于0。
2、检查全局数据库名称
上述三个站点的db_domain名称应该相同,只有db_name不同。
3、修改上述三个站点中的tnsnames.ora文件
4、建立主体站点
建立复制管理用户repadmin;建立主体组和实体化视图组;
注册传播用户;
建立物化视图站点复制管理用户的代理用户;
5、设置物化视图站点1
建立物化视图管理用户mvadmin;
注册传播用户;
6、设置物化视图站点2
建立物化视图管理用户mvadmin;
注册传播用户;
7、建立主体组
创建复制组,并将复制对象添加到复制组;
生成复制支持;
8、建立物化视图日志
建立物化视图日志(主站点);
建立物化视图;
将物化视图和相关索引添加到物化视图组;
将物化视图添加到刷新组;
对于高级复制中的多主环境和可更新的物化视图环境而言,它的原理是使用Oracle的Internal Trigger捕获DML及DDL操作,并将这些操作封装在Remote Procedure Calls(RPCs)里,并借助Deferred Transaction Queue来传递RPCs并在目标数据库利用Internal Trigger执行传递过来的RPCs从而实现了数据的同步。
如果仅仅是高级复制环境中的只读物化视图环境,那么Oracle这里并不会使用Deferred Transaction Queue来传递RPCs,而是直接利用解析物化视图日志的方式来实现数据的同步。
(二) 物化视图(MATERIALIZED VIEW)
1. 物化视图的种类:
物化视图,根据不同的着重点可以有不同的分类
1) 按刷新方式分:FAST/COMPLETE/FORCE
2) 按刷新时间的不同:ON DEMAND/ON COMMIT
3) 按是否可更新:UPDATABLE/READ ONLY
4) 按是否支持查询重写:ENABLE QUERY REWRITE/DISABLE QUERY REWRITE
物化视图有三种刷新方式:COMPLETE、FAST和FORCE。
1) 完全刷新(COMPLETE)会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式),然后根据物化视图中查询语句的定义重新生成物化视图。
2) 快速刷新(FAST)采用增量刷新的机制,只将自上次刷新以后对基表进行的所有操作刷新到物化视图中去。
3) 采用FORCE方式,Oracle会自动判断是否满足快速刷新的条件,如果满足则进行快速刷新,否则进行完全刷新。
设置REFRESH ON COMMIT的物化视图不能访问远端对象。
Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle如何通过一个物化视图日志还可以支持多个物化视图的快速刷新。
还可以使用以下语句进行手动刷新:
exec DBMS_MVIEW.REFRESH('aics_t_dv');
1、完全刷新
exec dbms_mview.refresh(list => 'aics_t_dv',method => 'c');
2、快速刷新
exec dbms_mview.refresh(list => 'aics_t_dv',method => 'f');
2. 对物化视图日志的讨论:
物化视图日志表的大小跟日志表的临时存储的数据量有关。比如DEV_INFO表每天增量更新大概为300万条记录。那MLOG$日志表的大小也大概为300M左右。而另外一个日志表RUPD$只是临时表,不会耗用空间。
(三) 流复制(Streams Replication)
Streams Replication是Oracle 10g新推出的同步技术。Streams Replication基于日志挖掘原理(数据库必须运行在Archive Log模式),可以实现表,用户,数据库级别的同步。
Streams Replication在实时性、稳定性、高效率、低消耗(较少的cpu/network资源)等方面更有优势,但凡一些新推出的功能,都或多或少存在一些不确定的因素。Stream对系统的设计与维护方要有相当的对stream技术的把控能力,而大多数系分与DBA对这个东西都没有经验,所以难以推广。
从我们的需求出发,我们只需要通过数据库链,建立基于主键的快速刷新的物化视图就可以满足需求,而且易于配置和管理。
创建快速刷新的物化视图的步骤和参考脚本如下所示:
1. 在源表建立物化视图日志 --connect BISONcu CREATE MATERIALIZED VIEW LOG ON MODEL tablespace &BISONCU_SPACE -- 日志空间 WITH PRIMARY KEY; -- 指定为主键类型 2. 授权给中间用户 --此处省略中间用户建立同义词的SQL语句 grant select on MODEL to aicentersupport; grant select on MLOG$_MODEL to aicentersupport; 3. 在目标数据库上创建DBLink 4. 在目标数据库上创建MATERIALIZED VIEW --connect BISONcs CREATE MATERIALIZED VIEW AICS_MODEL TABLESPACE &BISONCS_SPACE REFRESH FAST ON DEMAND --第一次刷新时间 --START WITH to_date('2008-08-08 20:00:00', 'yyyy-mm-dd hh24:mi:ss') START WITH sysdate --刷新时间间隔。每1天刷新一次,时间为凌晨2点 --NEXT TRUNC(SYSDATE,'dd')+1+2/24 NEXT sysdate+1/24/20 WITH PRIMARY KEY --USING DEFAULT LOCAL ROLLBACK SEGMENT DISABLE QUERY REWRITE AS select model_id, status, model_name, manu_id, description, create_time, update_time, sw_version from aics_model@link_aics; 5. 在目标物化视图上创建索引 --例如对DEV_INFO表,需要创建索引,主键索引已经默认创建 create index IDX_T_DV_CT on aics_DEV_INFO (CREATE_TIME, UPDATE_TIME) tablespace &BISON_IDX; create index IDX_T_DV_UT on aics_DEV_INFO (UPDATE_TIME) tablespace &BISON_IDX; create index I_T_DV_MSISDN on aics_DEV_INFO (MSISDN) tablespace &BISON_IDX;
考虑因素:
1) 数据复制的实时性;
虽然不能实现立即更新的实时性,但系统需求只要求在每天凌晨3点能够读取更新完成的数据。
所以只要设置ON DEMAND方式,并每天一次或多次进行增量刷新。
2) 数据复制对系统性能的影响;
测试的性能指标数据——
|
数据量 |
耗时 |
磁盘I/O |
备注 |
创建物化视图 |
100w数据 |
11 secs |
|
不包括创建索引的时间。 |
14000w数据 |
2175 secs |
|
大概半小时 |
|
刷新视图 |
100w数据的刷新 |
980.875 secs |
|
在其基础上刷新100w |
14000w数据的刷新 |
10030secs(近3个小时) |
|
在其基础上刷新100w |
|
物化视图日志 |
新增100w数据 |
N/A |
N/A |
|
3) 数据复制实现方案配置维护的复杂程度:
对于快速刷新的物化视图的配置和维护:
源数据库只需要建立 物化视图日志,开放源表和物化视图日志的读权限。
目标数据库只需要建立快速刷新的物化视图,并创建相关的索引。
4) 创建物化视图的查询语句和分区:
总部外部服务接口模块在创建物化视图时,只需要引用表的部分字段,而且可以对物化视图进行分区。例如对AICS_DEV_INFO表,创建其物化视图的语句如下:
CREATE MATERIALIZED VIEW AICS_DEV_INFO
partition by hash (IMEI)
(
partition P1 tablespace &BISON_OTHER,
partition P2 tablespace &BISON_OTHER,
partition P3 tablespace &BISON_OTHER,
partition P4 tablespace &BISON_OTHER,
partition P5 tablespace &BISON_OTHER,
partition P6 tablespace &BISON_OTHER,
partition P7 tablespace &BISON_OTHER,
partition P8 tablespace &BISON_OTHER
)
REFRESH FAST
ON DEMAND
--第一次刷新时间
START WITH to_date('2008-08-08 20:00:00', 'yyyy-mm-dd hh24:mi:ss')
--刷新时间间隔。每1天刷新一次,时间为凌晨2点
NEXT TRUNC(SYSDATE,'dd')+1+2/24
WITH PRIMARY KEY
DISABLE QUERY REWRITE AS
select MSISDN,IMSI,IMEI,MANU_ID,MODEL_ID,UPDATE_TIME from AICS_DEV_INFO@link_aics;
5) 其他维护工作:
¨ 物化视图日志表不能删除,如果删除则目标服务器的物化视图必须重建。
¨ 物化视图不支持DDL的变更同步。但如果建立物化视图时,没有引用到源表的部分字段,则这些字段是可以更改的。
¨ 查看目标物化视图的刷新情况。
select * from user_mviews;
select * from user_jobs;
select * from dba_jobs_running;
¨ 查看物化视图所在的基表最后被成功刷新的时间:
SELECT MASTER,LOG_TABLE,CURRENT_SNAPSHOTS FROM DBA_SNAPSHOT_LOGS;
四、 参考脚本
下面是创建static_info_child、dev_info两个表的物化视图的参考脚本:
-- 1.在源表的数据库上,创建物化视图日志,指定为主键类型
conn xxx/xxx
define BISON_OTHER=BISON_OTHER
CREATE MATERIALIZED VIEW LOG ON static_info_child
tablespace &BISON_OTHER
WITH PRIMARY KEY;
CREATE MATERIALIZED VIEW LOG ON dev_info
tablespace &BISON_OTHER
WITH PRIMARY KEY;
grant select on MLOG$_static_info_child to aicentersupport;
grant select on MLOG$_dev_info to aicentersupport;
-- 2. 在目标表数据库上,创建物化视图,指定为主键类型和快速刷新
conn BISONcs/BISONcs
define BISONCS=BISONCS
define BISONCS_OTHER=BISONCS
define BISONCS_IDX=BISONCS_IDX
--set timing on;
CREATE MATERIALIZED VIEW AICS_static_info_child
TABLESPACE &BISONCS
REFRESH FAST
ON DEMAND
--第一次刷新时间 START WITH to_date('2008-08-08 20:00:00', 'yyyy-mm-dd hh24:mi:ss')
START WITH sysdate
-- 一天一次
NEXT TRUNC(SYSDATE,'dd')+1+2/24
-- 每两小时一次
-- next TRUNC(SYSDATE,'hh')+2/24
WITH PRIMARY KEY
DISABLE QUERY REWRITE AS
select item_id, model_param_id, attr_id, attr_name, item_value, description, supported
from AICS_static_info_child@BISONCS;
CREATE MATERIALIZED VIEW AICS_DEV_INFO
partition by hash (IMEI)
(
partition P1 tablespace &BISONCS_OTHER,
partition P2 tablespace &BISONCS_OTHER,
partition P3 tablespace &BISONCS_OTHER,
partition P4 tablespace &BISONCS_OTHER,
partition P5 tablespace &BISONCS_OTHER,
partition P6 tablespace &BISONCS_OTHER,
partition P7 tablespace &BISONCS_OTHER,
partition P8 tablespace &BISONCS_OTHER
)
REFRESH FAST
ON DEMAND
--第一次刷新时间 START WITH to_date('2008-08-08 20:00:00', 'yyyy-mm-dd hh24:mi:ss')
START WITH sysdate
NEXT TRUNC(SYSDATE,'dd')+1+2/24
WITH PRIMARY KEY
DISABLE QUERY REWRITE AS
select IMEI, MODEL_ID, MANU_ID, SW_VERSION, CREATE_TIME, UPDATE_TIME,MSISDN,IMSI,STATUS
from AICS_DEV_INFO@BISONCS;
-- 3. 在目标物化视图上创建其他索引
create index IDX_aics_DEV_INFO_UT on aics_DEV_INFO (UPDATE_TIME) tablespace &BISONCS_IDX nologging;
create index I_aics_DEV_INFO_MSISDN on aics_DEV_INFO (MSISDN) tablespace &BISONCS_IDX nologging;
发表评论
-
Timesten for Unix的安装
2009-10-10 17:33 2212下载安装文件 1. 查看系统的具 ... -
多数据库兼容问题
2007-02-23 00:00 1352解决多数据库兼容问题: 解决方案一:(适用于数 ... -
书写历史的甲骨文--ORACLE公司传奇
2007-02-16 00:00 883原文地址:http://www.dbanotes.net/Or ... -
over partition by与group by 的区别
2007-02-09 00:00 2651over partition by与group by 的区别 ... -
ORACLE的锁机制
2007-02-02 00:00 1022ORACLE的锁机制 设立封锁机制主要是为了对并发操 ... -
Oracle分区表的优势
2007-01-26 00:00 1836分区表的优势 对于数据库的执行机制还是不大了解,希望专家能通 ... -
RMAN备份命令[转]
2007-01-19 00:00 11771、切换服务器归档模式 ... -
Oracle启动停止命令
2007-01-12 00:00 1540如果未在环境变量中指定实例名,则lsnrctl命令需要指定实例 ... -
Oracle内存结构[转]
2007-01-05 00:00 1121oracle内存结构 SGA:针对系统的内存空 ... -
Oracle日志文件
2006-12-29 00:00 31991.查询系统使用的是哪一组日志文件:select * from ... -
Oracle日志文件使用小结
2006-12-22 00:00 29081:给日志组1增加重做日志文件. SQL> alter ... -
Oracle入门书籍推荐[转]
2006-12-15 00:00 3155很多朋友要我帮忙推荐一下Oracle的入门书籍,能够了解Ora ... -
Oracle优化笔记2
2006-12-08 00:00 1025常用的跟优化有关的数据字典视图 v$sql, ... -
Oracle优化笔记1
2006-12-01 00:00 1042Oracle优化笔记 ... -
Oracle维护笔记1
2006-11-24 00:00 1183Oracle维护笔记 ·常用的数据字典视图—— ... -
Oracle开发笔记1
2006-11-17 00:00 964常用脚本: --1. 循环插入测试语句: ... -
Oracle学习笔记2
2006-11-10 00:00 949·MERGE INTO的基本语法 MERGE IN ... -
char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型
2006-10-20 00:00 1356Varchar 对每个英文(ASCII)字符都占用2个字节,对 ... -
MySQL 笔记
2006-10-13 00:00 694MySQL 笔记 -
SQL Server存储过程的事务实现
2006-10-06 00:00 1336SQL Server存储过程的事务实现
相关推荐
大数据异构数据库物化视图设计与落地 多云时代,构建云上数据库备份容灾与测试中心 分布式算法在数据库中的原理和实践 分布式图数据库管理技术介绍 归因分析在去哪儿网的应用落地 合规下的B站大数据安全 国产数据库...
- 物化视图:对于统计查询,可以考虑创建物化视图以提高查询速度。 - 使用连接池:如JDBC连接池,减少物理连接的创建,提高性能。 - 减少访问次数:批量操作和预取机制(preFetch)可以降低对数据库的访问频率。 ...
5. **临时表和视图**:三者都支持临时表和视图,但具体语法和功能可能有所不同,例如,PostgreSQL的视图可以是物化视图,提供即时更新。 6. **索引**:Oracle提供B树、位图等多种索引类型,适用于不同场景;MySQL...
- **定义**:物化视图是一种预计算好的结果集,定期更新。 - **适用场景**:对于固定查询模式且更新频率较低的场景。 - **实现方式**:创建物化视图,定时任务更新数据。 #### 三、案例分析 假设我们需要统计用户...
4. **使用物化视图**:对于重复查询,创建物化视图可以预先计算结果,提高查询速度。 三、Hive配置优化 1. **内存参数调整**:如`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`,根据任务需求合理分配...
- 表结构:两者对表、字段、索引的定义有所不同,例如Oracle支持分区表、物化视图等高级特性。 - SQL语法:虽然都遵循SQL标准,但Oracle有自己的扩展,如PL/SQL。 2. 使用"Convert Mysql to Oracle"工具: - ...
Exadata优化了数据仓库的性能和可扩展性,通过立方体组织的物化视图加速分析查询,显著降低了成本,提升了并行处理能力,减少了管理负担,内置了高可用性,确保了数据的连续性和安全性。这种高度集成的解决方案极大...
Oracle则提供多种存储引擎,如表空间和分区,支持更复杂的事务和高级特性,如物化视图、数据库链接等。 2. SQL语法差异:虽然两者都遵循SQL标准,但在语法上存在一些差异。例如,MySQL中的LIMIT关键字用于分页,而...
4. **性能优化**:包括索引策略、分区、物化视图、SQL优化等,这些都能显著提升查询速度。同时,使用Oracle的自动内存管理和自动工作负载管理可以自动化资源分配,提高系统效率。 5. **安全与备份**:Oracle提供...
StarRocks还支持现代化物化视图,进一步加速查询。使⽤StarRocks,用户可以灵活构建包括大宽表、星型模型、雪花模型在内的各种模型。 StarRocks兼容MySQL协议,支持标准SQL语法,易于对接使用,全系统无外部依赖,...
8. **性能优化**:通过索引、分区、物化视图等方式提高查询速度,同时监控系统性能,进行必要的调整。 9. **安全与访问控制**:确保数据的安全性,设置适当的访问权限,防止未授权的访问和数据泄露。 10. **持续...
1. **订单分析**:针对订单处理时间的特性,通过优化数据处理流程、采用云数据库、调整订单流程以及使用物化视图等手段,解决了报表分析中数据处理的瓶颈问题。 2. **我的订单**:不同的电商网站在“我的订单”功能...
1. 高性能:Oracle支持并行查询、索引优化、物化视图等技术,可处理大量数据。 2. 高可用性:Oracle RAC(Real Application Clusters)允许多节点共享同一数据库,提供高可用性。 3. 数据安全性:Oracle提供了强大的...
7. **性能优化**:通过合理的表分区、归档旧数据、使用物化视图等方式,可以优化数据库性能。 8. **备份与恢复策略**:定期备份数据库,制定应急恢复计划,以防数据丢失。 9. **文档记录**:完整记录数据库设计...
### 办公自动化系统的设计与技术选型 #### 平台选择 本办公自动化系统采用了B/S(浏览器/服务器)模式,使用JSP技术结合SQL Server 2005作为数据库服务器端进行开发。B/S模式的优点在于用户端仅需一个浏览器即可使用...
查询优化关注于提升数据处理效率,例如优化查询语句、建立索引、使用物化视图等。数据压缩技术可以显著减少存储空间需求,并提高数据I/O性能。 8.测试与验证 在测试与验证阶段,需要制定全面的测试策略,包括单元...
此外,利用存储过程、物化视图和并行查询等技术也能提升处理速度。 编写高效SQL语句的技巧包括:精准选择JOIN条件,避免在WHERE子句中使用NOT运算符,合理使用临时表,以及避免在大表上进行计算。另外,注意SQL的...
前者可通过创建索引、分区、物化视图等手段,后者则涉及数据并行加载、批处理策略等。 9. **元数据管理**:元数据记录了数据的来源、含义、处理历史等信息,对于理解和维护数仓至关重要。良好的元数据管理系统能...