文档库 最新最全的文档下载
当前位置:文档库 › Oracle GoldenGate 双向复制测试

Oracle GoldenGate 双向复制测试

Oracle  GoldenGate 双向复制测试
Oracle  GoldenGate 双向复制测试

Oracle GoldenGate 双向复制测试

一、系统环境

源端:

DB: Oracle Database 10gR2(10.2.0.1)

IP: 10.80.0.211

同步表名: scrap.tb_user、TB_BUCKET_PLANT、TB_SCRAP_BUCKET

目标端:

DB: Oracle Database 10gR2(10.2.0.1)

IP: 10.80.0.212

同步表名: scrap.tb_user、TB_BUCKET_PLANT、TB_SCRAP_BUCKET

二、安装GoldenGate

源端:将数据库设为Archive Mode,安装之前需要打开Oracle的supplemental log

SQL> archive log list

SQL> ALTER DATABASE ADD supplemental log DATA;

DATABASE altered.

SQL> ALTER system switch logfile;

System altered.

SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database

SUPPLEME

--------

YES

源端和目标端安装goldengate。

创建源端和目标端ogg目录

GGSCI 1> CREATE SUBDIRS

三、配置goldengate

3.1 创建goldengate管理用户

源端:创建goldengate管理用户,并赋予适当权限

SQL>Create user gg_t1 identified by gg;

SQL>GRANT CONNECT TO gg_t1;

SQL>GRANT ALTER ANY TABLE TO gg_t1;

SQL>GRANT ALTER SESSION TO gg_t1;

SQL>GRANT CREATE SESSION TO gg_t1;

SQL>GRANT FLASHBACK ANY TABLE TO gg_t1;

SQL>GRANT SELECT ANY DICTIONARY TO gg_t1;

SQL>GRANT SELECT ANY TABLE TO gg_t1;

SQL>GRANT RESOURCE TO gg_t1;

SQL>GRANT drop ANY TABLE TO gg_t1;

SQL>GRANT delete any table TO gg_t1;

SQL>GRANT execute on utl_file TO gg_t1;

SQL>GRANT execute on dbms_flashback TO gg_t1;

SQL>GRANT unlimited tablespace TO gg_t1;

目标端:创建goldengate管理用户,并赋予适当权限

SQL>Create user gg_t2 identified by gg;

SQL>GRANT CONNECT TO gg_t2;

SQL>GRANT ALTER ANY TABLE TO gg_t2;

SQL>GRANT ALTER SESSION TO gg_t2;

SQL>GRANT CREATE SESSION TO gg_t2;

SQL>GRANT update any table TO gg_t2;

SQL>GRANT SELECT ANY DICTIONARY TO gg_t2;

SQL>GRANT SELECT ANY TABLE TO gg_t2;

SQL>GRANT RESOURCE TO gg_t2;

SQL>GRANT drop ANY TABLE TO gg_t2;

SQL>GRANT delete any table TO gg_t2;

SQL>GRANT execute on utl_fileE TO gg_t2;

SQL>GRANT insert any table TO gg_t2;

SQL>GRANT unlimited tablespace TO gg_t2;

3.2 配置mgr

源端:创建编辑manager参数文件,PORT为7500,保存退出。

$ ggsci

GGSCI 1> EDIT PARAMS MGR

port 7500

dynamicportlist 7500-7505

AUTOSTART EXTRACT *--自动启动进程组,仅重启命令在开机时不会自动启动AUTOSTART REPLICAT *

autorestart extract *,waitminutes 5 ,retries 10

autorestart replicat *,waitminutes 5 ,retries 10

目标端:创建编辑manager参数文件,PORT为7500,保存退出。

$ ggsci

GGSCI > view params mgr

port 7500

dynamicportlist 7500-7505

AUTOSTART EXTRACT *

AUTOSTART REPLICAT *

autorestart extract *,waitminutes 5 ,retries 10

autorestart replicat *,waitminutes 5 ,retries 10

3.3 配置表级补充日志

源端:

GGSCI (gg_t1) 12> dblogin userid gg_t1,password gg

Successfully logged into database.

GGSCI (gg_t1) 13>

add trandata SCRAP.MATERIAL_WEIGHT_INFO

add trandata SCRAP.TB_BUCKET_PLANT

add trandata SCRAP.TB_INT_SCR_BOF_ACT

add trandata SCRAP.TB_MATERIAL

add trandata SCRAP.TB_SCRAP_BUCKET

add trandata SCRAP.TB_USER

目标端:同时创建好相关用户表,这里采用同源端完全一致的表结构

3.4 配置extract进程

源端:

GGSCI (gg_t1) 15> edit params extbi

GGSCI (gg_t1) 16> view params extbi

extract extbi

userid gg_t1,password gg ---该用户为源端的同步用户TRANLOGOPTIONS EXCLUDEUSER gg_t1 -----将同步用户进行排除,避免循环setenv (NLS_LANG = AMERICAN_AMERICA.ZHS16GBK) --设置语言,否则中文异常显示

setenv (ORACLE_SID = iront01)

exttrail ./dirdat/et

REPORTROLLOVER AT 05:30 ON friday

table SCRAP.MATERIAL_WEIGHT_INFO;

table SCRAP.TB_BUCKET_PLANT;

table SCRAP.TB_INT_SCR_BOF_ACT;

table SCRAP.TB_MATERIAL;

table SCRAP.TB_SCRAP_BUCKET;

table SCRAP.TB_USER;

GGSCI (gg_t1) 2> ADD EXTRACT extbi, TRANLOG, BEGIN NOW

EXTRACT added.

GGSCI (gg_t1) 42> add exttrail ./dirdat/et,extract extbi

EXTTRAIL added.

配置extract进程的本地trail文件路径

GGSCI (gg_t1) 47> start extbi

启动extract进程

3.5 配置检查点表

目标端:

GGSCI (gg_t2) 12> dblogin userid gg_t2,password gg

GGSCI (gg_t2) 146> edit params ./GLOBALS

GGSCI (gg_t2) 147> view params ./GLOBALS

checkpointtable gg_t2.check_ogg

创建检查点表

GGSCI (gg_t2) 149> add checkpointtable gg_t2.check_ogg

3.6 配置复制进程

目标端

GGSCI (gg_t2) 150> edit params REPBI

GGSCI (gg_t2) 151> view params REPBI

replicat REPBI

setenv (NLS_LANG = AMERICAN_AMERICA.ZHS16GBK)

userid gg_t2@rlfg002, password gg

HANDLECOLLISIONS

ASSUMETARGETDEFS

discardfile ./dirrpt/pora.dsc, purge

MAP scrap.MATERIAL_WEIGHT_INFO, TARGET scrap.MATERIAL_WEIGHT_INFO; MAP SCRAP.TB_BUCKET_PLANT ,TARGET SCRAP.TB_BUCKET_PLANT;

MAP scrap.TB_INT_SCR_BOF_ACT, TARGET scrap.TB_INT_SCR_BOF_ACT;

MAP SCRAP.TB_MATERIAL ,TARGET SCRAP.TB_MATERIAL;

MAP SCRAP.TB_SCRAP_BUCKET ,TARGET SCRAP.TB_SCRAP_BUCKET;

MAP SCRAP.TB_USER ,TARGET SCRAP.TB_USER;

GGSCI (gg_t2) 161> add replicat REPBI,exttrail ./dirdat/rt checkpointtable gg_t2.check_ogg ------配置复制进程

GGSCI (gg_t2) 162> start REPBI------启动复制进程

3.7 相反方向再配置一遍

四、验证数据同步

4.1 对表中的数据进行增删改操作,测试通过

4.2 网络异常中断,恢复后数据自动同步,测试通过

4.3 其中一台异常关机,启动后可以正常同步,测试通过

4.4 现场需同步其中一张表中存在序列和触发器,这是OGG双向复制中所不推荐的,需要进行讨论。

Oracle GoldenGate(OGG)复制技术完全解析精讲视频课程

Oracle GoldenGate(OGG)复制技术完全解析精讲视频课程 课程目标:学习完本课程可以掌握goldengate的安装配置,各种进程的配置和作用,掌握单向复制技术,掌握几种数据初始化的方法以及日常维护。 适合人群:想提高Oracle技术的同学,想学习容灾技术的同学GoldenGate是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。学习本课程可以掌握Oracle GoldenGate 的安装,部署,配置等知识点,可以满足工作中的需要,OGG技术是当前找工作拿高薪的必杀技 目录 第1节 第1课-goldengate概述-复制模式和技术架构 第2节 第2课-GoldenGate安装和进程讲解 00:16:11 第3节 第3课-GoldenGate安装和进程讲解-2 00:18:41 第4节 第4课-GoldanGate单向复制环境的搭建

00:22:29 第5节 第5课-GoldanGate单向复制环境的搭建-2 00:18:23 第6节 第6课-配置Goldengate支持DDL 00:12:05 第7节 第7课-目标端数据初始化之imp-exp 00:23:19 第8节 第8课-目标端数据初始化之imp-exp-2 00:10:18 第9节 第9课-initial-load直接传输初始化 00:16:35 第10节 第10课-initial-load使用文件传输初始化 00:14:46 第11节 第11课-goldengate目录、进程和常用参数说明

eclipse如何连接oracle数据库、访问数据表并显示结果小结

总结eclipse中连接oracle数据库并访问其中的表: (这里我们用的是oracle10g) 为了防止把主要精力放在编程实现上而忽略小细节,我们可以先启动oracle 监听和oracleservice服务。 1 我们首先导入oracle 数据库驱动包:这里有两种方式:(1)把ojdbc14.jar包复制到当前项目的jar文件夹下,或新建一文件夹把ojdbc14.jar放到其下(在eclipse本项目上刷新一下,否则按下面添加时可能找不到),再project--------→properties---------→java build path--------→libraries-------→add jars找到ojdbc14.jar 点击ok. (2)project--------→properties---------→java build path--------→libraries-------→add externals jars找到ojdbc14.jar包,(本人的ojdbc14.jar是在目录E:\oracle\product\10.2.0\db_1\jdbc\lib 下)点击ok。 2 编写程序:可以归纳为6个小部分(1)装载并注册oracle数据库的jdbc驱动程序(2)建立与数据库的连接(3)创建statement对象(4)调用sql语句并执行,结果返回resultset对象(5)查看resultset对象中的记录(6)数据库操作完毕后,需要依次关闭ResultSet、Statement、Connection 对象。如下: Import java.sql.*; public class OracleTest { public static void main(String[] args) throws Exception{ //装载并注册oracle数据库的jdbc驱动程序 try { Class.forName("oracle.jdbc.driver.OracleDriver");//获取并装载jdbc驱动程序 java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //注册数据库驱动程序} catch(java.sql.SQLException e) { throw new RuntimeException("error"); } //建立与数据库的连接 String url="jdbc:oracle:thin:@localhost:1521:dbname"; //端口号1521可以通过查看oracle安装目录下E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN的listener.ora文件得知String user="system"; String passworddb="****** "; Connection conn=null; try { conn=DriverManager.getConnection(url, user, passworddb); } catch(Exception ex) { ex.printStackTrace(); } //创建statement对象

oracle使用数据泵导出和导入

使用数据泵导出和导入 几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序导出和导入数据。 以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。例如,你可以中断导出/导入作业,然后恢复它们;可以重新启动已失败的导出和导入作业;可以重映射对象属性以修改对象;可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;使用并行技术很容易快速移动大量的数据;因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL 程序中包含导出/导入作业;可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统平台之间移动。 与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y 或者impdp help = y快速获取所有数据泵参数及命令的概述。 一.数据泵技术的优点 原有的导出和导入技术基于客户机,而数据泵技术基于服务器。默认所有的转储,日志和其他文件都建立在服务器上。以下是数据泵技术的主要优点: 1.改进了性能 2.重新启动作业的能力 3.并行执行的能力 4.关联运行作业的能力 5.估算空间需求的能力 6.操作的网格方式 7.细粒度数据导入功能 8.重映射能力 二.数据泵导出和导入的用途 1.将数据从开发环境转到测试环境或产品环境 2.在不同的操作系统平台上的oracle数据库直接的传递数据 3.在修改重要表之前进行备份 4.备份数据库 5.把数据库对象从一个表空间移动到另一个表空间 6.在数据库直接移植表空间 7.提取表或其他对象的DDL 注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。但是对于较小的数据库和个别的表空间的导出,数据导出仍然是一个可行的备份工具。 三.数据泵的组成部分

oracle表的导入导出-命令

数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上 compress=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp imp aichannel/aichannel@HUST full=y file=file= d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2 将d:daochu.dmp中的表table1 导入 imp system/manager@TEST file=d:daochu.dmp tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。 注意: 操作者要有足够的权限,权限不够它会提示。 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。 附录一: 给用户增加导入数据权限的操作 第一,启动sql*puls 第二,以system/manager登陆 第三,create user 用户名 IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字 第五, 运行-cmd-进入dmp文件所在的目录, imp userid=system/manager full=y file=*.dmp

oracle统计分析信息拷贝介绍

数据库统计分析信息拷贝介绍 1.数据库统计分析简介 统计分析主要包括产生表及索引的统计信息。表的统计信息主要包括表的行数,每行的平均长度(字节),空闲块,统计时间等信息;索引的统计信息主要包括行数、层数、叶块数、统计时间等信息。另外ORACLE还可以统计列及数据不对称信息。 ORACLE执行成本分析时首先取出所应用表及索引的统计数据进行分析,其中数据行数是一个重要的参数,因为ORACLE在分析表大小时行数为主要参数,如果进行两个表联合时,ORACLE会通过分析表的大小,决定应用小表进行全表查询,而大表执行联合查询,这种性能明显高于先大表进行全表扫描。索引的统计信息对分析也产生比较大的影响,如ORACLE 通过统计可以分析产生多个索引的优先级及索引的实用性来确定最优的索引策略。ORACLE 还可以统计列及数据对称信息以产生更精确的分析。 dbms_stats能良好地估计统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。 2.存储过程解析 2.1DBMS_STATS.GATHER_TABLE_STATS介绍 DBMS_STATS.GATHER_TABLE_STATS功能为:统计表、列、索引的统计信息。DBMS_STATS.GATHER_TABLE_STATS的语法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER, block_sample BOOLEAN, method_opt VARCHAR2,

SQL Server数据导入到Oracle中的方法

SQL Server数据导入到Oracle中的方法 如果我们需要将SQL Server数据库中的数据导入到Oracle数据库中,应该如何操 作呢?下文对该方法的步骤进行了详细的介绍,供您借鉴参考之用。 在我们使用SQL Server数据库的过程中,有时需要将SQL Server数据导出,导 入到其他的数据库中,比如导入到Oracle中。 假设要将SQL Server中的Northwind数据库中的Products表导出到Oracle 的Scott用户 首先需要有安装SQL Server企业版 1.打开工具: 开始->程序->Microsoft SQLServer->导入和SQL Server数据导出数据 2.下一步,选择数据源 [数据源]选择“用于SQL Server的Microsoft OLE DB提供程序”,这应该是缺省值。 [服务器]选择要导出数据的服务器,如果是本机,选择(local) [数据库]选择要导出的数据所在的库,这里选择Northwind 3.下一步,选择目的 [目的]选择Microsoft ODBC for Oracle [DSN]选择用户/系统DSN一项,然后在下拉列表框中找一个已经连接到了Scott用户的DSN名称。 如果下拉列表中没有,点下拉列表框右侧的[新建],出现创建新数据源界面。 接下来选择系统数据源,下一步,在驱动程序列表中选择Microsoft ODBC for Oracle 下一步,完成,出现Microsoft ODBC for Oracle安装界面 [数据源名称]随便输入,比如sss [说明]可以不填 [用户名称]填入要SQL Server数据导出到的Oracle用户名称,这里是scott

Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库

在Oracle 10g下,我们可以使用RMAN duplicate 命令创建一个具有不同DBID 的复制库。到了Oracle 11gR2,RMAN 的duplicate 有2种方法实现: 1. Active database duplication 2. Backup-based duplication Active database duplication 通过网络,直接copy target 库到auxiliary 库,然后创建复制库。这种方法就不需要先用RMAN 备份数据库,然后将备份文件发送到auxiliary端。 这个功能的作用是非常大的。尤其是对T级别的库。因为对这样的库进行备份,然后将备份集发送到备库,在进行duplicate 的代价是非常大的。一备份要占用时间,二要占用备份空间,三在网络传送的时候,还需要占用带宽和时间。所以Active database duplicate 很好的解决了以上的问题。它对大库的迁移非常有用。 如果是从RAC duplicate 到单实例,操作是一样的。如果是从单实例duplicate 到RAC。那么先duplicate 到单实例。然后将单实例转换成RAC。 Oracle 10g 下Rman duplicate 的例子参考: RMAN 异机复制数据库 下面我们看一下11gR2下,Active Database Duplicate的步骤如下: 1. 创建Auxiliary 库的Initialization Parameter: 如果使用spfile,那么在pfile文件里只需要设置一个DB_NAME参数,其他参数会在duplicate 命令中自己设置。 如果使用pfile,那么需要设置如下参数: DB_NAME CONTROL_FILES DB_BLOCK_SIZE DB_FILE_NAME_CONVERT LOG_FILE_NAME_CONVERT DB_RECOVERY_FILE_DEST

oracle表的导入导出-命令

oracle表的导入导出-命令.txt12思念是一首诗,让你在普通的日子里读出韵律来;思念是一阵雨,让你在枯燥的日子里湿润起来;思念是一片阳光,让你的阴郁的日子里明朗起来。数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表inner_notify、notify_staff_relat导出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。 也可以在上面命令后面加上compress=y 来实现。 数据的导入 1 将D:daochu.dmp 中的数据导入TEST数据库中。 imp system/manager@TEST file=d:daochu.dmp

oracle数据迁移方法

Oracle数据迁移方案 数据迁移通俗的说就是将数据从一个地方转移到另一个地方。主要使用场景有:根据正式系统搭建测试环境、从内网复制到外网、数据库服务器硬件升级等。根据需要迁移的数据量大小、系统架构,可采取不同的迁移方法。 注:以下所说方法,不考虑数据的增量更新、不考虑数据的实时同步、不考虑数据的逻辑转换。如果有这些需求,建议使用第三方ETL工具或使用Oracle的其他数据同步技术。 一、常用示例 1.1 如何在客户现场搭建测试环境? 常规方案,使用imp/exp工具,先在源库执行直接路径导出操作,然后在目标库执行导入操作。IMP/EXP的执行速度主要受限于磁盘及网络。 数据量:1.5G 导出用时:5分钟 导入用时:23分钟 导出文件大小:641M 导出导入环境:单CPU,700M内存。为力求最大速度,使用直接路径导出、设置最大I/O 缓冲、导入导出文件都放在服务器上执行。 1.2 还有没有更快的办法? 有,仍然使用impdp/expdp。只是不再将数据导出后导入,而是直接将数据从源库导入到目的库。 CMD> Impdp testi@目标库 directory=DMPDIR schemas=TESTI network_link=源库dblink remap_schema=TESTI:TESTA 上面语句的操作是将源库的TESTI用户的数据,导入到目标库的TESTA用户下。 这个操作是局域网内迁移数据最方便的工具,不过也可能是速度最慢的工具。 1.3 有没有还快一点的方法? 有,换用impdp/expdp。同样在源库执行导出,在目标库执行导入。操作速度能得到极大提升。IMPDP/EXPDP速度主要受限于磁盘,与网络无关。

数据库容灾、复制解决方案全分析(绝对精品)要点

数据库容灾、复制解决方案全分析(绝对精品) 目前,针对oracle数据库的远程复制、容灾主要有以下几种技术或解决方案: (1)基于存储层的容灾复制方案 这种技术的复制机制是通过基于SAN的存储局域网进行复制,复制针对每个IO进行,复制的数据量比较大;系统可以实现数据的同步或异步两种方式的复制.对大数据量的系统来说有很大的优势(每天日志量在60G以上),但是对主机、操作系统、数据库版本等要求一致,且对络环境的要求比较高。 目标系统不需要有主机,只要有存储设备就可以,如果需要目标系统可读,需要额外的配置和设备,比较麻烦。 (2)基于逻辑卷的容灾复制方案 这种技术的机制是通过基于TCP/IP的网络环境进行复制,由操作系统进程捕捉逻辑卷的变化进行复制。其特点与基于存储设备的复制方案比较类似,也可以选择同步或异步两种方式,对主机的软、硬件环境的一致性要求也比较高,对大数据量的应用比较有优势。其目标系统如果要实现可读,需要创建第三方镜像。个人认为这种技术和上面提到的基于存储的复制技术比较适合于超大数据量的系统,或者是应用系统的容灾复制。 我一直有一个困惑,存储级的复制,假如是同步的,能保证数据库所有文件一致吗?或者说是保证在异常发生的那一刻有足够的缓冲来保障? 也就是说,复制的时候起文件写入顺序和oracle的顺序一致吗?如果不一致就可能有问题,那么是通过什么机制来实现的呢? 上次一个存储厂商来讲产品,我问技术工程师这个问题,没有能给出答案 我对存储级的复制没有深入的研究过,主要是我自己的一些理解,你们帮我看一下吧…… 我觉得基于存储的复制应该是捕捉原系统存储上的每一个变化,而不是每隔一段时间去复制一下原系统存储上文件内容的改变结果,所以在任意时刻,如果原系统的文件是一致的,那么目标端也应该是一致的,如果原系统没有一致,那目标端也会一样的。形象一点说它的原理可能有点像raid 0,就是说它的写入顺序应该和原系统是一样的。不知道我的理解对不对。另外,在发生故障的那一刻,如果是类似断电的情况,那么肯定会有缓存中数据的损失,也不能100%保证数据文件的一致。一般来说是用这种方式做oracle的容灾备份,在发生灾难以后目标系统的数据库一般是只有2/3的机会是可以正常启动的(这是我接触过的很多这方面的技术人员的一种说法,我没有实际测试过)。我在一个移动运营商那里看到过实际的情况,他们的数据库没有归档,虽然使用了存储级的备份,但是白天却是不做同步的,只有在晚上再将存储同步,到第二天早上,再把存储的同步断掉,然后由另外一台主机来启动目标端存储上的数据库,而且基本上是有1/3的机会目标端数据库是起不来的,需要重新同步。 所以我觉得如果不是数据量大的惊人,其他方式没办法做到同步,或者要同时对数据库和应用进行容灾,存储级的方案是没有什么优势的,尤其是它对网络的环境要求是非常高的,在异地环境中几乎不可能实现。

Oracle查看表结构的几种方法

Oracle查看表结构的几种方法 Oracle查看表结构的几种方法 1,DESCRIBE 命令 使用方法如下: SQL> describe nchar_tst(nchar_tst为表名) 显示的结果如下: 名称是否为空? 类型 ----------------------------------------- -------- ---------------------------- NAME NCHAR(6) ADDR NVARCHAR2(16) SAL NUMBER(9,2) 2,DBMS_METADATA.GET_DDL包 使用方法如下: [sql] SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST') FROM DUAL; 如果显示的结果并未完整,如下: CREATE TABLE "SCOTT"."NCHAR_TST" ( "NAME" NCHAR(6), "ADDR" NVARCHAR2(16 那么修改如下: [sql] SQL> SET LONG 9999 SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST') FROM DUAL; 则显示如下的结果: DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST')

------------------------------------------------------------------------ ------ CREATE TABLE "SCOTT"."NCHAR_TST" ( "NAME" NCHAR(6), "ADDR" NVARCHAR2(16), "SAL" NUMBER(9,2) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 12288 NEXT 12288 MINEXTENTS 1 MAXEXTENTS 249 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" [Oracle] dbms_metadata.get_ddl 的使用方法总结 以下是对Oracle中dbms_metadata.get_ddl的用法进行了详细的分析介绍,需要的朋友参考下 dbms_metadata.get_ddl()用于获取对象的DDL,其具体用法如下。 注意:在sqlplus里,为了更好的展示DDL,需要设置如下参数: 复制代码代码如下: set line 200 set pagesize 0 set long 99999 set feedback off set echo off 1)获得表、索引、视图、存储过程、函数的DDL 复制代码代码如下:

VM虚拟环境Windows2008与oracle11g RAC集群

Windows 2008 R2环境下的Oracle 11G R2 RAC+ASM 虚拟环境安装指南V1.0

目录 Windows 2008 R2环境下的Oracle 11G R2 RAC+ASM (1) 虚拟环境安装指南V1.0 (1) 1 环境规划 (3) 2 基础环境的准备 (4) 2.1 服务器硬件环境准备 (4) 2.2 服务器软件件环境准备 (15) 2.2.1 操作系统安装 (15) 2.2.2 操作系统级配置 (15) 3 RAC配置 (25) 3.1 安装前检查 (25) 3.2 Oracle grid安装 (25) 4 Oracle数据库软件的安装 (34) 5 数据库的创建 (40) 6 重启服务器 (53) 7 简单测试 (54)

1环境规划

如上图所示,实验环境中采用Oracle VM VirtualBox虚拟了两台服务器分别是RAC1和RAC2,它们各有两条网线分别用于公共服务和内部互联;群集使用的共享存储由ISCSI提供的两块磁盘OCR和ASM。 软件环境方面,操作系统选择Windows 2008 R2企业版。 数据库采用Oracle 11G R2(11.2.0.1)和win64_11gR2_grid(RAC基础架构软件)。 2基础环境的准备 2.1 服务器硬件环境准备 本例中采用Oracle VM VirtualBox来虚拟服务器,为每台服务器准备Bridged模式和Host-only 模式的两个网卡。其他配置如下图所示:

Oracle VM VirtualBox安装2个虚拟机windows2008 r2 系统,2个共享磁盘步骤如下:系统安装省去....安装系统后在Oracle VM VirtualBox目录下有2个VDI系统文件。例如:win2008_1.vdi和win2008_2.vdi。 创建虚拟机如下图: 1.打开Oracle VM VirtualBox 2.点击新建

oracle report高级开发教程

ORACLE REPORT 高级开发 1REF游标查询 (2) 2条件格式化 (3) 3图象加入 (6) 4数据链接 (7) 5组设置 (9) 6前后处理 (10) 7报表布局调整 (13) 7.1标尺设置 (13) 7.2网格线对齐 (13) 7.3限制模式 (14) 7.4伸缩模式 (14) 7.5元素的大小控制 (15) 7.6元素的水平、垂直控制 (15) 7.7元素对齐 (16) 7.8页面控制 (16) 8手工开发报表 (19) 8.1基本报表 (19) 8.2分组报表 (21) 8.3交叉报表 (23)

1REF游标查询 建立游标查询的基本过程包括: 1.建立游标类型 2.建立游标函数 3.利用框架实现游标查询结果的展现 下边的例子通过建立一个包的方式,设置游标类型,函数,在报表游标函数中设置游标即为包函数返回。 包的定义和包体信息: CREATE OR REPLACE PACKAGE a04 AS type a04rec is RECORD ( ORG_NO NUMBER(8), NAME VARCHAR2(128) ); type a04refcursor is REF CURSOR return a04rec; function TESTC return a04.a04refcursor ; end A04; create or replace package body A04 as function TESTC return a04.a04refcursor is temp_container a04.a04refcursor; begin open temp_container for select https://www.wendangku.net/doc/cd3573227.html,_no org_no ,https://www.wendangku.net/doc/cd3573227.html, name from scorg s; return temp_container; end TESTC; END A04; 报表游标函数: function QR_1RefCurDS return a04.a04refcursor is temp_container a04.a04refcursor; str1 varchar(200); begin temp_container :=a04.testc(); return temp_container; end;

excel中的数据导入oracle方法详解

SQL_loader批量上传数据 1.注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE 表中。如果是小数据量,如几十条至几百条,那么用plsql dev工具,在查询命令后加上for update 然后解锁,把数据复制粘贴进去就可以了。 但如果遇到大数据量几万至几十万时,上述方法就不可行了。 如下介绍如何使用oracle自带的sqlloader上传数据。 2.SQL_LOADER上传数据 2.1sql_loader说明 sql*loader是oracle自带程序。需要上传数据的本机只要安装了oracle数据库或客户端就会自动集成该工具。但是不同的版本对控制文件的写法要求有所不同。具体可参见2.3节或者附件控制文件的内容。 2.2编辑数据文件 要使用sql*loader,其数据文件必须是两种,一种是*.txt 的文本文件,另一种是*.csv的文件。例如,需要上传的数据是使用excel编辑的,那么只需要将excel另存为[制表符分割的txt 文件]或者另存为[逗号分割的csv 文件]即可。 上图是将excel文件另存为“文本文件(制表符分割)(*.txt)”文件格式后的效果要将excel文件转换成csv格式同上面一样,另存为“CSV(逗号分割)(*.csv)”格式即可。如下图:

注意:CSV格式的文件打开后跟excel的样式差不多,但实际存储方式不一样。在磁盘上CSV格式的文件中每个格子中的数据使用逗号分割开存储的。 这样的存储方式很有用,方面后面写控制文件。控制文件在控制读取数据的时候直接以逗号为标记读取数据。其实,plsql dev在导出文件的时候就可选择存储为csv格式。 按照以上方法,数据文件就准备好了。 2.3编写控制文件 控制文件其实就是SQL_LOADER上传数据时需要运行的脚本,其后缀名为ctl。控制文件写明了数据文件的位置、加载数据的方式、加载到哪个表、如何读取数据等信息。 下面是一段简单、完整的控制文件的截图及解释: 图注:编写控制文件时用文本文件编写好,修改后缀名为ctl即可。 上面的代码比较简单。需要复杂的控制,请查阅相关资料。 2.4SQL_LOADER导入数据 制作好了数据文件和控制文件,接下来就是把数据导入oracle表中。下面还是用test 表来举例。 第一步:进入dos命令环境,检查sql_loader是否装好。 在命令窗口输入sqlldr,回车,如果系统正确装好了sql_loader就会提示如下:

《数据库技术与Oracle》习题笔记

《大型数据库设计与实现》复习题(2014.6) 1.画图说明Oracle系统的体系结构。 ? Oracle 服务器:Oracle 服务器中包含多种文件结构、进程结构和内存结构;但是,处理SQL 语句时,并非所有这些结构都会用到。 ? Oracle 例程:Oracle 例程是后台进程和内存结构的组合。 ? Oracle 数据库:Oracle 数据库包含操作系统文件(也称为数据库文件),这些文件为数据库信息提供了实际的物理存储。 ? 其它关键文件:非数据库文件用于配置例程、验证特权用户以及在磁盘出现故障时恢复数据库。 ? 用户进程和服务器进程:执行SQL 语句时,用户进程和服务器进程是其中涉及的主要进程;但是,其它进程也会有助于服务器完成SQL 语句的处理。 ? 其它进程:还有很多供其它选件使用的其它进程,例如,高级排队(Advanced Queuing)、实时应用集群(Real Application Clusters)、共享服务器(Shared Server) 和

高级复制(Advanced Replication) 等。 2.分析表空间两种不同的空间管理方式。 本地管理的表空间:在表空间内通过位图管理区。位图中的每个位对应于一个块或一组块。分配了某个区或释放了某个区可重新使用时,Oracle 服务器更改位图值以显示块的新状态。从Oracle9i 开始,在本地管理已成为缺省设置。 ? 减少了对数据字典表的争用 ? 分配或回收空间时不生成还原数据 ? 无需合并 字典管理的表空间:由数据字典管理区。Oracle 服务器将在分配或回收区时更新数据字典中对应的表。 ? 在数据字典中管理区 ? 存储在表空间中的每个段都可以有不同的存储子句 ? 需要合并 3.命令shutdown有几种方式?请说明各有哪些不同,分析数据库服务器如何解决突然掉电?关闭模式: ? A = ABORT ? I = IMMEDIATE ? T = TRANSACTIONAL ? N = NORMAL 正常关闭: “正常” 是缺省的关闭模式。正常的数据库关闭在下列情况下进行: ? 未建立新连接。 ? Oracle 服务器等待所有用户断开后才完成关闭。

oracle高级复制

Oracle高级复制 在开始之前,需要简单说明一下,目前公司有几个项目都采用Oracle作为数据库平台,并且有的项目使用到了Oracle的数据库复制技术,其中也遇到了一些问题,因此在这里,我对Oracle的复制技术谈一下我个人的理解,希望能够对采用Oracle数据库的项目组有所帮助。其中在文中使用到的SQL脚本都是经过检验可以运行的。 首先简单介绍和数据库复制有关的基本概念,然后探讨Oracle数据复制技术中的几个重要模型,最后介绍Oracle的数据复制管理器以及如何利用它来配置和维护复制环境。 在文章的开头,我想首先简单谈一下复制的基本概念,也就是什么是复制?复制简单地说就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。Oracle高级复制,也称为对称复制,第一次是在Oracle 7.1.6版本中出现的,在这之前的Oracle版本中,Oracle数据复制方法仅有只读快照形式的基本复制一种方法。随着Oracle版本的每一次升级,数据复制的功能、管理以及速度等方面都得到了很大的改进和完善。目前,由于对分布式数据环境需求的不断增长,越来越多的应用提出了数据复制的需求。 1.基本概念 1. 分布式数据库技术 分布式数据库技术是目前我们经常提及的分布式计算的一个重要组成部分,该技术允许数据在多个服务器端共享。采用分布式数据库技术,一个本地服务器可以存取不同物理地点的远程服务器上的数据;也可以使所有的服务器均可以持有数据的拷贝/复制,这样分布式系统中的所有服务器均可进行本地存取。 设计一个分布式计算解决方案首先需要考虑的问题就是应用的完整性、复杂性、性能和可用性以及响应时间等,同时还需要考虑的是对于不同的应用需求是采用实时存取远程数据还是采用延迟存取远程数据。这对于数据复制来讲就是采取实时更新复制方案还是延迟数据复制方案。 2. 同步和异步的概念

Oracle数据库表连接方式及常见用法

Oracle数据库表连接方式及常见用法 racle数据库表连接方式根据应用场景的不同会有不同的方法,本文向您介绍相等连接、外连接、不等连接、自连接和哈希连接等。一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据,,本文将主要从以下几个典型的例子来分析Orac Oracle数据库表连接方式根据应用场景的不同会有不同的方法,本文向您介绍相等连接、外连接、不等连接、自连接和哈希连接等。 一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据,,本文将主要从以下几个典型的例子来分析Oracle表的几种不同连接方式: 1. 相等连接 通过两个表具有相同意义的列,可以建立相等连接条件。 只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。 例查询员工信息以及对应的员工所在的部门信息; SELECT * FROM EMP,DEPT; SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.D EPTNO; REM 显示工资超过2000的员工信息以及对应的员工的部门名称。 2. 外连接 对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。 外连接采用(+)来识别。 ◆左条件(+) = 右条件; 代表除了显示匹配相等连接条件的信息之外,还显示右条件所在的表中无法匹配相等连接条件的信息。 此时也称为"右外连接".另一种表示方法是:

Oracle中比对2张表之间数据是否一致的几种方法

Oracle中比对2张表之间数据是否一致的几种方法 by Maclean.liu liu.maclean@https://www.wendangku.net/doc/cd3573227.html, https://www.wendangku.net/doc/cd3573227.html,

About Me l Email & Gtalk:liu.maclean@https://www.wendangku.net/doc/cd3573227.html, l Blog:https://www.wendangku.net/doc/cd3573227.html, l QQ:47079569 QQ Group:23549328 l Oracle Certified Database Administrator Master 10g and 11g l Over 6 years experience with Oracle DBA technology l Over 7 years experience with Linux technology l Member Independent Oracle Users Group l Member All China Oracle Users Group l Presents for advanced Oracle topics: RAC, DataGuard, Performance Tuning and Oracle Internal.

How To Find Maclean Liu?

大约是2个星期前做一个夜班的时候,开发人员需要比对shareplex 数据同步复制软件在 源端和目标端的2张表上的数据是否一致,实际上后来想了下shareplex 本身应当具有这种数据校验功能, 但是还是希望从数据库的角度得出几种可用的同表结构下的数据比对方法。 注意以下几种数据比对方式适用的前提条件: 1. 所要比对的表的结构是一致的 2. 比对过程中源端和 目标端 表上的数据都是静态的,没有任何DML修改 方式1: 假设你所要进行数据比对的数据库其中有一个 版本为11g且该表上有相应的主键索引(primary key index)或者唯一非空索引(unique key ¬ null)的话,那么恭喜你! 你可以借助11g 新引入的专门做数据对比的PL/SQL Package dbms_comparison来实现数据校验的目的,如以下演示: Source 源端版本为11gR2 : conn maclean/maclean SQL> select * from v$version; BANNER --------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production SQL> select * from global_name; GLOBAL_NAME https://www.wendangku.net/doc/cd3573227.html, & https://www.wendangku.net/doc/cd3573227.html,

oracle数据库备份与恢复的三种方法(1)

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出。 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。 2、增量导出/导入 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。 增量导出包括三种类型: (1)、“完全”增量导出(Complete) 即备份三个数据库,比如: (2)、“增量型”增量导出 备份上一次备份后改变的数据,比如: (3)、“累积型”增量导出 累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如: 数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。 比如数据库的被封任务可以做如下安排: 星期一:完全备份(A)

星期二:增量导出(B) 星期三:增量导出(C) 星期四:增量导出(D) 星期五:累计导出(E) 星期六:增量导出(F) 星期日:增量导出(G) 如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库: 第一步:用命令CREATE DATABASE重新生成数据库结构; 第二步:创建一个足够大的附加回滚。 第三步:完全增量导入A: 第四步:累计增量导入E: 第五步:最近增量导入F: 二、冷备份 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是: 1、是非常快速的备份方法(只需拷文件) 2、容易归档(简单拷贝即可) 3、容易恢复到某个时间点上(只需将文件再拷贝回去) 4、能与归档方法相结合,做数据库“最佳状态”的恢复。 5、低度维护,高度安全。 但冷备份也有如下不足: 1、单独使用时,只能提供到“某一时间点上”的恢复。 2、再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

相关文档