在oracle中建立sqlserver的物化视图语句
发布网友
发布时间:2022-04-08 03:09
我来回答
共3个回答
懂视网
时间:2022-04-08 07:31
的ODI工具进行抽数,但是对方提供的数据库用户下没有任何对象,只是有查询所有表的权限,因此无法做数据反向。
于是决定使用物化视图,把对方数据库中的数据拿过来,虽然数据量比较大,但是每月只拿一次,而且如果设置成增量更新,也不会太慢。现在记录下物化视图的创建过程(以一张表为例)。
一、准备条件以及备注
假设双方数据库都是ORACLE10g,需要同步过来的表名叫:GG_ZLX_ZHU,对方数据库用户名:username,密码:password,SID:CPEES。
二、开始干活
1、首先要创建DB_LINK
- CREATE DATABASE LINK to_cpees
-
- CONNECT TO "username" identified by "password"
-
- using "CPEES"
其中CPEES为新建的到对方数据库的TNS。执行,现在我们就已经创建了到对方数据库的DB_LINK TO_CPEES。
2、创建Oracle物化视图快速刷新日志
因为上面说过,以后视图的刷新将采用增量刷新的方式,因此,为配合增量刷新,ORACLE要求要在住表上建立物化视图日志。
- CREATE MATERIALIZED VIEW LOG ON GG_ZLX_ZHU
-
- WITH PRIMARY KEY
-
- INCLUDING NEW VALUES;
-
(上面的SQL要在远程数据库上执行,不能在本地执行)
3、创建Oracle物化视图
Oracle物化视图,从名字上面来开,它应该是属于视图,但是确实物化。其物化是针对普通视图并没有真正的物理存储而言,其实可以简单的把物化视图看做一个物理表(不再做具体解释)。
- CREATE MATERIALIZED VIEW GG_ZLX_ZHU --创建物化视图
-
- BUILD IMMEDIATE --在视图编写好后创建
-
- REFRESH FAST WITH PRIMARY KEY --根据主表主键增量刷新(FAST,增量)
-
- ON DEMAND -- 在用户需要时,由用户刷新
-
- ENABLE QUERY REWRITE --可读写
-
- AS
-
- SELECT * FROM GG_ZLX_ZHU@TO_CPEES; --查询语句
4、视图刷新
根据业务需要,每月不定时刷新,所以不能是JOB,而且数量多,所以也不能一个一个刷新。根据以上条件,选择使用ORACLE自带工具DBMS_MVIEW工具包中REFRESH方法对物化视图进行刷新。该方法有两个参数,第一个参数是需要刷新的物化视图名称,第二个参数是刷新方式。我们可以写存储过来,对每个物化视图调用一次REFRESH方法,也可以使用“,”把物化视图连接以来,一次刷新。如下:
- CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS
-
- BEGIN
-
- DBMS_MVIEW.REFRESH(‘GG_ZLX_ZHU‘,‘f‘);
-
- END P_MVIEW_REFRESH;
-
或者使用
- CREATE OR REPLACE PROCDURE P_MVIEW_REFRESH AS
-
- BEGIN
-
- DBMS_MVIEW.REFRESH(‘GG_ZLX_ZHU,GG_ZLX_FU‘,‘ff‘);
-
- END P_MVIEW_REFRESH;
-
注意:
1、如果需要同时刷新多个物化视图,必须用逗号把各个物化视图名称连接起来,并对
每个视图都要指明刷新方式(f、增量刷新,c、完全刷新,?、强制刷新)。
2、当日志和物化视图创建好后,删除日志,则需要重新创建物化视图,否则无法增量
刷新。
3、因为上面写的物化视图时根据主键进行更新,因此,主表必须有主键。
4、以上文章中红色是为可替换的,大家可以根据自己项目需求来修改。
希望上面的内容对大家能有帮助。
忘了写删除方法了,日志和物化视图要分开删除
- DROP MATERIALIZED VIEW LOG ON GG_ZLX_ZHU@TOCPEES;
-
- DROP MATERIALIZED VIEW GG_ZLX_ZHU;
oracle物化视图创建
标签:
热心网友
时间:2022-04-08 04:39
1、建立一个到sqlserver数据库的odbc连接。
2、通过这个odbc建立一个岛sqlserver数据库的dblink。
3、通过dblink建立物化视图。
每一步都很简单,组合起来就行了。
热心网友
时间:2022-04-08 05:57
建立一个数据库的dblink把两个数据库连接起来。
再通过oracle建立物化视图。
怎样在oracle与sql server 之间建立连接
1、建立一个到sqlserver数据库的odbc连接。2、通过这个odbc建立一个岛sqlserver数据库的dblink。3、通过dblink建立物化视图。每一步都很简单,组合起来就行了。
SQLServer向Oracle中建表
一、sql语句:create table test(id int,name varchar2(10));二、图形界面:以PL/SQL为例:1、登录到指定数据库。2、左侧列表中找到Tables选项,并右键,选择新建。
sqlserver创建视图的语句,在查询分析器里执行提示在;附近有语法错误。请...
后面不能加 ; (分号)的,加入;是ORACLE才会使用到的。SQL SERVER是不需要加;的。
oracle环境下编写的语句 能够在sqlserver中执行成功
select * from (select Row_number() over(order by RecordTime desc) r, m.* from Historydata m where 1=1 and m.SiteCode='0107' and m.RecordTime>='2011-10-28 0:00:00' and m.RecordTime<='2011-11-4 23:59:59' ) p where p.r between 1 and 15 就这么简单 。不...
sqlserver拉出在Oracle建表的语句,谢谢了高手门 ,其中TYPHON_XML是个...
大概是这样:CREATE TABLE WT_TYPHOON ( TYPHOON_NO VARCHAR2(50) NOT NULL, DT_CODE VARCHAR2(20) , NAME_EN VARCHAR2(50) , NAME_CN VARCHAR2(50) , CENTER_PRESSURE_MIN VARCHAR2(50) , LEVEL1 VARCHAR2(50) , IS_LANDING VARCHAR2(50) , IS_ACTIVE VARCHA...
如何将SQLSERVER上的数据插入到ORACLE上
如何将SQLSERVER上的数据插入到ORACLE上 首先你需要在SQLSERVER和ORACLE之间建立一个链接服务器。然后使用链接服务器来插入数据。然后使用语句:insert into openquery(linksvr,'select from oracletable')select from sqlservertable
SQLServer与Oracle数据库在安全性上的异同
用户建立默认权限不同 这两个数据库都可以至少通过两种方式建立用户名 一是通过图形化的界面建立用户名与帐号 如Oracle数据库可以通过EM 即浏览器建立用户帐号;而SQL Server数据库则可以通过企业管理器建立用户帐号 另外一个是可以通过命令行 也就是说 通过SQL 语句建立用户名 从SQL Server数据库来说 这两种建立...
oracle与sqlserver区别
SQL Server中以页为单位或使用扩展类型以 页为一单位进行空间分配而无法人工干预 当遇到频繁存储或大数据量存储时 系统将频繁进行I/O操作使工作效率低下 Oracle中的SQL语句书写规范且提供了完整的函数和数据类型 Oracle提供了健全的错误机制 用户可以轻松的获得错误位置和错误原因而加以修改 用户还可以自己定义所须的...
如何提高oracle视图的查询速度?
如果经常用到这个表查询的话,可以建立一个 物化视图 materialized view ,并根据相应的字段(哪个 字段查询次数比较多),建立索引,这样查询效率会不会好些 另外,如果是按日期或者按地区等分的表,可以放在一个表中,以分区表的形式存在,查询时,只查询那个分区就可以了,你可以看一下 partition list...
SQL Server 视图查询慢,如何优化?请不要复制粘贴谢谢
另外补充一点,视图本身就会造成效率低,因为视图存的是sql定义,当执行查询的时候 数据库会先上磁盘上查询视图定义 再利用视图定义查询数据,这样就产生了至少两次磁盘i/o,oracle中有物化视图的概念,SqlServer中应该也有,如果我的改善计划还不能达到你的要求的话,建议考虑一下。--- 以上,希望对你...