ODI如何通过logminer技术从oracle 数据库中抽取增量数据(二)
来源:互联网 发布:一元云购cms 漏洞 编辑:程序博客网 时间:2024/05/21 15:49
在ODI中通过logminer方式进行变化数据捕捉,需要首先做一些基本工作:
1. 修改数据库启动参数:
alter system set global_names=TRUE scope=BOTH;(如果您的系统里有dblink也可以不修改,到时候修改ODI的也可以)。
alter system set job_queue_processes=6 scope=BOTH;
alter system set open_links=4 scope=SPFILE;
alter system set streams_pool_size=200Mscope=BOTH;
alter system set undo_retention=3600 scope=BOTH;
JOB_QUEUE_PROCESSES (current value) + 2
PARALLEL_MAX_SERVERS (current value) + (5 * (the number of change sets planned))
PROCESSES (current value) + (7 * (the number of change sets planned))
SESSIONS (current value) + (2 * (the number of change sets planned))
Open_cursors一定要大一点(建议1000以上),尤其是10.2.0.4之前的版本。
2. 数据库必须在归档模式下,在sqlplus下执行:
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
如果返回如上,恭喜您,不用做这一步了,否则要执行:
SQL>conn /as sysdba
Connected.
SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup mount
ORACLE instance started.
Total System Global Area 301989888 bytes
Fixed Size 1267140 bytes
Variable Size 163580476 bytes
Database Buffers 130023424 bytes
Redo Buffers 7118848 bytes
Database mounted.
SQL>alter database archivelog;
Database altered.
SQL> alter database force logging;
Database altered.
SQL> alter database add supplemental log data;
SQL> alter database open;
Database altered.
且记,如果是生产系统,一定不要在工作时间做这样的事情,而且做前一定和管理员和其它用户沟通好,如果您不小心将生产系统弄瘫了,临被干掉前别说俺没提醒过您。
3. 在数据库系统里面为ODI的变化数据准备存储空间,为了避免对现有生产系统产生影响,建议单独为其建立一个表空间。
create tablespace TS_ODI
datafile '/uo1/app/oracle/oradata/test/ts_odi.dbf'
size8192m
autoextend on
next32mmaxsize20480m
extent management local;
表空间的大小和您的业务量以及您存储多长时间的变化数据有关,具体场景最好在您的测试环境里面先试试,当然了,如果空间不是很紧张,尽量大一点。
4. 为变化数据捕捉建立一个用户,该用户将被ODI用来连接数据库,并获取变化数据。
CREATE USER cdcadmin
IDENTIFIED BY cdcadmin
DEFAULT TABLESPACE TS_ODI
TEMPORARY TABLESPACE temp
为了配置和获取变化数据,该用户需要以下权限:
-- system privs
GRANT create session TO cdcadmin;
GRANT create table TO cdcadmin;
GRANT create sequence TO cdcadmin;
GRANT create procedure TO cdcadmin;
GRANT create any job TO cdcadmin;
-- role privs
GRANT execute_catalog_role TO cdcadmin;
GRANT select_catalog_role TO cdcadmin;
-- object privileges
GRANT execute ON dbms_cdc_publish TO cdcadmin;
GRANT execute ON dbms_cdc_subscribe TO cdcadmin;
-- streams specific priv
execute dbms_streams_auth.grant_admin_privilege('CDCADMIN');
grant select on any table to cdcadmin(这里其实只要对生产系统需要捕获数据的schema相关表授权即可,这样设有点大,这里只是为了简单)。
Grant dba to cdcadmin(其实这一步可以不要,但为了操作简单,建议您还是加上,在ODI中启动日志完成后,再把其DBA revoke回去即可,说白了只是在ODI启动日志时需要,一旦启动完成,抓取数据不需要)。
如果管理员坚决不能给您DBA权限,那也可以到knowledge module中修改其step即可,将需要DBA权限的步骤在knowledge module中去掉,让管理员帮忙做一下(其实只有一个步骤需要DBA,也就是这一句话alter database add supplemental log data)。如果管理员连这也不同意,那就没招了,等死吧。
至此,数据库的相关准备工作完成,下面就是ODI的配置工作了,关于ODI repository的配置请参照其随机文档,我们这里假设您的ODI已经做好基本配置了:
1. 打开topology manager,在物理体系架构上建立一个物理服务器(这里我们假设oracle数据库中生产数据存储在sh schema上)。在定义上起个名,输入连接数据库的用户名口令:cdcadmin/cdcadmin.
2. 点击JDBC TAB页:
3. 输入完成后,点击一下右下角的测试,如果通了就ok了。
4. 如下图,打开物理服务器下的物理架构,这里我们物理服务器叫sh,逻辑架构也叫sh。
这是非常关键的一步,如上图中我用红色标出的两个椭圆,上面那个是源系统中实际生产数据所在的schema,下面那个是存储临时对象的那个,也就是我们在数据库里定义的存储临时数据的schema,如果这里您用生产数据所在的schema来做工作架构存储临时数据,对您来讲没啥问题,但估计管理员要追着您打了。
5. 到topology的逻辑体系架构下,建立一个oracle逻辑服务器,我们这里叫ODI.
在上下文里我们将其物理架构定义为SH.SH,如果您的系统里没有上下文(context),自己建一个就是了,然后将对应关系配置好即可。
至此,存盘退出topology manager.
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(二)
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(一)
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(一)
- ODI通过logminer技术从oracle 数据库中抽取增量数据1
- ODI如何通过logminer技术从oracle 9i或者10g中抽取增量数据(三)
- 通过Lotusscript代码从损坏的数据库中抽取数据
- oracle 从数据库中随机抽取数据 随机数
- oracle 增量抽取数据存储过程
- Kettle数据抽取---增量抽取
- ssis数据增量抽取
- 数据增量抽取
- kettle增量抽取数据
- ODI使用技巧_01利用变量实现增量抽取
- ODI使用技巧_01利用变量实现增量抽取
- 从SAP中抽取数据
- Oracle BI基础之ETL数据增量抽取方案
- ODI数据抽取教程_01设置数据源
- ODI数据抽取教程_03定时执行
- 如何才能按时高质量完成一个IT项目呢?
- 《我是一只IT小小鸟》会员书评
- RSS
- 学历太重要了(爆笑篇)
- 一粒沙的爱情
- ODI如何通过logminer技术从oracle 数据库中抽取增量数据(二)
- 设置表单的透明度
- 锁概念 以及 例程说明
- 如何一个空间放两个网站?
- ODI如何通过logminer技术从oracle 9i或者10g中抽取增量数据(三)
- 生活
- 通过JS 获取Mouse Position
- 利用ODI实现SOA中业务流和数据流的松耦合
- 愛,不是缺了就找,累了就換