当前位置:数据库 > Oracle >>

【ORACLE基础二】oracle中跨服务器同步表数据

【ORACLE基础二】oracle中跨服务器同步表数据
 
 oracle我不是很熟,但现被安排要做个2台数据库表同步复制,不懂,只能从开始研究,制作。如果你和我一样,看了我的制作过程,一定给你很大的帮助。废话不说了,开始.......google....次数已经记不清楚了,可以用天衡量了,大概时断时续一周。。汗死。。。。。在此,非常感谢那些发表文章的人,通过看过很多人的文章,我才能基本完成,感谢!
    概述:
在Internet上运作数据库经常会有这样的需求:把遍布全国各城市相似的数据库应用统一起来,一个节点的数据改变不仅体现在本地,还反映到远端。复制技术给用户提供了一种快速访问共享数据的办法。
前提条件
要准备2台测试用的机器,开始制作如下:
2台机器安装oracle10g,注意我的版本相同。
SID都是music1
1:安装及运行vnc。。。用于远程安装oracle
2:安装及运行 oracle10.2....
完成以上步骤后,基本工作就算做完了,现在开始配置高级复制。
假设数据库机器为 数据库机器A ...数据库机器B...
数据库机器A地址为;192.168.1.205
SID:music1
域名:master.anymusic.com
数据库机器B地址为;192.168.1.226
SID:music1
域名:salse.anymusic.com
首先配置确认俩台机器可以互相访问,如下:
机器A操作:
用oracle登陆
修改如下文件;
vi tnsnames.ora 
添加:
MUSIC226 =        这个名称随便起
  (DE.ION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.226)(PORT = 1521))    这里为机器B的地址及数据库端口号
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = music1)    这个名称为机器B 数据库SID的值
    )
  )
配置完重起数据库
机器B操作:
用oracle登陆
同样修改如下文件;
vi tnsnames.ora 
添加:
MUSIC205 =        这个名称随便起
  (DE.ION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.205)(PORT = 1522))    这里为机器A的地址及数据库端口号
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = music1)    这个名称为机器A 数据库SID的值
    )
  )
重起数据库 
测试数据库连通性,在机器A如下;
[oracle@localhost admin]$ tnsping music226
显示如下;
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production . 04-JAN-2009 16:53:23
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:
/home/oracle/oracle/product/10.2.0/network/admin/sqlnet.ora
 
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DE.ION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.226)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = music1)))
OK (10 msec)
 
测试数据库连通性,在机器B如下;
[oracle@localhost admin]$ tnsping music205
显示;
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production . 04-JAN-2009 17:09:04
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:
/home/oracle/oracle/product/10.2.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DE.ION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.205)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = music1)))
OK (0 msec)
注意:这里我的2台机器没有加防火墙等其他安全措施,数据库也没有设置限制地址登陆。如果你连接不上,就仔细看看自己的其他配置。
接着在机器A操作如下:
察看v$option,Advanced replication为TRUE,则支持高级复制功能;否则不支持
select * from v$option;
以上察看结果默认为ture,支持高级复制。
察看global_name参数
SQL> show parameter global_name;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     FALSE
看过大多数文章都将这里要设置成true,我没有改动,默认false使用,
 
察看默认global_name,数据库域名
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
MUSIC1.REGRESS.RDBMS.DEV.US.ORACLE.COM
修改global_name,数据库域名
SQL> alter database rename global_name to master.anymusic.com;
察看修改结果;
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
MASTER.ANYMUSIC.COM
创建帐户及数据:
SQL> create user wcms identified by abc123 default tablespace users;
SQL>grant connect,resource to wcms;
切换到wcms,
SQL> conn wcms/abc123
创建表
SQL> create table test(id number,name varchar2(20),constraint test_id_pk primary key(id));   (主键一定是要的);
插入数据
SQL> insert into test values(1,'abc');
SQL> insert into test values(2,'def');
建立管理数据库复制的用户repadmin,并赋权。
SQL> create user repadmin identified by repadmin default tablespace users temporary tablespace temp;
SQL> execute dbms_defer_sys.register_propagator('repadmin');
SQL> grant execute any procedure to repadmin;
SQL> execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
SQL> execute dbms_repcat_admin.grant_admin_any_schema(username => 'repadmin');
SQL> grant comment any table to repadmin;
SQL> grant lock any table to repadmin;
SQL> grant select any dictionary to repadmin;
用repadmin 创建database link 连接
SQL> conn repadmin/repadmin
SQL> create database link "salse.anymusic.com" connect to repadmin identified by repadmin using 'music226';
说明一下;salse.anymusic.com为我修改global_name的值
music226 :是以上tnsnames.ora中我设定连接机器B数据库的值
察看一下:SQL> select owner,db_link,host from all_db_links;
OWNER         DB_LINK                                 HOST  
REPADMIN  SALSE.ANYMUSIC.COM    music226
 
在机器B操作如下;
察看v$option,Advanced replication为TRUE,则支持高级复制功能;否则不支持
select * from v$option;
以上察看结果默认为ture,支持高级复制。
察看global_name参数
SQL> show parameter global_name;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                     boolean     FALSE
察看默认global_name,数据库域名
SQL> select * from global_name;
GLOBAL_NAME
------------------------------------------------------------
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,