在AnySQL.net中搜索标签(Tags) 'Refresh' 的结果:
MVIEW引起ORA-04031
有一个数据库报了ORA-04031错误, 等我们上去看时, 却是好的, 通过查询Statspack有关视图, 发现Shared Pool Free Memory在这之前是逐渐减少的, sql area部分占得很大. 可能的原因是, 当Oracle遇到这个错误后, 自动做了一次Flush Pool操作. 于是写了一段程序去跟踪SQL占用的内存, 发现有两个SQL语句很不正常, 版本数很多, 占用的内存也很大, 差不多占了一半的sql area. ASQL> ora share ADDRESS CHILDS BYTES ---------------- ------ --------- 0000040000A328F8 1026 215577124 000004000F7AB058 1026 215503530 来看一下这两个SQL语句是什么? ASQL>...
在Perl中用Array DML来进行性能调优
asyncdata是一个用于同步数据的角本, 基于实体化视图日志或自定义的触发器来获得变更的记录, 然后防照实体化视图刷新的过程来进行数据同步. 几个月之前完成的这一段角本, 现在要拿来作一些数据的迁移用了. 除正确性外, 性能就是最关键的因素了. 在处理SELECT的结果时, 我们已经广泛地使用Array Fetch提升性能了, 不过Array DML真正用得还是不够广的, 相对来说, 在PL/SQL中用得多一些. 现在我要测试的是在Perl中测试Array DML的性能提升. 做的测试是在两个不同的数据中心间进行数据同步, 网络速度肯定是不够快的, 在不用Array DML的情况下, 源节点这边插入一万条记录(表有13个字段, 一个主键索引), 用Perl同步到目标数据库需要40秒, 用dblink的结果更差, 需要一分钟左右. 通过升级DBD Oracle后, 用Array DML方式处理这一万条刻录时(Array Size为500), 只用了4秒钟, 整个速度提升了10倍, 应当可以满足性能要求了. ...
使refresh_mysql适用于数据归档的一点改进
受上一篇中案例的启发, 对refresh_mysql角本作了一点点改进, 可以为DELETE目标数据库的SQL加一个WHERE条件, 以防止删除不想删除的数据. 举个简单的例子来说, 有一个产品数据和历史库, 产品库中只有今年的记录, 而历史库中包括所有(当前的和07年以前)的数据, 我们还需要将产品库的修改比较实时地反应到历史库中, 那么我有可能要经常在产品库中删除三个月以前的记录, 为了不让这些删除操作被复制到历史库中, 就可以加一个Where条件了, 如"CREATE_DATE > SYSDATE - 30", 这样的话, 就只能在历史库中更新最近三个月的记录了: 只需要refresh_mysql角本的配置文件后面再加一列, 如下所示: # SOURCE # PKEY # MVIEW Log # TARGET T_OBJECTS # OBJECT_ID # MLOG$_T_OBJECTS # T_OBJECGS #...
由物化视图Complete刷新引起的数据丢失
今日早上, 在网上看到一篇贴子, 问了如下两个问题: 数据仓库中有2007年之前的数据 问题一: 如何保持erp与数据仓库中2007年数据一致而数据仓库中2007年之前数据不变(以前通过dbms_mview.refresh('xxx','fast'))? 问题二: 我对x物化视图做了一个全部刷新,但是x物化视图中的数据全部变成2007年的数据,以前数据丢失?如阿恢复到刷新前的状态 其中第一个问题是个难题, 现在很多公司都在想这样的一个解决方案, 其实就是一个实时复制方案, 从在的角度来说, 这方面可以用的方案有: 1, Quest公司的SharePlex; 2, DSG公司的RealSync(没有一点印象); 3, Oracle公司的Stream. 前两者都是比较贵的解决方案, Oracle的Stream懂的人少, 而且在9i中还不够稳定. 物化视图并不适合用来归档生产库的数据到历史库, 原来就象第二点所说的那样, 如果进行全部刷新, Oracle会先在目标数据库上运行一个DELETE命令来删除所有的数据(你可以SQL_TRACE一把), 估计这位老兄也是查了资料或翻了贴子后, 觉得物化视图可以做到这一点, 所以这样做了一把, 结果就是数据被删除了. 最近我也一直在想这样的一个解决的方法, 在物化视图中, 用物化视图日志来捕获对表的变更, 是一个比较好的方法(对于负荷不是很高的数据库),...
在MySQL中建立实体化视图日志
在MySQL中建立实体化视图日志表, 在这里基表表名是T_MVLOG, 主键字段是COL1. 日志表结构如下: CREATE TABLE MLOG$_T_MVLOG ( SEQUENCE$$ BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, DMLTYPE$$ CHAR, COL1 BIGINT ); Oracle中的实体化视图是用触发器来实现的, 不同的是早期版本是用Internal Trigger(但还可以在Trigger$表中查到), 而在8i及以后的版本中, 则变为Kernel Level Trigger(在Trigger$中是找不到了). 我们现在在MySQL中手工建立触发器, 说不定以后MySQL真的也引入实体化视图功能呢? 也在Kernel级别来实现呢? 发现建立触发器的语句好象Oracle的PL/SQL. DELIMITER |...
refresh_mysql.pl角本的一个配置例子
在Oracle中创建表和实体化视图日志: CREATE TABLE T_OBJECTS AS SELECT * FROM DBA_OBJECTS WHERE ROWNUM < 1; ALTER TABLE T_OBJECTS MODIFY OBJECT_ID NOT NULL; ALTER TABLE T_OBJECTS ADD PRIMARY KEY (OBJECT_ID); CREATE MATERIALIZED VIEW LOG ON T_OBJECTS WITH PRIMARY KEY, SEQUENCE; ...
Oracle的实体化视图(MVIEW)的深入研究之四
现在对第一篇中基表进行移动(Move)操作, 会发现不能进行快速刷新, 必须进行全部(Complete)刷新才行. 如下所示: SQL> ALTER TABLE T_MVLOG MOVE; Table altered. SQL> EXEC DBMS_MVIEW.REFRESH('MV_T_MVLOG','FAST'); BEGIN DBMS_MVIEW.REFRESH('MV_T_MVLOG','FAST'); END; * ERROR at line 1: ORA-12034: materialized view log on "ANYSQL"."T_MVLOG" younger than last refresh ORA-06512: at "SYS.DBMS_SNAPSHOT", line 803 ORA-06512:...
Oracle的实体化视图(MVIEW)的深入研究之三
在Oracle中创建视图时, 如果我们用了"*"符号, 会被自动地根据当时表的定义扩展成字段列表, 在后面再加列时, 新的列不会自动出现在视图的定义中, 直到你重建视图为止. 那么在MVIEW中呢, 通过一个不经意的操作, 发现一个有趣的问题. 总之, 不要随便地在实体视图的定义中使用"*"号. 下面我们在一个表上建两个实体化视图, 角本如下: CREATE TABLE T_MVTEST AS SELECT * FROM TAB; CREATE MATERIALIZED VIEW LOG ON T_MVTEST WITH ROWID,SEQUENCE; CREATE MATERIALIZED VIEW MV_TEST_STAR REFRESH FAST WITH...
Oracle的实体化视图(MVIEW)的深入研究之一
从Oracle 8i开始提供了实体化视图, 能过预先计算好的中间表来提高应用的访问速度, 在特定的情况下是很有用的一项技术. 另外实体化视图还可用于数据复制, 在这个上面的应用越来越多. MVIEW中经常跗以遇到刷新很慢的情况, 如何提高呢? 首先来研究一下刷新的过程. 下面是用来创建演示表的角本: CREATE TABLE T_MVLOG (COL1 VARCHAR2(20)); CREATE MATERIALIZED VIEW LOG ON T_MVLOG WITH ROWID, sequence; CREATE MATERIALIZED VIEW MV_T_MVLOG REFRESH FAST WITH ROWID AS SELECT ROWID...
站内搜索 | Search
总数: 526 | 留言: 1642
- Name: Fangxin Lou
- MSN: anysql©live.com
- Mail:anysql©yahoo.com
anysql©gmail.com - Skype: anysql
- AIM: loufangxin
- Mobile:008615925611590
分类 | Categories
软件下载:
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql