在Internet上我有两个oracle9i数据库,一个是有固定IP(下称A),另一个在局域网中(下称B),两个数据库完全一样。请问我在DBA Studio的高级复制中如何设置,以实现A库跟着B库数据同步。或用其它方法也可以,总之实现两库的数据同步。如果知道的请将操作过程分为1、2、3等步骤写。

解决方案 »

  1.   

    1. 实现数据库复制的前提条件 
    q 数据库支持高级复制功能:您可以用system身份登录数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持。
    q 数据库初始化参数要求:
    (1) db_domain = test.com.cn:指明数据库的域名(默认的是WORLD),这里可以用您公司的域名。 
    (2) global_names = true:它要求数据库链接(database link)和被连接的数据库名称一致。 现在全局数据库名:db_name+"."+db_domain 
    q 数据库连接通畅:
    运行$tnsping hr_svr与$tnsping xjtu,出现以下提示符: 
    Attempting to contact 
    (ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.200)(PORT=1521)) OK(n毫秒)则表示数据库连接通畅,可以准备复制。
    2. 系统环境参数(init.ora文件)设置(对于非缺省值)
    如果要搭建Oracle高级复制环境,必须在初始化文件中设置下列参数,见表1所示。
    参数名称 推荐值 备注
    processes 100 进程数,default=59如果进程数大于59数据库将可能发生死锁
    shared_pool_size 30000000 至少30M,如果有很多的复制对象的话,则需要更多的空间
    large_pool_size 500K 
    db_block_buffers 550K 
    compatible 8.0.5.0 该版本以上
    db_file_multiblock_read_count 16 
    dml_locks 100 
    sequence_cache_entries 30 
    sequence_cache_hash_buckets 23 
    global_names TRUE 
    distributed_lock_timeout 300 
    distributed_transactions 10 
    Open_links 6 复制节点多的话,需要增加
    Sort_area_size 1000000 
    db_name RLDBA 
    job_queue_processes 6 定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。
    job_queue_interval 60 定义系统每隔N秒唤醒该进程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。
    parallel_max_servers 10 只适用于并行传播
    parallel_min_servers 2 只适用于并行传播
    PEPLICATION_DEPENDENCY_TRACKING TRUE 如果采用并行传播,必须设置为TRUE
    (表1:Oracle高级复制环境初始化参数设置)
    表1中各个参数的推荐值认为目前的复制环境只有两个节点,一个简单的高级复制环境,如果节点较多,且复制关系复杂,需要复制的表也很多,则需要相应增大一些参数的值,这可以通过修改不同的参数试验获得。如果修改了以上这几个参数,需要重新启动数据库以使参数生效。将所有的SNAPSHOT 或者是JOB_QUEUE_KEEP_CONNECTIONS参数都删除,因为Oracle以后已经不支持这些参数。 2.Net8参数文件 
    (1)sqlnet.ora文件设置
    # SQLNET.ORA Network Configuration File: D:\Oracle\Ora81\network\admin\sqlnet.ora# Generated by Oracle configuration toolsSQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)automatic_ipc=offnames.default_domain = worldname.default_zone = worldsqlnet.expire_time = 0DISABLE_OOB = ON(2)tnsnames.ora文件设置
    RLDBA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hr_svr)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = rep.world) ) )XJTU = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xjtu)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = xjtu.world) ) )
    上面Host为各个复制节点的IP地址,如果复制节点很多,则全部加入到tnsnames.ora文件中,本文作为用例中有两个节点。 
    3.表空间 
    如果搭建Oracle高级的高级复制环境,额外需要加大一些表空间,表2是建议的初始表空间。
    表空间 建议初始值 建议
    SYSTEM 至少20M 
    ROLLBACK SEGMENTS 至少20M 建议回滚段的下一个区大小设置至少为100K。
    TEMPORARY 至少10M 
    TOOLS 至少20M 
    ( 表2:Oracle系统表空间大小设置 )
    上面这些建议的设置是一种较小复制环境下的空间设置。如果要复制的表很多,每天的变化量很大,复制节点复杂,则需要相应增大表空间的大小,具体数据依据具体情况而定。 
      

  2.   

    http://www.chinaunix.net/bbsjh/8/54.html
    http://www.ccidnet.com/html/tech/guide/2001/03/28/58_1900.html
    http://www.ccidnet.com//tech/guide/2001/03/28//58_1901.html
      

  3.   

    oracle有个standby database也可以实现数据库同步,
    在备份与恢复中有这方面的内容从来没有作过,无法提供1,2,3有兴趣你找本书看看