动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.Oracle高手必读手册!.
.Oracle Berkeley数据库Java版.
.你的Oracle数据库安全吗?.
.东航西北分公司Oracle财务系统工.
.手把手教你创建RMAN CATAGORY.
.ORACLE常用傻瓜问题1000问全集(.
.oracle安装问题(小菜问题).
.Oracle 10g RMAN的备份测试.
.Oracle 常用SQL查询列表.
.ora-02085错误.
.如何查看什么时间有哪些数据库对.
.EMC存储技术上使用ASM的最佳实践.
.使用crs_stat工具查看资源状态.
.Unix环境下Oracle数据库优化心得.
.解决Restarting死进程QMN0问题一.
.oracle 优化方法.
.邮件管理篇 VmailMgr.
.在Windows 2000下优化Oracle9i性.
.为什么当系统启动到Sendmail时会.
.Oracle7.X 回滚表空间数据文件误.

oracle复制应用实例之一

发表日期:2008-2-9 |


    复制是一种实现数据分布的方法,也就是说把一个系统中的数据通过网络分布到另外一个或者多个地理位置不同的系统中,以适应可伸缩组织的需要、减轻主服务器的工作负荷和提高数据的使用效率。     Ora Oracle8针对数据分布式计算的需要,提供了一整套功能强大的数据库复制解决方案。 Oracle8的数据复制按功能可以分为三类:基本(简单)复制、高级复制和混合复制,而高级复制又可分为多主节点复制和可更新快照复制。在 《数据复制中的定时任务机制》 介绍了Oracle8中的定时复制的机制,本文将主要介绍一个 Oracle 快照复制的实际例子及其技术实现细节。     一、业务需求

 
在一个实际的数据库应用中,如银行、税务等商业应用中通常都采用这样一种解决方案,在一个行政区域内,如一个省或者一个市,在不同的地理位置架设数台数据库服务器,这些不同地理位置的服务器具有同样的后台数据库。为了维护数据库系统的一致性,对于整个行政区域应用的代码表应该保持一致,假如不考虑数据复制,想维护同样的不冲突的代码表是很困难的。下面是一个实际的业务需求,我们用这里例子来说明 Oracle快照复制的应用。     为了维护整个系统代码表的一致性,客户提出了这样的业务需求,对于系统的代码表采用统一维护,即在一台服务器上维护,如图1所示。在位置1(数据库Ora_db1,用户userA)上维护代码表,其他位置(数据库ora_db2,用户userB;ora_db3,用户userC和ora_db4,用户UserD)可以直接使用这些代码表,也就是说在位置1具有对代码表插入、删除和更新的能力,而在其他地方只能有查询的能力。 oracle复制应用实例之一     二、应用设计针

 
对上述的需求,我们提出了这样一种解决方案,也就是采用 Oracle8的快照复制。具体业务实现方案设计如下:     在位置1的数据库Ora_db1维护所有的代码表,在其余数据库建立相对于位置1的所有代码表的快照。为了维护快照的方便,在位置2、3和4创建一个单独的快照表空间和一个模式(schema),系统中的其他用户通过一个私有同义词来存取这些快照。这里私有同义词相对公共同义词要好,这是因为在位置1存在一个同样规范的系统,它的表是通过公共同义词来存取的。对于快照的刷新,采用 Oracle系统包DBMS-_REFRESH进行,并将该刷新过程的运行定时在天天早上2:00,这样可以减少网络流量。对于快照的刷新形式,由于对于代码表的维护不是很多而且代码表的数据量相对较少,所以在此选择了完全刷新,这样就避免了治理快照日志的麻烦。下面以一个节点2(ora_db2)为例来说明具体的技术实现细节。     三、技术实现细节

 
除非非凡说明,下面的SQL命令都是在数据库ora_db2的SYSETM用户下运行的。假设要复制的代码表有三个:dm_gy_rydm,dm_gy_jgdm和dm_gy_yhdm.     1.在数据库2(ora_db2)上增加数据库1(ora_db1)的services name     可以直接在tnsnames.ora文件中增加数据库1的services name,包括IP地址,SID以及端口号等。Services name 命名为ora_db1.world.     2. 创建一个用于连接数据库1(ora_db1)的数据库连接(dblink)     SQL> CREATE PUBLIC DATABASE LINK ora_db1.world CONNECT TO SYSTEM IDENTIFIED BY MANAGER USING 'ora_db1.world';     出于安全考虑,可以采用一个私有数据连接。     3. 创建一个名为Snapshot_ts的表空间来存放快照,并创建一个和该表空间有关的名为Snap的用户。     SQL > CREATE TABLESPACE snapshot_ts DATAFILE 'c:\orant\dbfiles\prod\snapshot01.dbf' SIZE 30M DEFAULT STORAGE (INITIAL 30 K NEXT 15 K MINEXTENTS 1 MAXEXTENTS 100 PCTINCREASE 0)     ONLINE PERMANENT;     SQL > CREATE USER snap IDENTIFIED BY snap DEFAULT TABLESPACE snapshot_ts;     SQL > GRANT CONNECT, RESOURCE TO snap;     可以通过下面的SQL语句在ora_db1数据库以userA用户来粗略地估计表空间snapshot_ts的大小。     SQL > SELECT SUM(bytes)     FROM USER_SEGMENTS WHERE SEGMENT_NAME IN(' dm_gy_rydm','dm_gy_jgdm','dm_gy_yhdm');     4. 运行下面的脚本文件snapsql.sql来生成创建ora_db1数据库上userA用户下代码表的快照脚本:     /* Snapsql.sql */ spool c:\snap\create_snapshot.sql SELECT 'CREATE SNAPSHOT SNAP.' TABLE_NAME ' PCTFREE 10 PCTUSED 40 TABLESPACE snapshot_ts ' ' STORAGE (INITIAL ' INITIAL_EXTENT ' NEXT ' NEXT_EXTENT ' PCTINCREASE 0 )' ' AS SELECT * FROM userA.' TABLE_NAME '@ora_db1.world;' FROM USER_TABLES WHERE TABLE_NAME IN( (' dm_gy_rydm', 'dm_gy_jgdm', 'dm_gy_yhdm'); spool off     注重上面这个生成所需表快照的脚本有一定的局限性,假如所需生成快照的表中含有类型为long的列,‘select *'在这里就不会起作用,上面的这个SQL脚本就不能自动建立生成所需快照的脚本,必须通过在select列表中显式地添加long型列名来创建表的快照。下面是一个例子,假如我们要创建快照依靠的表dm_gy_note中有一个列note类型为long,就需要单独写出如下的创建快照的脚本:     CREATE SNAPSHOT snap.dm_gy_note PCTFREE 10 PCTUSED 40 TABLESPACE snapcost_ts STORAGE (INITIAL 40960 NEXT 57344 PCTINCREASE 0 ) AS SELECT dm, dmmc,note FROM userA.dm_gy_note@ora_db1.worl; SQL > @snapsql.sql     5. 通过运行第4步创建的脚本文件create_snapshot.sql来创建所有的快照, 在脚本文件中包含下面这样的代码:     CREATE SNAPSHOT snap. dm_gy_rydm PCTFREE 10 PCTUSED 40 TABLESPACE snapshot_ts STORAGE (INITIAL 163840 NEXT 57344 PCTINCREASE 0)     AS SELECT * FROM userA. dm_gy_rydm @ora_db1.world;     运行脚本文件create_snapshot.sql后,就在模式snap中创建了所需要的快照。下一步就是考虑该如何刷新快照。对于快照的刷新,可以通过一些桌面DBA工具来刷新快照也可以通过系统包dbms_snapshot.refresh来刷新一个快照:     SQL > EXECUTE DBMS_SNAPSHOT.REFRESH('snap.dm_gy_rydm')     6. 创建一个定时刷新过程来定时刷新快照:     /*sp_snapshot_refresh.sql */ CREATE OR REPLACE PROCEDURE sp_snapshot_refresh IS BEGIN DBMS_REFRESH.MAKE ( NAME=>'tax_dmb_grp', LIST=>'snap. dm_gy_rydm, 'snap.dm_gy_jgdm', 'snap.dm_gy_yhdm', NEXT_DATE=>TRUNC (SYSDATE+1)+2/24, INTERVAL=>'(SYSDATE+1)', IMPLICIT_DESTROY=>FALSE, LAX=>TRUE); END; / SQL > EXECUTE sp_snapshot_refresh     这样就创建了一个定时任务来天天早晨2:00定时刷新快照。运行下面的SQL语句就可以看到刚刚加入的这个任务。     SQL > SELECT JOB, WHAT FROM DBA_JOBS;     7. 在用户userB下创建快照的私有同义词:     SQL > CREATE SYNONYM userB.dm_gy_rydm FOR snap.dm_gy_rydm;     8. 以Snap用户向userB用户授与快照可以select的权限。     SQL > GRANT SELECT ON dm_gy_rydm TO userB;     同样的步骤在位置3(ora_db2)和位置4(ora_db3)建立位置1(ora_db1)的代码表快照和定时刷新任务。这样就可实现在位置1统一维护代码表,在位置2、3和4使用该代码表的目的。如下面的SQL语句,在位置2(ora_db2)用户UserB浏览在位置1(ora_db1)中的代码表。     SQL > SELECT * FROM dm_gy_rydm;     四、日常维护


 
无论任何时候只要出现网络连接问题,刷新就会失败。这些错误信息可以在alert log文件中找到。下面简单介绍一下对这种问题的处理办法:     1. 首先在任务队列中找到刷新快照的的任务编号     SQL > SELECT JOB,what FROM DBA_JOBS;     2. 删除该任务     SQL > EXECUTE DBMS_JOB.REMOVE (JOBNO);     3. 删除快照组     SQL > EXECUTE DBMS_REFRESH.DESTROY ('tax_dmb_grp');     4. 重新创建快照组并且重新定时任务来定时刷新快照     SQL > EXECUTE sp_snapshot_refresh     五、快照监视     快照可以通过下面的SQL语句来监视     SQL > SELECT NAME,TO_CHAR(last_refresh,'DD-MON-YY HH:MM:SS')     FROM DBA_SNAPSHOTS;

上一篇:保“库”之路:Oracle数据库性能保护 人气:434
下一篇:失而复得:Oracle数据库表空间恢复方案 人气:576
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成