oracle数据库多实例实时同步(利用oracle管理平台实现)

  1. 环境:sql

    Windows 2008 服务器,Oracle 11g  r2 数据库数据库

  2. 任务要求:浏览器

    有三个数据库实例,一个实例供管理子系统使用,一个实例供利用子系统使用,还有一个实例专门作备份。服务器

  3. 选择的技术:oracle

    Oracle Stream Replication(流复制)ide

  4. 建立另外两个实例spa

    源实例:orcl命令行

    目标1:target日志

    目标2:target2code

  5. 中止应用服务器,防止用户由于使用应用服务器而对数据库作出的改变。

    并导出 orcl 实例中用户的数据,用 exp 命令

    例如 exp nt_gxt/oais@orcl file=E:\nt_gxt_201508140923.dmp

  6. 环境设置

    使用命令行登陆数据库


  7. sqlpus sys/orcl@orcl as sysdba
    alter system set global_names=true scope=both;
    alter system set job_queue_processes=10 scope=both;
    alter system set parallel_max_servers=20 scope=both;
    alter system set undo_retention=3600 scope=both;
    alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
    alter system set streams_pool_size=512M scope=spfile;
    alter system set utl_file_dir='*' scope=spfile;
    alter system set open_links=4 scope=spfile;
    --下面为设置归档模式的命令:(注意:修改路径)
    alter system set log_archive_dest_1='location=E:\DevProgramsFile\Oracle\archive\target' scope=spfile;
    alter system set log_archive_start=TRUE scope=spfile;
    alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile;
    shutdown immediate;
    startup mount;

(若是startup mount报如上错误,须要对实例进行静态注册,在listener.ora文件中添加以下内容,并从新启动监听服务)

alter database archivelog;
alter database open;
--若是要查看归档模式是否设置成功能够用命令:
archive log list 
--若是出现以下截图内容则说明设置成功,

      


    8. 建立 stream 管理用户

        1). 建立主环境管理用户

        

Sqlplus sys/orcl@orcl as sysdba
#建立主环境的 stream 专用表空间(注意修改路径)
create tablespace tbs_stream datafile 'E:\DevProgramsFile\Oracle\oradata\orcl\tbs_stream01.dbf' size 100m autoextend on maxsize unlimited segment space management auto;
#将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间
execute dbms_logmnr_d.set_tablespace('tbs_stream');
#建立Stream管理用户 
create user strmadmin identified by strmadmin default tablespace tbs_stream temporary tablespace temp; 
#受权Stream管理用户
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/


        2). 建立从环境的 stream 管理用户

Sqlplus sys/orcl@target as sysdba
#建立Stream专用表空间
create tablespace tbs_stream datafile 'E:\DevProgramsFile\Oracle\oradata\target\tbs_stream01.dbf' size 100m autoextend on maxsize unlimited segment space management auto;
#一样,将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间 
execute dbms_logmnr_d.set_tablespace('tbs_stream');
#建立Stream管理用户 
create user strmadmin identified by strmadmin default tablespace tbs_stream temporary tablespace temp;
#受权Stream管理用户 
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/


        3). 建立 DBlink

            3.1) 建立主数据库数据链

                根据Oracle 10gR2 Stream官方文档,针对主数据库创建的数据库链的名字必须和从数据库的global_name

                相同。若是须要修改global_name,执行“alter database rename global_name to xxx”。

#以strmadmin身份,登陆主数据库。
Sqlplus strmadmin/strmadmin@orcl
create database link target connect to strmadmin identified by strmadmin using 'target';
create database link target2 connect to strmadmin identified by strmadmin using 'target2';

        

        3.2)建立从数据库的数据链

#以strmadmin身份,登陆从数据库。
Sqlplus strmadmin/strmadmin@target
create database link orcl connect to strmadmin identified by strmadmin using 'orcl';


        4). 启动归档日志   

alter database add supplemental log data;


    8. 使用oracle自带的管理器来建立流复制相关的进程

        1). 启动orcl 实例的dbconsole

        


        2). 点击 Database Control – orcl, 启动em


        3). 在打开的浏览器窗口中用 strmadmin 用户登陆


        4). 点击数据移动

        5). 选择 ‘流’ – '设置' 


        6). 选择 复制方案,下面的主机身份证实输入计算机管理员的用户名和密码,并勾选另存为首选身份证实。

             而后点击继续。


        7).  在包含方案中选择馆系统用户(个人是 nt_gxt)

        8). 进行配置


        9). 设置当即启动


        10). 若是最后一步提交时报以下错误

执行语句(execute MGMT_USER.MAKE_EM_USER('STRMADMIN');),用系统用户登陆orcl实例执行。


已一样的方法为target2建立进程。实现多实例实时同步。


注意:

11g数据库空表导出问题。

Sql代码

查看

show parameter deferred_segment_creation;

修改

alter system set  deferred_segment_creation=false;

三个实例都完成后,服务启动状况,如图所示

最后一张oracle原理图

相关文章
相关标签/搜索