Oracle DG和OGG区别

ADG和OGG的新特性,目前越来越多的客户重视灾备数据站点的建设,由于存储级灾备和操作系统级灾备的局限性(主要是带宽高及事务完整性不容易保证),因此在选择甲骨文的应用级灾备时,通常考虑的是DataGuard和GoldenGate两款软件的实现,由于这两款软件也在快速的发展和更新,因此我们先来看一下最新版本 ADG和OGG的新特性:

Oracle DataGuard 11g的新特性

  • 物理备库可实时查询
  •  加快备库备份的速度
  •  快照备库
  •  提高Redo Apply的性能
  •  支持的数据类型更多
  •  更快速执行失败切换

Oracle GoldenGate 11gR2的新特性

  •  新增整合捕捉进程,支持多线程,提供旁路顺流模式,不影响生产库性能;
  •   预建立自动冲突检测机制,提供自动解决模块,降低部署成本;
  •   支持数据库对象中文名称,可实现大小写敏感;
  •   支持OEM12c 的Plug-in;
  •    AES128, AES192, and AES256 加密;
  •   优化Pump Trail 模式,降低网络流量;
  •    支持平台,功能等方面的增强。

结合一位兄弟作的对比表格,作了一些完善,对比DG 10g和GoldenGate的大致优缺点:

Oracle DataGuard Oracle GoldenGate
原理 复制归档日志或在线日志 抽取在线日志中的数据变化,转换为GGS自定义的数据格式存放在本地队列或远端队列中
稳定性 作为灾备的稳定性极高 稳定性不如DataGuard
维护 维护简单,极少出现问题 命令行方式,维护较复杂
对象支持 完全支持 部分对象需手工创建于维护
备份端可用性 备份端处于恢复或只读状态,在只读状态下不能同时进行恢复。 两端数据库是活动的,备份端可以提供实时的数据查询及报表业务等,从而提高系统整体的业务处理能力,充分利用备份端的计算能力,提升系统整体业务处理性能。可以实现两端数据的同时写入
接管时间 数据库工作在mount状态下,接管业务时,数据库要open 可实现立即接管
复制方式 通过恢复机制实现的,无法实现同步复制 GoldenGate可以提供秒一级的大量数据实时捕捉和投递,异步复制方式,无法实现同步复制
资源占用 复制通过数据库的LGWR进程或ARCN进程完成,占用数据库少量资源 业务高峰时在数据抽取转换时消耗系统资源较多,低峰时占用较小
异构数据库支持 单一数据库解决方案,仅运行在Oracle数据库上,源端和目标端操作系统必须相同,版本号可以不同 可以在不同类型和版本的数据库之间进行数据复制。如ORACLE,DB2,SYBASE,SQL SERVER,INFORMIX、Teradata等。
适用于不同操作系统如windows、linux、unix、aix等
带宽占用 使用Oracle Net传输日志,可通过高级压缩选项进行压缩,压缩比在2-3倍 利用TCP/IP传输数据变化,集成数据压缩,提供理论可达到9:1压缩比的数据压缩特性
拓扑结构 可以实现一对多模式 可以实现一对一、一对多、多对一、双向复制等多种拓扑结构

 

11g的ADG当然又作了很多新的改进,ADG最大的特点还是能做到同步复制,而OGG的数据复制在亚秒级,还是只能算作异步哦。

转载自:https://www.it610.com/article/1282259929486344192.htm

其他参考:http://www.360doc.com/content/19/0716/08/13123233_849075704.shtml

Oracle设置Shared Pool的大小

Shared Pool的大小设置规则如下:

1.查到shared pool设置的合理值,语句如下:

select ‘Shared Pool’ component,

shared_pool_size_for_estimate estd_sp_size,

estd_lc_time_saved_factor parse_time_factor,

case

when current_parse_time_elapsed_s + adjustment_s < 0 THEN

0

ELSE

current_parse_time_elapsed_s + adjustment_s

END response_time

FROM (select shared_pool_size_for_estimate,

shared_pool_size_factor,

estd_lc_time_saved_factor,

a.estd_lc_time_saved,

e.VALUE / 100current_parse_time_elapsed_s,

c.estd_lc_time_saved – a.estd_lc_time_saved adjustment_s

from v$shared_pool_advice a,

(select * from v$sysstat where NAME = ‘parse time elapsed’) e,

(select estd_lc_time_saved

from v$shared_pool_advice

where shared_pool_size_factor = 1) c);

2.设置上个SQL语句中查到的PARSE_TIME_FACTOR首次等于1的记录所在行的ESTD_SP_SIZE的值为shared pool。

3.设置语句如下:

alter system set shared_pool_size=XXX scope=spfile;或者alter system set shared_pool_size=XXX scope=both;

Oracle计划请求信息

SELECT fcp.concurrent_program_name 并发代码,
decode(fcre.description,
NULL,
fcpt.user_concurrent_program_name,
fcre.description || ‘ (‘ || fcpt.user_concurrent_program_name || ‘)’) 请求名称,
fu.user_name 用户名,
conc.request_id 请求ID,
conc.root_request_id 父请求ID,
decode(fcre.status_code,
‘D’,
‘Cancelled’,
‘U’,
‘Disabled’,
‘E’,
‘Error’,
‘M’,
‘No Manager’,
‘R’,
‘Normal’,
‘H’,
‘On Hold’,
‘W’,
‘Paused’,
‘B’,
‘Resuming’,
‘I’,
‘Scheduled’,
‘Q’,
‘Standby’,
‘S’,
‘Suspended’,
‘X’,
‘Terminated’,
‘T’,
‘Terminating’,
‘A’,
‘Waiting’,
‘G’,
‘Warning’) 请求状态,

fcre.argument_text 请求参数,
sche.job_class 计划类型,
sche.class_info 频率

FROM apps.fnd_concurrent_programs fcp,
apps.fnd_concurrent_programs_tl fcpt,
apps.fnd_concurrent_requests fcre,
apps.fnd_user fu,
(SELECT owner_req_id,
date1 start_date,
date2 end_date,
decode(class_type, ‘S’, ‘Specific Days’, ‘P’, ‘Periodically’) job_class,
decode(class_type,
‘P’,
substr(class_info, 1, instr(class_info, ‘:’) – 1) ||
decode(substr(class_info, instr(class_info, ‘:’) + 1, 1),
‘D’,
‘Days’,
‘H’,
‘Hours’,
‘N’,
‘Minutes’,
‘M’,
‘Months’,
‘W’,
‘Weeks’),
‘S’,
class_info) class_info
FROM apps.fnd_conc_release_classes fcr

WHERE class_type IN (‘S’, ‘P’) –Periodically and Specific Concurrent
AND enabled_flag = ‘Y’
AND (date2 IS NULL OR date2 > SYSDATE)
AND owner_req_id IS NOT NULL) sche,

(SELECT MAX(request_id) request_id, root_request_id
FROM apps.fnd_concurrent_requests
WHERE root_request_id IN
(SELECT nvl(root_request_id, request_id) request_id
FROM apps.fnd_concurrent_requests
WHERE request_id IN
(SELECT owner_req_id
FROM apps.fnd_conc_release_classes fcr
WHERE class_type IN (‘S’, ‘P’) –Periodically and Specific Concurrent
AND enabled_flag = ‘Y’
AND (date2 IS NULL OR date2 > SYSDATE)
AND owner_req_id IS NOT NULL)
AND status_code <> ‘D’)
GROUP BY root_request_id) concWHERE fcp.concurrent_program_id = fcpt.concurrent_program_id
AND fcpt.language = ‘ZHS’
AND fcp.concurrent_program_id = fcre.concurrent_program_id
AND fcre.status_code NOT IN (‘D’, ‘X’, ‘U’) –Cancelled and Terminated and Disabled
AND fcre.request_id = conc.request_id
AND conc.request_id = sche.owner_req_id
AND fcre.requested_by = fu.user_id

Oracle ebs控制科目输入(ADI+人工)方案

背景:
客户需要限制某些科目只能从接口进入系统,不能手工及类手工方式录入。

思路:

寻求标准方案;客户化ADI。

标准方案:

先查看科目值集处对科目属性的控制,其中有一个控制项是“第三方控制账户”,控制账户内可选择“限制人工日记帐”(此时想看能否可以选择来源进行控制,于是通过sql方式【select * from fnd_lookups t where t.meaning like ‘%限制人工日记%’】找到控制账户的lookup_type”GL_CONTROL_ACCOUNT_SOURCES”,发现不能新增来源),于是从字面理解是否只会对日记账来源为“人工”的进行控制。

测试结果:前台界面确实控制住不能录入,并弹窗提示“您不能使用控制账户。请选择其他账户”,满足需求。

然后通过ADI导入,无论ADI的来源选择何种,均会提示“您不能使用控制账户。请选择其他账户”,满足需求。

最后通过接口表的方式,通过设置过“限制人工日记账”的科目导入生成账务,可以正常生成日记账,满足需求。

完美解决问题,不再讨论客户化的方式。

技术笔记(小潘的技术记录博客)