`
king_tt
  • 浏览: 2234180 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle流复制配置最佳实践

 
阅读更多

一、通用配置

1.使用Oracle10.2.0.4版本,并且安装所有关键补订包

2.下游捕获需要源和目标库运行在相同平台上

3.准备源和目标数据库的redo logs

(1)配置源和目标库的archivelog模式

(2)配置本地归档目标路径,log_archive_dest_1参数,不要使用flash recovery area。

4.建立流转用表空间:对于下游捕获,只在下游捕获数据库建立;对于上游捕获,源和目标库都建立

CREATE TABLESPACE streams_ts DATAFILE '/ora_data1/migopt/stream01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED

LOGGING

PERMANENT

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

BLOCKSIZE 8K

SEGMENT SPACE MANAGEMENT AUTO

FLASHBACK ON;

5.建立流管理员数据库用户

create user streamsadmin identified by streamsadmin default tablespace streams_ts temporary tablespace temp;

6.授予流管理权限和DBA权限

execute DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STREAMSADMIN');

grant DBA to streamsadmin;

7.设置关键的初始化参数

AQ_TM_PROCESSES# 1

DB_NAME# SELECT NAME FROM V$DATABASE;

DB_DOMAIN# com

GLOBAL_NAME# TRUE

COMPATIBLE# 10.2

JOB_QUEUE_PROCESSES#建议最小值是4

_JOB_QUEUE_INTERVAL# 1

TIMED_STATISTICS# TRUE

STATISTICS_LEVEL# TYPICAL

SHARED_POOL_SIZE#最小256M

STREAMS_POOL_SIZE#最小256M

8.建立源和目标库之间的数据库链

(1)用streamsadmin登录目标数据库确认全局数据库名

select * from global_name;

(2)用streamsadmin登录源数据库建立从源到目标的数据库链,数据库链的名字是上一步的global_name

create database link <global_name_d>

connect to streamsadmin identified by streamsadmin

using '<TNSNAMES.ORA alias entry>';

(3)在源数据库上运行下面的查询来验证数据库链连通

select * from dual@<db_link_name>;

(4)用streamsadmin登录目标数据库

(5)建立从目标到源的数据库链:下游捕捉需要建立;上游捕捉可选建立

create database link <global_name_s>

connect to streamsadmin identified by streamsadmin

using '<TNSNAMES.ORA alias entry>';

(6)在目标数据库上运行下面的查询来验证数据库链连通

select * from dual@<db_link_name>;

9.用streamsadmin登录在源和目标库上建立目录对象

CREATE DIRECTORY streams_dir as '/ora_data1';#目标

CREATE DIRECTORY streams_dir as '/db';#源

10.如果选择复制DDLs,需要处理源和目标库上对象或表空间名字不一致的问题

(1)避免系统生成约束或索引的名字

(2)数据库间保持相同的表空间名字或者使用一个DDL handler来显式的处理不一致的名字

二、建议的下流捕获配置

1.确认步骤一的所有配置

2.在源和目标库上修改初始化参数

源数据库:

LOG_ARCHIVE_DEST_1=

'LOCATION=+ENG/streamssrc10g/

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

MANDATORY'

LOG_ARCHIVE_DEST_2=

'SERVICE=streamsdest10g_halinux06.us.oracle.com

LGWR ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=streamsdest10g'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=DEFER

LOG_ARCHIVE_CONFIG='SEND, DG_CONFIG=(streamssrc10g,streamsdest10g)'

LOG_ARCHIVE_MAX_PROCESSES=4

# SERVICE是TNS服务名

# DG_CONFIG里面写两个库的db_unique_name

目的数据库:

LOG_ARCHIVE_DEST_1=

'LOCATION=use_db_recovery_file_dest

VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)'

LOG_ARCHIVE_DEST_2=

'LOCATION=+ENG/streamsdest10g/arch_srl_streamss/

VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_CONFIG='RECEIVE, DG_CONFIG=(streamssrc10g,streamsdest10g)'

LOG_ARCHIVE_MAX_PROCESSES=4

3.在下游数据库配置standby redo logs

(1)在源数据库上查询v$log视图找到redo log groups的个数,用下面的公式计算SRLs的数量

Number of SRLs = sum of all production online redo log groups for each thread + number of threads

# threads即instance

(2)在下游数据库里添加standby redo logs

ALTER DATABASE ADD STANDBY LOGFILE GROUP 4

('+ENG/streamsdest10g/standbylog/srl_m1.dbf', '+ENG/streamsdest10g/standbylog/srl_m2.dbf')

SIZE 1024M;

(3)查询v$standby_log视图验证日志组和状态

SELECT GROUP#,SEQUENCE#,STATUS FROM V$STANDBY_LOG;

初始状态下,sequence#为0,status为UNASSIGNED

4.在源数据库上起用远程归档重做日志目标

(1)开始传送redo数据

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE' SCOPE=BOTH;

(2)切换日志文件

ALTER SYSTEM SWITCH LOGFILE;

(3)查询v$archive_dest_status验证归档日志目标

SELECT DEST_ID, DEST_NAME, DESTINATION, DATABASE_NAME, SRL, ERROR FROM V$ARCHIVE_DEST_STATUS;

5.在下游库上复制模式,用streamsadmin在下游数据库上执行:

BEGIN

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(

SCHEMA_NAMES=> 'TEST1,TEST2,TEST3,TEST4,TEST5,TEST6',#复制的模式名

SOURCE_DATABASE=> 'STREAMSS.US.ORACLE.COM',#源库的GLOBAL_NAME

SOURCE_DIRECTORY_OBJECT=> 'STREAMS_DIR',

DESTINATION_DATABASE=> 'STREAMSD.US.ORACLE.COM',#目标库的GLOBAL_NAME

DESTINATION_DIRECTORY_OBJECT=> 'STREAMS_DIR',

CAPTURE_QUEUE_NAME=> 'DS_STREAMS_QUEUE',

APPLY_QUEUE_NAME=> 'DS_STREAMS_QUEUE',

BI_DIRECTIONAL=> FALSE,

INCLUDE_DDL=> FALSE );

END;

/

#可以通过查询dba_recoverable_script视图和两个库上的alert.log文件来监控执行过程,也可以在过程运行时查询下游库上的STREAMS_BUILD_STATUS视图

CREATE OR REPLACE VIEW STREAMS_BUILD_STATUS AS

SELECT TO_CHAR(rs.creation_time,'HH24:Mi:SS MM/DD/YY') CREATE_DATE,

rs.status, rs.done_block_num||' of '||rs.total_blocks||' Steps Completed' PROGRESS,

TO_CHAR(to_number(sysdate-rs.creation_time)*86400,9999.99) ELAPSED_SECONDS,

substr(to_char(rsb.forward_block),1,100) CURRENT_STEP,

rs.invoking_package||'.'||rs.invoking_procedure PROCEDURE, rs.script_id

FROM DBA_RECOVERABLE_SCRIPT rs,

DBA_RECOVERABLE_SCRIPT_BLOCKS rsb

WHERE rs.script_id = rsb.script_id AND rsb.block_num = rs.done_block_num + 1;

6.在下游库上为捕获进程配置实时挖掘,用streamsadmin在下游数据库上执行:

BEGIN

DBMS_CAPTURE_ADM.SET_PARAMETER(

capture_name => 'DS_REALTIME_CAPTURE',

parameter => 'downstream_real_time_mine',

value => 'y');

END;

/

7.验证下游数据库

(1)在源库上切换日志

ALTER SYSTEM SWITCH LOGFILE;

(2)查询下游库的v$standby_log视图

SELECT GROUP#,SEQUENCE#, FIRST_TIME, FIRST_CHANGE#, LAST_CHANGE#, ARCHIVED,STATUS FROM V$STANDBY_LOG;

#如果FIRST_CHANGE#, LAST_CHANGE#变化,则说明实时挖掘下游捕捉正常配置

三、建议的上游捕捉配置

1.确认步骤一的所有配置

2.在源和目标库上修改初始化参数

源数据库:

LOG_ARCHIVE_DEST_1=

'LOCATION=+ENG/streamssrc10g/archivelog/

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

MANDATORY'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_MAX_PROCESSES=4

目的数据库:

LOG_ARCHIVE_DEST_1=

'LOCATION=+CX700/streamsdestb10g/

VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

3.复制模式,用streamsadmin在源数据库上执行:

BEGIN

DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(

SCHEMA_NAMES=> 'TEST1,TEST2,TEST3,TEST4,TEST5,TEST6',#复制的模式名

SOURCE_DATABASE=> 'STREAMSS.US.ORACLE.COM',#源库的GLOBAL_NAME

SOURCE_DIRECTORY_OBJECT=> 'STREAMS_DIR',

DESTINATION_DATABASE=> 'STREAMSD.US.ORACLE.COM',#目标库的GLOBAL_NAME

DESTINATION_DIRECTORY_OBJECT=> 'STREAMS_DIR',

BI_DIRECTIONAL=> FALSE,

INCLUDE_DDL=> FALSE );

END;

/

#可以通过查询dba_recoverable_script视图和两个库上的alert.log文件来监控执行过程,也可以在过程运行时查询下游库上的STREAMS_BUILD_STATUS视图

CREATE OR REPLACE VIEW STREAMS_BUILD_STATUS AS

SELECT TO_CHAR(rs.creation_time,'HH24:Mi:SS MM/DD/YY') CREATE_DATE,

rs.status, rs.done_block_num||' of '||rs.total_blocks||' Steps Completed' PROGRESS,

TO_CHAR(to_number(sysdate-rs.creation_time)*86400,9999.99) ELAPSED_SECONDS,

substr(to_char(rsb.forward_block),1,100) CURRENT_STEP,

rs.invoking_package||'.'||rs.invoking_procedure PROCEDURE, rs.script_id

FROM DBA_RECOVERABLE_SCRIPT rs,

DBA_RECOVERABLE_SCRIPT_BLOCKS rsb

WHERE rs.script_id = rsb.script_id AND rsb.block_num = rs.done_block_num + 1;

四、配置后任务

1.设置捕获进程的CHECKPOINT_RETENTION_TIME参数

BEGIN

DBMS_CAPTURE_ADM.ALTER_CAPTURE(

capture_name => 'DS_REALTIME_CAPTURE',

checkpoint_retention_time => 7 );#缺省为60

END;

2.设置应用并行度为4

BEGIN

DBMS_APPLY_ADM.SET_PARAMETER('APPLY$_STREAMSS_36,

'PARALLELISM','4');

END;

/

3.运行流健康检查脚本

Oracle Metalink Note 273674.1.

五、调整网络配置参数

1.在所有服务器上设置TCP/IP网络参数

(1)设置读写缓冲区最大值网络核心参数

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

(2)设置TCP/IP最小、缺省、最大缓冲区大小

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 65536 16777216

#编辑/etc/sysctl.conf文件,执行sysctl–p命令生效

2.设置Oracle Net Session Data Unit (SDU)大小

修改源库的SQLNET.ORA文件,例如:

streamsdest10g_halinux06.us.oracle.com=

(DESCRIPTION=

(SDU=32767)

(ADDRESS=(PROTOCOL=tcp)

(HOST=halinux06vip)

(PORT=1521))

(CONNECT_DATA=

(SERVER = DEDICATED)

(SERVICE_NAME = streamsd.us.oracle.com))

)

修改目标库的LISTENER.ORA文件,例如:

SID_LIST_listener_name=

(SID_LIST=

(SID_DESC=

(SDU=32767)

(GLOBAL_DBNAME=streamsd.us.oracle.com)

(SID_NAME=STRM10g6)

(ORACLE_HOME=/usr/oracle)))

3.设置TCP Socket Buffer大小

公式(例如带宽1Gbps,RTT 25毫秒):

BDP= 1,000 Mbps * 25msec (.025 sec)1,000,000,000 * .02525,000,000 Megabits / 8 = 3,125,000 bytes

socket buffer size = 3 * bandwidth * delay

= 3,125,000 * 3

= 9,375,000 bytes

修改两个库的SQLNET.ORA文件

streamsdest10g_halinux06.us.oracle.com =

(DESCRIPTION=

(SDU=32767)

(SEND_BUF_SIZE=9375000)

(RECV_BUF_SIZE=9375000)

(ADDRESS=(PROTOCOL=tcp)

(HOST=halinux06vip)(PORT=1521))

(CONNECT_DATA=

(SERVER = DEDICATED)

(SERVICE_NAME = streamsd.us.oracle.com)))

4.设置网络设备队列大小

例如:

echo 20000 > /proc/sys/net/core/netdev_max_backlog

echo 1 > /proc/sys/net/ipv4/route/flush

ifconfig eth0 txqueuelen 10000

分享到:
评论

相关推荐

    Oracle_RAC_最佳实践

    ### Oracle RAC 安装与配置最佳实践 Oracle RAC是Oracle数据库的一个组件,它允许多个数据库实例同时访问同一数据库,从而提高性能、可用性和可扩展性。以下是在Linux上安装和配置Oracle RAC时应遵循的最佳实践: ...

    AnyBackup Oracle定时备份恢复最佳实践.docx

    【Oracle定时备份恢复最佳实践】 在IT行业中,数据库管理是至关重要的,尤其是对于Oracle这样的大型企业级数据库系统。AnyBackup是一款强大的数据保护解决方案,它提供了针对Oracle数据库的定时备份和恢复功能,以...

    Oracle Data Guard最佳实践

    以下是对Oracle Data Guard六项最佳实践的详细说明: 1. **配置保护模式** 数据保护模式的选择是Data Guard部署的关键。有三种基本模式:最大保护、最大性能和最大可用性。最大保护模式确保零数据丢失,但可能牺牲...

    Oracle_GoldenGate ASM抽取方法最佳实践

    以下是与ASM集成时,Oracle GoldenGate可采用的四种抽取方法的最佳实践。 1. 使用ASM用户访问捕获数据库事务 首先,通过ASM用户访问可以捕获数据库事务。这涉及到配置Oracle GoldenGate以使用ASM用户进行访问,以便...

    Nutanix超融合Oracle数据库平台最佳架构实践.pdf

    此部分可能涉及在vSphere环境下运行Oracle数据库的最佳实践,包括虚拟机配置、资源调度和DRS(动态资源调度)的使用,以及如何与Nutanix平台集成以优化性能和可靠性。 5. **Oracle RAC** (Oracle Real Application...

    Oracle 10.2 ASM 最佳实践 最终版本

    ### Oracle 10.2 ASM 最佳实践 #### 自动存储管理概述与技术最佳实践 在Oracle Database 10g Release 2中,通过自动存储管理(ASM)大大简化了数据库的存储管理和配置任务。ASM提供了内置到Oracle数据库内核中的文件...

    基于 VMware 部署 Oracle 数据库 最佳实践

    具体的最佳实践指南会详细介绍vSphere环境下的Oracle数据库部署策略,包括如何配置虚拟机的内存和CPU,以及如何优化存储和网络性能。对于Oracle数据库管理员来说,了解这些最佳实践是非常重要的,它可以让他们在享受...

    Oracle 白皮书 ADG 同步复制技术

    4. 配置最佳实践: - 调整TCP套接字缓冲区大小至BDP(Bandwidth Delay Product)的3倍,可以优化网络传输效率。 - 配置备用重做日志,确保有足够的日志空间用于数据同步。 - 将SDU(System Data Unit)大小设置为...

    Oracle (ADG)OGG配置下游集成提取的最佳实践

    下面我们将深入探讨"Oracle (ADG) OGG配置下游集成提取的最佳实践"。 1. **理解Oracle Active Data Guard**: ADG是一种Oracle数据库特性,用于创建和维护一个与主数据库同步的备用数据库。它提供了灾难恢复和业务...

    单实例迁移到Oracle RAC最佳实践

    本文将详细探讨从单实例迁移到Oracle RAC环境的最佳实践。 一、环境预览 1.1. 配置预览 在迁移之前,了解目标和源环境是至关重要的。这包括数据库的版本、网络配置和服务配置。以下是详细的配置步骤: 1.1.1. ...

    Oracle 白皮书 ADG 异步复制技术

    **配置最佳实践** 1. **设置TCP套接字缓冲区大小:**为了最大化网络效率,应将TCP套接字缓冲区大小设置为BDP(带宽延迟产品)的3倍。 2. **配置备用重做日志:**确保备用数据库有足够的重做日志文件,以避免因日志...

    oracle高级复制.raroracle高级复制.rar

    压缩包中的“222.rar”可能包含一些辅助资料,如示例配置、脚本或工具,而“oracle高级复制文档.rar”则很可能包含了关于以上复制技术的详细文档,包括概念介绍、配置步骤、最佳实践以及常见问题解答等。 在学习...

    ogg最佳实践

    为了确保Oracle GoldenGate部署能够高效、稳定地运行,最佳实践是必须的。下面根据提供的文件内容,详细解析Oracle GoldenGate的几个关键最佳实践: 1. 进程监控 监控GoldenGate进程是确保数据同步方案稳定运行的...

    oracle 11g安装配置

    Oracle 11g的安装配置...确保在安装和配置过程中遵循最佳实践,保持系统的稳定性和安全性。同时,根据实际需求和系统资源合理调整配置参数。在完成安装后,定期检查和更新系统补丁,以确保Oracle数据库的安全和性能。

    Oracle Streams 11g数据复制

    ### Oracle Streams 11g数据复制详解 #### 一、Oracle Streams概述 Oracle Streams 是一个高级的数据集成解决...随着技术的发展,Oracle也在不断优化其产品线,因此保持对最新技术和最佳实践的关注也是非常重要的。

    使用VirtualBox在Oracle-Linux-5.7上安装Oracle-Database-11g-Release-2-RAC的最佳实践.

    操作系统安装及Oracle安装前提设置中,需要按照Oracle的标准最佳实践进行操作系统级别的配置,包括必要的系统用户和组的创建、内核参数的调整、以及安装必要的软件包和依赖。在操作系统安装步骤完成后,要进行Oracle...

    基于Oracle数据复制技术的研究与应用.pdf

    它们可以帮助理解复制的底层原理,掌握最佳实践,并解决实施过程中遇到的问题。 综上所述,Oracle数据复制技术是构建分布式数据库系统的关键组成部分,对于提高数据共享、性能和容错能力具有重要作用。通过合理应用...

    ogg sqlserver-oracle mysql-oracle mysql-mysql的同步配置参考

    Oracle GoldenGate是一款强大的数据复制和实时数据集成工具,它能够实现不同数据库系统之间的实时或近实时的数据同步。在本配置参考中,我们将探讨如何...遵循正确的步骤和最佳实践,可以确保数据同步的高效和可靠。

    NBU备份oracle详细配置文档

    NetBackup (NBU) 是一款强大的企业级备份和恢复解决方案,用于保护各种数据源,包括 Oracle 数据库。本文将详细阐述如何使用 NBU 配置 Oracle ...在实际操作中,务必遵循最佳实践,并定期测试备份以验证其完整性。

    使用goldengate实现Oracle与Mysql之间数据迁移最佳实践手册

    ### 使用Goldengate实现Oracle与MySQL之间数据迁移最佳实践手册 #### 一、概述 本文旨在详细介绍如何利用Oracle GoldenGate工具实现Oracle与MySQL之间的数据迁移。GoldenGate是一款强大的数据复制和迁移工具,能够...

Global site tag (gtag.js) - Google Analytics