物化视图实现数据库仓库主从复制(2)

文章版权所有 Jusin Hao(luckyfriends) ,支持原创,转载请注明。

1. 创建物化视图

1.1. 建立DBLink

复制库(10.168.2.12)上配置tns

/u01/app/oracle/product/11.2.0/db_1/network/admin\tnsnames.ora增加

bidw55 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.168.2.11)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = bidw)

)

)

复制库(10.168.2.12)上建立datalink:

以BI_USE55R用户登录:

CREATE public DATABASE LINK DW11LINK CONNECT TO BI_USER IDENTIFIED BY "oracle" using 'bidw55';

1.2. 生产库(10.168.2.11)上建立MV LOG 物化试图日志

以BI_USER用户登录创建物化试图日志。

1.2.1. 没有主键的,建mvlog的方式:

CREATE MATERIALIZED VIEW LOG ON CHECK_DM TABLESPACE "BI_USER_DATA"

WITH ROWID, SEQUENCE INCLUDING NEW VALUES;

脚本生成方法:

select 'CREATE MATERIALIZED VIEW LOG ON ' || a.table_name ||

' TABLESPACE BI_MATERIALIZED WITH ROWID, SEQUENCE INCLUDING NEW VALUES;'

from user_tables a

where a.table_name in ('CHECK_DM',…..);

1.2.2. 有主键的表,建mvlog方式:

CREATE MATERIALIZED VIEW LOG ON CHECK_DM TABLESPACE "MATERIALIZED" WITH ROWID, PRIMARY KEY, SEQUENCE INCLUDING NEW VALUES;

脚本生成方法:

select 'CREATE MATERIALIZED VIEW LOG ON ' || a.table_name ||

' TABLESPACE BI_MATERIALIZED WITH ROWID, PRIMARY KEY, SEQUENCE INCLUDING NEW VALUES;'

from user_tables a

where a.table_name in ('CHECK_DM',…..);

1.3. 复制库(10.168.2.12)上建立MV物化试图

以BI_USER12用户登录从库,创建物化视图

1.3.1. 没有主键的表,建mv的方式

CREATE MATERIALIZED VIEW CHECK_DM REFRESH FAST WITH ROWID ON DEMAND

AS SELECT * FROM CHECK_DM@DW11LINK;

脚本生成方法:

select 'CREATE MATERIALIZED VIEW ' || a.table_name ||

' parallel 4 REFRESH FAST WITH ROWID ON DEMAND AS SELECT /*+ parallel(4) */ * FROM ' ||

a.table_name || '@DW11LINK;'

from user_tables a

where a.table_name in ('CHECK_DM',…..);

1.3.2. 有主键的表,建mv的方式:

命令参考:

CREATE MATERIALIZED VIEW CHECK_DM REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT * FROM CHECK_DM@ERPLINK;

----指定表空间

CREATE MATERIALIZED VIEW CHECK_DM tablespace bi_user_data REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT * FROM CHECK_DM@ERPLINK;

---加入并行和nologging

CREATE MATERIALIZED VIEW ZONE_INFO parallel 4 nologging REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT /*+ parallel(4) */ * FROM ZONE_INFO@DW11LINK;

脚本生成方法:

select 'CREATE MATERIALIZED VIEW ' || a.table_name ||

' parallel 4 nologging REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT /*+ parallel(4) */ * FROM ' ||

a.table_name || '@DW11LINK;'

from user_tables a

where a.table_name in ('CHECK_DM',…..);

1.4. 复制库(10.168.2.12)上建立刷新组和任务

以BI_USER12用户登录创建.

1.4.1. 创建刷新组:

BEGIN

DBMS_REFRESH.MAKE(

name => 'JBLJOB',

list => '',

next_date => SYSDATE,

interval => '/*60:Mins*/ sysdate + 60/(60*24)',

implicit_destroy => FALSE,

lax => FALSE,

job => 0,

rollback_seg => NULL,

push_deferred_rpc => FALSE,

refresh_after_errors => TRUE,

purge_option => NULL,

parallelism => NULL,

heap_size => NULL);

END;

/

commit;

1.4.2. 添加任务:

BEGIN

DBMS_REFRESH.ADD(

name => 'JBLJOB',

list => 'CHECK_DM',

lax => TRUE);

END;

/

创建刷新任务的脚本生成方法:

SELECT 'BEGIN DBMS_REFRESH.ADD(name =>''' || 'JBLJOB''' || ',' ||

'list =>''' || a.table_name || ''',lax => TRUE);END;/commit;'

from user_tables a

where a.table_name in ('CHECK_DM',…..);

2. 创建物化视图的索引

用以下语句从生产库上导出建索引的DDL语句,然后在复制库上执行

2.1. 在生产服务器上导出索引:

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',FALSE);

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'CONSTRAINTS',FALSE);

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',true);

set pagesize 0

set long 100000

set feedback off

set echo off

set linesize 2000

spool d:\create_index_result.sql

SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)

FROM USER_INDEXES u

where u.table_name in('CHECK_DM',…..);

spool off;

2.2. 格式化索引脚本

在复制库上创建索引前,需要注意生成的索引可能格式需要调整,

其中唯一索引改为非唯一索引;

修改索引所在表空间;

修改索引所属用户名;

索引较多加入nologging、并行;

有主键的表在创建视图过程中会创建对应的主键唯一索引;

大体格式如下:

CREATE INDEX "BI_USER12"."PK_CHECK_DM" ON "BI_USER12"."CHECK_DM " ("DC_ID") tablespace bi_user_index parallel 4 nologgingparallel 4 nologging;

3. 更新统计信息并建立统计分析任务

略。

;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14710393/viewspace-1167707/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14710393/viewspace-1167707/

一、基础操作与查询 编写SQL实现从students表中查询年龄大于18岁的学生姓名和学号 如何用SQL创建包含自增主键、创建时间的用户表users? 使用窗口函数计算每个部门的员工工资排名 如何通过SQL实现分页查询?比较LIMIT与ROW_NUMBER()的性能差异2 编写存储过程实现根据输入参数动态查询订单信息 如何批量插入10万条测试数据?讨论不同方法的效率差异 使用CTE(公共表表达式)递归查询组织结构树 如何实现数据库的表数据同步? 设计SQL语句统计每日新增用户数并生成趋势图 如何正确处理数据库中的货币金额字段?1 二、查询优化与索引 分析慢查询日志时应关注哪些关键指标?2 为什么可空列会影响索引效率?给出优化方案2 如何验证索引的使用情况?解释EXPLAIN输出关键字段 复合索引的最左前缀原则在编程中如何应用? 什么情况下会出现索引失效?列举5个常见场景 如何优化包含LIKE '%keyword%'的模糊查询? 讨论全文索引与普通索引的适用场景差异 大表添加索引的正确操作流程是什么? 如何通过覆盖索引减少回表查询? 分分表后如何维护全局索引? 三、事务与锁机制 编写代码演示事务的ACID特性实现 如何检测和解决死锁问题? 比较悲观锁与乐观锁在存扣减场景的应用 解释READ COMMITTED与REPEATABLE READ隔离级别的区别 为什么大事务会影响数据库性能?给出优化建议 使用SELECT FOR UPDATE实现并发控制时要注意什么? 如何通过编程处理Deadlock found异常? 讨论行锁、表锁、间隙锁的适用场景 长事务导致回滚段膨胀该如何处理? 如何监控数据库锁等待情况? 四、数据库设计 设计电商系统的商品SKU数据库表结构 如何通过范式理论优化学生选课系统的表设计? 讨论星型模型与雪花模型在数据仓库中的应用差异 设计支持多租户的SaaS系统数据库方案 如何存储和查询地理空间数据? 树形结构数据的存储方案对比(邻接表/路径枚举/嵌套集) 设计实时聊天消息的存储与查询架构 如何实现数据库版本迁移的自动化? 讨论JSON字段存储与关系型存储的取舍 设计支持历史数据追溯的审计日志表 五、高可用与架构 实现MySQL主从复制的配置步骤与注意事项 如何通过编程实现读写分离? 讨论数据库连接池的参数配置优化策略 设计跨数据中心的数据同步方
04-09
根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值