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

  1. 环境:

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

  2. 任务要求:

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

  3. 选择的技术:

    Oracle Stream Replication(流复制)

  4. 创建另外两个实例

    源实例:orcl

    目标1:target

    目标2:target2

  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;

oracle数据库多实例实时同步(利用oracle管理平台实现)_第1张图片

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

oracle数据库多实例实时同步(利用oracle管理平台实现)_第2张图片

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

      oracle数据库多实例实时同步(利用oracle管理平台实现)_第3张图片


    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

        oracle数据库多实例实时同步(利用oracle管理平台实现)_第4张图片


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

oracle数据库多实例实时同步(利用oracle管理平台实现)_第5张图片


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

oracle数据库多实例实时同步(利用oracle管理平台实现)_第6张图片


        4). 点击数据移动

oracle数据库多实例实时同步(利用oracle管理平台实现)_第7张图片

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

oracle数据库多实例实时同步(利用oracle管理平台实现)_第8张图片


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

             然后点击继续。

oracle数据库多实例实时同步(利用oracle管理平台实现)_第9张图片


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

oracle数据库多实例实时同步(利用oracle管理平台实现)_第10张图片

        8). 进行配置

oracle数据库多实例实时同步(利用oracle管理平台实现)_第11张图片


        9). 设置立即启动

oracle数据库多实例实时同步(利用oracle管理平台实现)_第12张图片


        10). 如果最后一步提交时报如下错误

oracle数据库多实例实时同步(利用oracle管理平台实现)_第13张图片

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


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


注意:

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

Sql代码

查看

show parameter deferred_segment_creation;

修改

alter system set  deferred_segment_creation=false;

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

oracle数据库多实例实时同步(利用oracle管理平台实现)_第14张图片

最后一张oracle原理图

oracle数据库多实例实时同步(利用oracle管理平台实现)_第15张图片

你可能感兴趣的:(oracle数据库多实例实时同步(利用oracle管理平台实现))