- 浏览: 209453 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (196)
- Git (16)
- maven (8)
- Python (20)
- linux (14)
- java (30)
- spring (5)
- javascript (4)
- oracle (15)
- jquery (4)
- jbpm4.4 (4)
- ibatis (1)
- svn (1)
- sql server (1)
- sqoop (1)
- photoshop (2)
- 日常记录 (5)
- scala (1)
- IntelliJ IDEA (7)
- mysql (2)
- Hive (1)
- visual studio code (3)
- angularjs (5)
- nodejs (4)
- gradle (1)
- springboot (4)
- jakson (1)
- hibernate (2)
- 面试 (5)
- React (2)
- Kotlin (1)
- Netty (0)
- webstorm (2)
- spring cloud (4)
- redis (1)
- PowerDesigner (1)
- Vue (4)
- easyui (1)
- activiti (2)
- httpClient4.5 (2)
- logback (3)
- ngrinder (1)
- 分库分表 (1)
最新评论
-
严东军:
学习了,谢谢
摘录--DBMS_SCHEDULER -
zwllxs:
你知道你调的是谁的代码不?
jbpm4.4+ssh2 完整请假流程
基于远程数据库表,建立本地数据库的物化视图2008年12月28日 星期日 12:40连接远程服务器
以下是引用片段:
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fjept)
)
)';
host=数据库的ip地址,service_name=数据库的ssid。
其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。
数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.
数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
查询远端数据库里的表
SELECT …… FROM 表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。
附带说下同义词创建:
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
删除dblink:DROP PUBLIC DATABASE LINK linkfwq。
如果创建全局dblink,必须使用systm或sys用户,在database前加public。
-物化视图 简单创建
--0.cmd 修改系统参数,在init.ora里面修改则每次都有效
alter system set job_queue_processes=20;
如果这个参数为0,物化视图是不会刷新的
--1.建表,必须有索引
create table stu
(
id varchar2(10) primary key,// 如果设置primary key,那就等于是创建索引,不是主键就需要建索引CREATE INDEX INDEX_STU ON STU(ID)
name varchar2(20)
)
--2.建日志
CREATE MATERIALIZED VIEW LOG ON STU; //stu是一本地表,如果是远程服务器实例中的表就得使用远程访问符@ stu@link 上面已经介绍了@link的 意思了
或
CREATE MATERIALIZED VIEW LOG ON @conn_remote_orcl9i_link
--3.建视图
create MATERIALIZED VIEW STU_VIEW
REFRESH FAST
START WITH SYSDATE //这儿设置刷新开始 点:sysdate
NEXT SYSDATE + 1/1440 //到刷新
WITH PRIMARY KEY
AS
SELECT * FROM STU
--4.插入数据
INSERT INTO STU(ID,NAME) VALUES('56','555555555555');
COMMIT;
--5.查看视图数据变化
SELECT * FROM oemcyd.STU_VIEW; //oemcyd为用户
--6.查询物化视图刷新时间
SELECT MM.mview_name,MM.last_refresh_date FROM DBA_MVIEWS MM
详细描述物化视图创建及其option的含义
Oracle中的物化视图
物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。
物化视图可以查询表,视图和其它的物化视图
通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。
本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。
在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。
1.主键物化视图:
下面的语法在远程数据库表emp上创建主键物化视图
SQL> CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1/48
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下:
SQL> CREATE MATERIALIZED VIEW LOG ON emp;
2.Rowid物化视图
下面的语法在远程数据库表emp上创建Rowid物化视图
SQL> CREATE MATERIALIZED VIEW mv_emp_rowid
REFRESH WITH ROWID
AS SELECT * FROM emp@remote_db; .
3.子查询物化视图
下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图
SQL> CREATE MATERIALIZED VIEW mv_empdept
AS SELECT * FROM emp@remote_db e
WHERE EXISTS
(SELECT * FROM dept@remote_db d
WHERE e.dept_no = d.dept_no)
REFRESH 子句
[refresh [fast|complete|force]
[on demand|commit]
[start with date] [next date]
[with {primary key|rowid}]]
Refresh选项说明:
a. oracle用刷新方法在物化视图中刷新数据.
b. 是基于主键还是基于rowid的物化视图
c. 物化视图的刷新时间和间隔刷新时间
Refresh方法-FAST子句
增量刷新用物化视图日志(参照上面所述)来发送主表已经修改的数据行到物化视图中.如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志
SQL> CREATE MATERIALIZED VIEW LOG ON emp;.
对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。
Refresh方法- COMPLETE子句
完全刷新重新生成整个视图,如果请求完全刷新,oracle会完成 完全刷新即使增量刷新可用。
Refresh Method – FORCE 子句
当指定FORCE子句,如果增量刷新可用Oracle将完成增量刷新,否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or FORCE),Force选项是默认选项
主键和ROWD子句
WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句). PRIMARY KEY是默认选项,为了生成PRIMARY KEY子句,应该在主表上定义主键,否则应该用基于ROWID的物化视图.
主键物化视图允许识别物化视图主表而不影响物化视图增量刷新的可用性。
Rowid物化视图只有一个单一的主表,不能包括下面任何一项:
n Distinct 或者聚合函数.
n Group by,子查询,连接和SET操作
刷新时间
START WITH子句通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的间隔时间.
SQL> CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 2
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每两天刷新一次.
总结
物化视图提供了可伸缩的基于主键或ROWID的视图,指定了刷新方法和自动刷新的时间。
最常用到的是fresh fast 但是必须建立基于远程实例的主表或是本地实例的主表的日志 ,否则不能把主表的数据刷新到视图中
以下是引用片段:
create database link linkfwq
connect to fzept identified by neu
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fjept)
)
)';
host=数据库的ip地址,service_name=数据库的ssid。
其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。
数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.
数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样
数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;
查询远端数据库里的表
SELECT …… FROM 表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。
附带说下同义词创建:
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
删除dblink:DROP PUBLIC DATABASE LINK linkfwq。
如果创建全局dblink,必须使用systm或sys用户,在database前加public。
-物化视图 简单创建
--0.cmd 修改系统参数,在init.ora里面修改则每次都有效
alter system set job_queue_processes=20;
如果这个参数为0,物化视图是不会刷新的
--1.建表,必须有索引
create table stu
(
id varchar2(10) primary key,// 如果设置primary key,那就等于是创建索引,不是主键就需要建索引CREATE INDEX INDEX_STU ON STU(ID)
name varchar2(20)
)
--2.建日志
CREATE MATERIALIZED VIEW LOG ON STU; //stu是一本地表,如果是远程服务器实例中的表就得使用远程访问符@ stu@link 上面已经介绍了@link的 意思了
或
CREATE MATERIALIZED VIEW LOG ON @conn_remote_orcl9i_link
--3.建视图
create MATERIALIZED VIEW STU_VIEW
REFRESH FAST
START WITH SYSDATE //这儿设置刷新开始 点:sysdate
NEXT SYSDATE + 1/1440 //到刷新
WITH PRIMARY KEY
AS
SELECT * FROM STU
--4.插入数据
INSERT INTO STU(ID,NAME) VALUES('56','555555555555');
COMMIT;
--5.查看视图数据变化
SELECT * FROM oemcyd.STU_VIEW; //oemcyd为用户
--6.查询物化视图刷新时间
SELECT MM.mview_name,MM.last_refresh_date FROM DBA_MVIEWS MM
详细描述物化视图创建及其option的含义
Oracle中的物化视图
物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。
物化视图可以查询表,视图和其它的物化视图
通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。
本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。
在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。
1.主键物化视图:
下面的语法在远程数据库表emp上创建主键物化视图
SQL> CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1/48
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下:
SQL> CREATE MATERIALIZED VIEW LOG ON emp;
2.Rowid物化视图
下面的语法在远程数据库表emp上创建Rowid物化视图
SQL> CREATE MATERIALIZED VIEW mv_emp_rowid
REFRESH WITH ROWID
AS SELECT * FROM emp@remote_db; .
3.子查询物化视图
下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图
SQL> CREATE MATERIALIZED VIEW mv_empdept
AS SELECT * FROM emp@remote_db e
WHERE EXISTS
(SELECT * FROM dept@remote_db d
WHERE e.dept_no = d.dept_no)
REFRESH 子句
[refresh [fast|complete|force]
[on demand|commit]
[start with date] [next date]
[with {primary key|rowid}]]
Refresh选项说明:
a. oracle用刷新方法在物化视图中刷新数据.
b. 是基于主键还是基于rowid的物化视图
c. 物化视图的刷新时间和间隔刷新时间
Refresh方法-FAST子句
增量刷新用物化视图日志(参照上面所述)来发送主表已经修改的数据行到物化视图中.如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志
SQL> CREATE MATERIALIZED VIEW LOG ON emp;.
对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。
Refresh方法- COMPLETE子句
完全刷新重新生成整个视图,如果请求完全刷新,oracle会完成 完全刷新即使增量刷新可用。
Refresh Method – FORCE 子句
当指定FORCE子句,如果增量刷新可用Oracle将完成增量刷新,否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or FORCE),Force选项是默认选项
主键和ROWD子句
WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句). PRIMARY KEY是默认选项,为了生成PRIMARY KEY子句,应该在主表上定义主键,否则应该用基于ROWID的物化视图.
主键物化视图允许识别物化视图主表而不影响物化视图增量刷新的可用性。
Rowid物化视图只有一个单一的主表,不能包括下面任何一项:
n Distinct 或者聚合函数.
n Group by,子查询,连接和SET操作
刷新时间
START WITH子句通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的间隔时间.
SQL> CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 2
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每两天刷新一次.
总结
物化视图提供了可伸缩的基于主键或ROWID的视图,指定了刷新方法和自动刷新的时间。
最常用到的是fresh fast 但是必须建立基于远程实例的主表或是本地实例的主表的日志 ,否则不能把主表的数据刷新到视图中
发表评论
-
简历11111111111
2013-03-12 22:19 672简历的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶 -
oracle集合操作函数
2010-09-13 10:34 1061集合操作符专门用于合并多条select 语句的结果,包括:UN ... -
摘录--DBMS_SCHEDULER
2010-08-11 16:24 1838Oracle 10g新增了scheduler的功能,功能比jo ... -
oracle的case语句实例
2010-08-09 13:12 938SELECT SUM( CASE ... -
摘录:简单测试job的创建过程案例
2010-08-04 18:37 1152一:简单测试job的创建 ... -
摘录-详解 Oracle job 的使用与管理技巧
2010-08-04 18:35 1138详解 Oracle job 的使用与管理技巧 SVRMGR&g ... -
摘录--关于MV刷新的问题
2010-08-04 10:56 1803关于MV刷新的问题 最近在工作中遇到一个问题,是关 ... -
如何用SQL返回两个日期之间的所有连续日期
2010-04-06 22:28 8984如何用SQL返回两个日期之间的所有连续日期 -------- ... -
qlsql 学习实例代码4
2010-04-03 19:57 1111---------------------------行触发器 ... -
qlsql 学习实例代码3
2010-03-31 22:26 1109------------------------------- ... -
qlsql 学习实例代码2
2010-03-31 15:09 1227------------------------------- ... -
qlsql 学习实例代码1
2010-03-30 23:11 1199准备工作: create table DEPT ( DEP ... -
PL SQL 学习笔记
2010-03-30 15:47 835PL SQL 学习笔记 见附件 作者:丁俊 PLSDE ... -
oracle pl/sql实例练习
2010-03-30 12:11 1039第一部分:oracle pl/sql实例练习(1) 一、使用s ...
相关推荐
2. Rowid 物化视图:基于 Rowid 的物化视图,用于单一的主表,不能包括 Distinct 或者聚合函数、Group by、子查询、连接和 SET 操作。 3. 子查询物化视图:基于子查询的物化视图,用于生成基于多表的汇总表。 ...
2. 创建物化视图:在目标数据库上创建物化视图,指定其依赖于源数据表的查询。 3. 数据同步:利用物化视图日志记录的信息,定期或实时地刷新物化视图,将源数据的变化同步到目标数据库。 4. 确保一致性:通过设置...
- **远程数据本地化**:物化视图可以作为远程数据的本地副本,减少网络传输开销。 - **汇总表生成**:用于生成基于数据表的汇总表,加速汇总查询速度。 - **只读属性**:物化视图通常是只读的,如果需要修改则需要...
物化视图,也称作快照,是数据库在某一时间点对目标表(主控)的副本,可以是主站点上的主表,也可以是物化视图站点上的主物化视图。其主要优势在于提升查询效率,通过预先计算和存储复杂的查询结果,避免每次查询时...
物化视图可以理解为一种快照,存储了基于远程表或其他数据库对象(如表、视图或物化视图本身)的查询结果。它们在复制环境下扮演着远程数据的本地副本角色,在数据仓库中则常用于创建聚合视图,以加速复杂查询的响应...
例如,创建名为`MV_Z3ATRADBUILD`的物化视图,它基于远程数据库SAPSR3的`Z3ATRAD`表。`IMMEDIATE`参数表示物化视图在创建时立即刷新,`REFRESH FAST ON DEMAND`表示物化视图的刷新方式为快速刷新,并在需要时按需...
物化视图不仅适用于本地存储,也可用于远程数据的本地副本存储,用于生成基于数据表求和的汇总表等。其设计目的是为了在查询操作非常频繁的场景中,对应用程序保持透明,同时不会影响应用程序中语句的正确性和有效性...
2. 远程数据访问:减少网络延迟,本地缓存远程数据库的数据。 3. 快速查询:对于复杂的JOIN操作或GROUP BY语句,物化视图可以显著提升查询速度。 4. 数据分发:在分布式数据库环境中,物化视图可用于数据的局部...
特别是当物化视图涉及远程数据库时,通过作业进行定期更新可以避免通信问题导致的数据延迟。 5. **数据复制**:在企业级应用中,如电力行业的垂直管理体系,物化视图可以用于数据的层级复制。例如,地区局的数据...
物化视图可以用来提高查询性能,特别是当查询涉及复杂联接、聚合操作或者从远程数据库中获取数据时。在本文中,物化视图被用于实现增量备份,它可以捕捉数据的变化,以便只备份自上次备份以来发生更改的数据。 ...
- 物化视图:预先计算并存储的结果集,用于提高查询性能。 1.3. 目标读者 本文档主要面向具有一定数据库基础知识,需要深入了解和实践数据库设计的专业人士,包括软件开发者、数据库管理员、系统分析师等。 1.4. ...
- 分布式数据库环境中,物化视图可实现数据的局部访问,减少远程数据库的访问压力。 - 在OLAP(在线分析处理)系统中,物化视图可以预先计算好聚合数据,加速决策支持系统的响应时间。 8. **最佳实践**: - 选择...
6. **SQLPLUS的COPY命令**:SQLPLUS的COPY命令可以用来快速地在本地和远程数据库之间复制数据,但可能不适用于复杂的同步需求。 7. **EXP/IMP工具**:通过EXP导出增量数据,然后在目标数据库使用IMP导入,可以实现...
然后,在目标数据库(备份数据库)上创建基于源表的物化视图,并通过数据库链接连接源数据库。通过定时执行刷新过程,可以确保物化视图与源表数据保持同步。 - **基于ROWID的物化视图**:如果源表没有主键或者存在...
例如,基于emp和dept表创建的物化视图: ```sql CREATE MATERIALIZED VIEW mv_empdept AS SELECT * FROM emp@remote_db e WHERE EXISTS (SELECT * FROM dept@remote_db d WHERE e.dept_no = d.dept_no); ``` 物化...
1. 主键物化视图:这类物化视图基于远程表的主键,确保数据的一致性和完整性。创建时需使用`WITH PRIMARY KEY`子句,并且需要为源表创建物化视图日志,以便进行增量刷新。例如: ```sql CREATE MATERIALIZED VIEW ...
- **性能优化**:涉及索引、SQL查询优化、表分区、物化视图、数据库调优顾问等工具和策略。 - **集群和高可用性**:Oracle RAC(Real Application Clusters)允许数据库跨多台服务器运行,提高系统的可用性和性能。...
在1000号客服系统的场景中,可能需要定期或实时同步各个地市的账务和营业数据,Oracle的高级特性如物化视图、DBLink或GoldenGate等工具能够帮助实现高效、可靠的数据同步。 此外,Oracle数据库还提供了其他关键功能...