oracle 中 Database link 使用方法

深入讲解"database link"的设置和使用
database link是用来做什么的?
database link,它是用来更方便的一个数据库中访问另一个数据库(包括本地和远程的,道
理是一样的),一开始,很多人会发生误解,其实是在本地建立的。即数据库连接只是连到
别的数据库的快捷方式。

一、设置具体有两种

第一种:
1.在本地数据库根据远端的信息用Net Manager设置好能连接远端的服务及监听程序。
2.create public database link dblk_hs
connect to scott identified by tiger --scott为远程数据库中用户名、tiger为对应用户密码
using 'hundsun' --hundsun为远程数据库服务名

第二种:
直接建立链接:

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) ) )';

二、使用

查询远端数据库里的表
SELECT …… FROM 表名@数据库链接名;
查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink”
而已。
为了方便,可在本地建立同义词:
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
删除dblink:DROP PUBLIC DATABASE LINK linkfwq。
假如创建全局dblink,则必须使用system或sys用户,在database前加public。
三、注意
需要在本地数据库服务器的 tnsnames.ora 中配置远程数据库的数据库标识,而不是在本地
客户端的 tnsnames.ora 中设置。

合集下载

oracle连接ODBCsqlserver数据源的详细步骤

oracle连接ODBCsqlserver数据源的详细步骤

oracle连接ODBCsqlserver数据源的详细步骤⼀. 添加数据源ODBC1.打开数据源或者2.添加数据源3.选择SQL Server4.名称:输⼊ODBC数据源名称描述:随意服务器:输⼊sqlserver服务器名5.SQLSERVER登陆⽤户:登录ID⼀般是:sa ;密码:只有你知道6.选择你连接的数据库7.完成8.测试⼀下⼆.检查DG4ODBC驱动是否已经安装⽅法如下:在Oracle服务器上,cmd窗⼝中执⾏命令(dg4odbc或hsodbc)上图代表安装了DG4ODBC驱动(如果没有安装,需⾃⾏下载安装,此处不介绍具三.配置hsodbc此⽬录下默认存在initdg4odbc.ora,复制这个⽂件,粘贴到上图⽬录中,并将后复制的⽂件改名为initdddb.ora,⽤记事本打开就该配置并保存如下图四.配置监听listener(服务端透明⽹关监听)五.重启监听在命令提⽰符窗⼝依次输⼊如下命令停⽌监听:lsnrctl stop启动监听:lsnrctl start六. 配置TNS(客户端服务命名)DDDB:本地oracle服务命名HOST:oracle服务器IPPORT:监听端⼝SID:刚才命名的SID配置七.创建oracle的DBLINK或者不创建第六步,直接创建DBLINKcreate public database link test_sql connect to “sqlserver⽤户名” identified by “sqlserver密码” using ‘(description=(address= (protocol=tcp)(host=xxx.xxx.xxx.xxx)(port=1521))(connect_data=(SID=SID名称))(HS=OK))';⼋.查询select * from 表名@Test_Sqlgetaway到此这篇关于oracle连接sqlserver数据源ODBC的详细步骤的⽂章就介绍到这了,更多相关oracle sqlserver数据源ODBC内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

ORACLE数据泵还原(IMPDP命令)

ORACLE数据泵还原(IMPDP命令)

ORACLE数据泵还原(IMPDP命令)Oracle数据库还原IMPDP命令是相对于EXPDP命令的,⽅向是反向的。

即对于数据库备份进⾏还原操作。

⼀、知晓IMPDP命令C:\>impdp -helpImport: Release 11.1.0.7.0 - Production on 星期六, 28 9⽉, 2013 15:37:03Copyright (c) 2003, 2007, Oracle. All rights reserved.数据泵导⼊实⽤程序提供了⼀种⽤于在 Oracle 数据库之间传输数据对象的机制。

该实⽤程序可以使⽤以下命令进⾏调⽤:⽰例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp您可以控制导⼊的运⾏⽅式。

具体⽅法是: 在 'impdp' 命令后输⼊各种参数。

要指定各参数, 请使⽤关键字:格式: impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)⽰例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmpUSERID 必须是命令⾏中的第⼀个参数。

关键字说明 (默认)------------------------------------------------------------------------------ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。

CONTENT 指定要加载的数据, 其中有效关键字为:(ALL),DATA_ONLY和METADATA_ONLY。

DATA_OPTIONS 数据层标记,其中唯⼀有效的值为:SKIP_CONSTRAINT_ERRORS-约束条件错误不严重。

DIRECTORY 供转储⽂件,⽇志⽂件和sql⽂件使⽤的⽬录对象。

oracle gateways 21使用方法

oracle gateways 21使用方法

一、概述Oracle Gateways 21 是一种用于连接不同数据库系统的工具,可以实现在 Oracle 数据库中访问非 Oracle 数据库的功能。

本文将详细介绍Oracle Gateways 21 的使用方法,包括安装、配置和使用的步骤。

二、安装1. 确保系统满足安装要求在安装 Oracle Gateways 21 之前,需要确保系统满足相关的硬件和软件要求,包括操作系统版本、内存和存储空间等方面的要求。

2. 下载安装程序从官方全球信息湾上下载 Oracle Gateways 21 的安装程序,根据所在的操作系统评台选择相应的安装程序进行下载。

3. 运行安装程序双击安装程序,根据提示完成安装程序的运行,选择安装路径和相关配置选项。

4. 完成安装等待安装程序自动完成安装过程,确保安装过程中没有出现错误提示。

三、配置1. 配置环境变量在安装完成后,需要配置相关的系统环境变量,以便系统能够识别Oracle Gateways 21 的安装路径和相关文件。

2. 配置监听文件编辑监听文件,添加相应的监听参数,包括监听位置区域、端口号等信息,以便Oracle 数据库能够正确识别非Oracle 数据库的连接请求。

3. 配置 tnsnames.ora 文件编辑 tnsnames.ora 文件,添加非 Oracle 数据库的连接信息,包括数据库服务名、主机位置区域、端口号等信息,以便 Oracle 数据库能够正确连接非 Oracle 数据库。

4. 测试连接在完成配置后,需要进行连接测试,确保 Oracle 数据库能够成功连接非 Oracle 数据库,并能够正常进行数据访问。

四、使用1. 创建数据库信息在 Oracle 数据库中,使用 create database link 命令创建到非Oracle 数据库的信息,指定相应的数据库服务名、主机位置区域、端口号等信息。

2. 执行查询操作通过创建的数据库信息,可以在 Oracle 数据库中执行查询操作,访问非 Oracle 数据库中的数据,包括查询、更新、删除等操作。

oracle常用SQL语句(汇总版)

oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义(DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER TABLE 表名NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_code;查询报表数据库中话单统计种类查询。

Oracle数据库中快照的使用

Oracle数据库中快照的使用

Oracle数据库中快照的使⽤oracle数据库的快照是⼀个表,它包含有对⼀个本地或远程数据库上⼀个或多个表或视图的查询的结果。

正因为快照是⼀个主表的查询⼦集,使⽤快照可以加快数据的查询速度;在保持不同数据库中的两个表的同步中,利⽤快照刷新,数据的更新性能也会有很⼤的改善表快照的建⽴:先建表的快照⽇志,根据表的⽇志,才能在快照中执⾏快刷新create snapshot log on table_name;⼆、在dmtcx⽤户下建⽴到sffw⽤户的数据库链link_sf;---- 建⽴了到sffw⽤户的数据库链后才能从sffw⽤户下的表yh_qfcx中获取数据。

---- Create database link link_sf ---- Connect to sffw identified by xxxxxxx using 'rs6000'; 三、在dmtcx⽤户下建⽴快照s_yh_qfcx; Create snapshot s_yh_qfcx as Select yhh,qf6+qf5+qf4+qf3+qf2+qf1+qf qfje From yh_qfcx@link_sf Where tjbz='K' and bz6+bz5+bz4+bz3+bz2+bz1+bz>0; 四、根据需要修改快照刷新的间隔时间;---- dmtcx⽤户下的快照s_yh_qfcx为了与sffw⽤户下的主表yh_qfcx保持同步,需要不断刷新快照。

只有设定了快照的刷新间隔时间,oracle才会⾃动刷新该快照。

---- 快照的刷新有两种⽅式:快速刷新和完全刷新。

快速刷新需要快照的主表先有快照⽇志存在;完全刷新时oracle执⾏快照查询,将结果放⼊快照。

快速刷新⽐完全刷新快,因为快速刷新将主数据库的数据经⽹络发送到快照的数据少,仅需传送主表中修改过的数据,⽽完 Alter snapshot s_yh_qfcx refresh fast Start with sysdate+1/1440 next sysdate+1/144; {此SQL语句的意思为:设定oracle⾃动在1分钟 (1/24*60)后进⾏第⼀次快速刷新,以后每隔10分钟 (10/24*60)快速刷新⼀次。

Oracle建立DBLINK的细致步骤记录

Oracle建立DBLINK的细致步骤记录

Oracle建立DBLINK的细致步骤记录假设某公司总部在北京,新疆有其下属的一个分公司。

在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100北京的总部有一个集中的数据库,其SID是SIDBJ,用户名:userbj,密码:bj123,北京的IP地址是:192.168.1.101。

在本地(新疆)的分公司也有一个数据库,其SID是SIDXJ,用户:userxj,密码:xj123,新疆的IP地址是:192.168.1.100。

要将本地新疆的SIDXJ数据库中访问到北京的数据库SIDBJ中的数据。

也就是说,在sidxj的数据库中,用户userxj(192.168.1.100)需要建立DBLINK,以userbj的用户身份访问sidBJ(192.168.1.101)中的数据。

测试环境:两个数据库均建立在WINXP上,ORACLE的版本均为Oracle817 建立环境时,要注意关闭两台计算机上的Windows的防火墙,否则,会出现能ping通,但Oracle连接不通的情况。

1、问:如何返回数据库的GLOBAL_NAME?执行SELECT * FROM GLOBAL_NAME;北京的数据库的GLOBAL_NAME为新疆的数据库的GLOBAL_NAME为SIDXJ2、问:如何查看Global_name参数是true还是False?答:执行:SQL> show parameter global_name;执行的结果如下:NAME TYPE V ALUE------------------------------------ ----------- ------------------------------global_names boolean TRUE表示该参数是true.该参数为true时,你在本地建立的DBLINK的名称必须和远程的Global_name一致才行。

3、问:查看远程数据徊是否支持高级复制功能。

sql服务器添加oracle的链接服务器步骤

SQL SERVER 2005 通过链接服务器访问 ORACLE 的快速设定方法1)在SQL_SERVER 2005服务器上安装Oracle 10g的客户端。

假设安装到D:\oracle\ 目录。

如果D:是N TFS分区,需要将ORACLE安装后的目录设为所使用的用户有权可运行、可添加、可删除。

2)配置D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora 文件(手动配置)ORCL_192.168.0.163=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.163)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME =orl)//此处的orl是HIS给的database))(NetManage工具自动生成的配置)ORCL_192.168.0.163 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.163)(PORT = 1521)))(CONNECT_DATA =(SID = orl)//此处的orl是HIS给的database(SERVER = DEDICATED)))3)在DOS模式下运行以下命令以便确认ORA CLE客户端安装无误。

sqlplus user/password@ ORCL_192.168.0.1634)打开开始-控制面板-服务,确认Distributed Transaction Coordinator服务已启动。

5)打开SQL SERVER Management Studio,实例名称(ORCL_192.168.0.163)-服务器对象(右键)-新建连接服务器。

a)链接服务器:写上链接服务器的名字,如:OraTestb) 服务器类型,选择其他数据源c) 访问接口:选择 Microsoft OLE DB Provider for Oracled) 产品名称:写上 Oraclee) 数据源:写上tnsnames.ora 文件中配置的服务名,如:ORCL_192.168.0.163f)访问接口字符串:user id=user;password= passwordg)在选择安全性选项页,使用此安装上下文建立连接:1:远程登录:user2:使用密码:passwordh) 确定6)SQL的写法有两种a) 使用T-SQL语法:SELECT * FROM OraTest.ERP.BAS_ITEM_CLASS注意在,SQL查询分析器中输入SQL语句时注意中文的全角半角切换方式!b) 使用PLSQL语法:SELECT * FROM openquery(OraTest,'SELECT * FROM OraTest.ERP.BAS_ITEM_CLASS ')c)第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当;第一种访问方式可能会导致一些意外错误,如:该表不存在,或者当前用户没有访问该表的权限等等一些信息。

Oracle数据库实用教程-第 2章 Oracle表


表TABLE
约束CONSTRAINT
索引INDEX
表空间TABLESPACE
视图VIEW
回退段ROLLBACK SEGMENT
序列生成器SEQUENCE 同义词SYNONYM
用户USER
数据库链路DATABASE LINK
聚簇CLUSTER 分区PARTITION 函数/过程/程序包 触发器TRIGER 对象OBJECT
DESC emp_old;
SELECT * FROM emp_old;
16
2.3.3 存储参数
带存储参数的CREATE TABLE命令的简要语法及说明如下
CREATE TABLE [schema.] table
( { COLUMN1 DATATYPE [DEFAULT EXPn]
[COLUMN_CONSTRAINT] | TABLE_CONSTRAINT }
INSERT
INTO emp(deptno,empno,ename,sal,comm) VALUES(10,1020,'Jordan',4800,500);
32
6.修改存储参数
可 修 改 表 的 PCTFREE , PCTUSED , INITRANS 和MAXTRANS等存储参数。
例:修改表student的存储参数。
12
图2-4 table_properties的语法图
2.3 简单表的创建
2.3.1 简单表的创建语法
语法如下: CREATE TABLE 表名( 列名 类型 [NULL|NOT NULL] [PRIMARY KEY],
… 列名 类型 [NULL|NOT NULL][,[表级完整性约束]]);
13

实现两个数据库间表数据同步张金总结版

1,在目标机上建立Oracle DB Link:--在本地(目标机器)如下文件加入代码,连接到目标数据库上面1.1,在network/admin/tnsname.ora文件中加入源库的连接信息,如:AAA_10.5.1.3=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.1.3)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = AAA)))说明: 10.5.1.3:源库ipAAA_10.5.1.3:创建的实例名(服务名)1,2,在目标机器上用sqlplus user/pwd 登录:目标机器(本地)的用户名和密码,不是源库机器的用户名和密码。

1.3,在本地机器(目标库)上用如下命令建立DB Link:create public database link AAA_LINK connect to user identified by pwd using 'AA A_10.5.1.3';命令说明:AAA_LINK:dblink的名称user:源库的用户名pwd :源库的密码AAA_10.5.1.3:配置的实例名(服务名)说明:CREATE PUBLIC DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码USING ‘本地配置的数据的实例名’;如果建立成功,会提示:Database link created.1.4--测试使用链接的数据库(表名@dblink名称)select * from FA_CARD@ AAA_LINK;1.5创建一个测试表:在目标机器和原机器上都创建createtable dblink_test (user_id NUMBER,user_name VARCHAR2(100));--在其中增加一条记录:insertinto dblink_test (user_id, user_name)values (1, '钟德荣');2,使用如下脚本,即可同步数据表:2.1 将源库的数据插入到目标库方法一、truncatetable dblink_test;--删除目标库的相应表数据--插入目标机器数据,来源于源库的数据insertinto dblink_testselect * from cztbd.dblink_test@KNG_LINK; --#这里是指向要同步的来源表,表名必须是<表所有者(源库的用户)>.<表名(源库的表)>@<dblink name>commit;方法二、mergeinto dblink_test b using dblink_test@KNG_LINK c on(ER_ID=ER_ID)--如果pk(主键)值是相同则将目标库c将对应表的数据更新到源库b的对应表中whenmatchedthenupdateset ER_NAME=ER_NAME--如果pk(主键)值不一至,则将目标表中的数据整条插入到源表中whennotmatchedtheninsertvalues (ER_ID,ER_NAME);--记得merge后必须commit,否则更改未能提交commit;可以将以上语句作为sql脚本,然后写一个类似2.2的bat命令来作为任务执行2.2 将目标库的数据插入或者更新到源库--从目标库c将对应表的数据插入到源库b的对应表中方法一insertinto cztbd.dblink_test@KNG_LINKselect * from dblink_test;方法二mergeinto dblink_test@KNG_LINK b using dblink_test c on(ER_ID=ER_ID)--如果pk(主键)值是相同则将目标库c将对应表的数据更新到源库b的对应表中whenmatchedthenupdateset ER_NAME=ER_NAME--如果pk(主键)值不一至,则将目标表中的数据整条插入到源表中whennotmatchedtheninsertvalues (ER_ID,ER_NAME);--记得merge后必须commit,否则更改未能提交commit;将以上脚本写入merge.sql中,然后建立merge.bat文件,双击运行merge.bat文件,那么系统会自动将目标库c将对应表的数据插入到源库b的对应表中,可以将merge.bat作为任务定期执行(也可以按照3创建存储过程和任务来做)merge.bat如下图所示merge.sql如下图所示3,实现数据同步方式一、通过2所描述的方式实现数据库数据同步(已测试)方法二、创建存储过程和任务(待测试)--创建一个存储过程create procedure proc_sjtbasbegindelete from swdx_gzryxx where is_tb='1';insert into swdx_gzryxx(gzrybh,mc,jgdm,phone,is_tb)selectdistinct(t.zgswry_dm),t.zgswry_mc,t.nsr_swjg_dm,t.tel_zgy,'1' from dxpt_sjtb@mydblink t;delete from gdzc_jg where is_tb='1';insert into gdzc_jg(jg_dm,jg_mc,is_tb)selectdistinct(t.nsr_swjg_dm),t.nsr_swjg_mc,'1' from dxpt_sjtb@mydblink t; delete from swdx_nsrxx where is_tb='1';insert into swdx_nsrxx(nsrsbh,nsrmc,jgdm,zgydm,is_tb)selectt.nsrsbh,t.nsrmc,t.nsr_swjg_dm,t.zgswry_dm,'1' from dxpt_sjtb@mydblink t;insert into swdx_nsrphone(nsrsbh,lbbh,tel) selectt.nsrsbh,'001',t.TEL_NSR_CW from dxpt_sjtb@mydblink t;insert into swdx_nsrphone(nsrsbh,lbbh,tel) selectt.nsrsbh,'002',t.TEL_NSR_FR from dxpt_sjtb@mydblink t;insert into swdx_nsrphone(nsrsbh,lbbh,tel) selectt.nsrsbh,'003',t.TEL_NSR_QT from dxpt_sjtb@mydblink t;delete from xt_czy where is_tb='1';insert into xt_czy(czy_id, czy_mc, jg_code, czy_lxdh,is_zgy,is_tb,is_jgczy,CZY_YXBZ) select distinct (t.zgswry_dm),t.zgswry_mc, t.nsr_swjg_dm, t.tel_zgy,'1','1','0','Y' fromdxpt_sjtb@mydblink t;insert into xt_czy(czy_id, czy_mc, jg_code,is_zgy,is_tb,is_jgczy,CZY_YXBZ) selectdistinct(t.nsr_swjg_dm),t.nsr_swjg_mc,t.nsr_swjg_dm,'0','1','1','Y' from dxpt_sjtb@mydblink t;end;--创建任务(每分钟执行一次)DECLARE X NUMBER;BEGINSYS.DBMS_JOB.SUBMIT(job => X,what => 'proc_sjtb;',next_date => to_date('09-12-2008 00:00:00','dd/mm/yyyyhh24:mi:ss'),interval => 'TRUNC(sysdate) + 1 +2 / (24)');END;--执行任务--RUN(参数)是我们建立任务的时候自动生成的,指定任务号方可启动任务和删除任务beginSYS.DBMS_JOB.RUN(25);end;--删除任务beginsys.DBMS_JOB.REMOVE(23);end;方法三、创建触发器实现实时同步(测试通过)--KNG_LINK 数据链名称--cztbd 源数据库的用户名--cztbd 源数据库的密码--KNG ORACLE SID实例名(源库)--1、在源数据库上,创建要同步表的快照日志(不是很确定是否是在源库建立这个快照日志)--DBLINK_TEST:源库表,LOG:快照名称,不虚伪log不能修改,否则不能创建成功CreatesnapshotLOGon DBLINK_TEST;--2、在目标数据库上创建快照(被同步(源)数据库服务必须启动)DB_LINK_KZ:快照名称Createsnapshot DB_LINK_KZ asselect * from DBLINK_TEST@KNG_LINK;--3、设置刷新快照时间:如下写法为每隔一分钟刷新一次Altersnapshot DB_LINK_KZrefreshfastStartwithsysdatenextsysdate+1/1440;---删除快照的方法dropsnapshot DB_LINK_KZ;DROPMATERIALIZEDVIEW DB_LINK_KZ;---手动刷新快照begindbms_refresh.refresh('DB_LINK_KZ');end;---查看快照最后一次刷新时间SELECT NAME,LAST_REFRESH FROM ALL_SNAPSHOT_REFRESH_TIMES;---查看快照下次执行时间select last_date,next_date,what from user_jobs order by next_date; --4、创建触发器:在目标库创建未通过,创建用于同步本地表与远程表(源数据库)数据的触发器由于创建快照后,快照在目标数据库表现为会创建一个数据表DB_LINK_KZ,此表根据上一步骤设置的快照刷新时间自动与源数据库的表user同步,要想实现两个数据库的真正同步,只需针对DB_LINK_KZ表创建一个触发器即可解决,即通过触发器实现往目的数据库的指定数据表中插入数据,实现本地数据与目的数据库表的数据同步。

Oracle10g数据库透明网关连接sqlserver2005配置说明文档

Oracle 10g透明网关连接Sql Server 2005 配置说明(一) 环境如下:ORACLE 10g 安装在:172.64.8.139 的window server 2003SqlServer 2005安装在:172.64.8.142(二) :下载透明网关10g下,透明网管是一个单独组件,可以到oracle官方网站下载/technology/software/products/database/oracle10g/htdocs/10201winso ft.html,然后搜索10201_gateways_win32.zip,即可下载。

这个安装包有300M。

(三) 安装透明网关:注意:安装之前要必须要将原有的数据库服务器启动起来,不然会重复安装OraTg10g_home1数据库软件,这样就会有2个数据库软件。

1、下载10201_gateways_win32.zip插件,并解压。

2、进入10201_gateways_win32文件夹,点击setup.exe。

3、点击下一步选择安装的路径,路径是D:\oracle\product\10.2.0\db_1文件夹(这里是我的oracel的安装路径,根据自己机器的路径修改)。

4、点击下一步,选择Oracle Transparent Gateway for Microsoft SQL Server 10.2.0.1.0,点击下一步.5、填写SQL服务器名和SQL数据库名6、点击安装,安装完成之后会在D:\oracle\product\10.2.0\db_1文件下多出一个文件夹tg4msql,即安装成功。

(四) 配置:1. 在Oracle的D:\oracle\product\10.2.0\db_1\tg4msql\admin目录下,打开inittg4msql.ora,添加配置如图:注意红色部分2、配置Oracle的D:\oracle\product\10.2.0\db_1\network\admin目录下的listener.ora。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档