本文主要讲Streams对数据操纵语言(DML)类型的支持以及对数据类型的支持使用版本9.2-11.1,而且这个文档使用于任何平台。从9.2以后的版本对越来越多的对stream对数据类型和dml类型进行支持
这个文档只要讲述不同版本支持与非支持的数据类型和对DML支持的类型,关于DDL的操作请参阅文档。
Oracle stream的概念与管理
1、范围和应用
作为DBA流的配置和故障排除时的参考。首先要澄清的是,capture进程支持DML类型和应用过程中所支持的数据类型要相匹配。所以我们要区分捕获进程和应用进程的行为。另外在10.1里的意见DBA_STREAMS_NEWLY_SUPPORTED表示他们允许你检查什么新的支持的表。
2、捕获进程
首先capture进程从来不会捕获SYS,SYSTEM或CTXSYS角色的变化。捕获进程捕获DML中INSERT,UPDATE,DELETE,MERGE,和LOB的更新。
下列过程不能捕捉到DML的变化
1、 临时表或对象表
2、 表中段压缩启用
3、 表在闪回归档里
4、 外部表
关于索引组织表(IOTs)
1、 在9i版本中,oracle无法捕获索引的DML更改
2、 在10G中,捕捉进程只可以捕捉一个IOT的更改而且不能包含ROWID,UROWID,用户定义类型(包括对象类型,文献,可变数组,嵌套表)
3、 在版本11.1捕获过程中可以捕捉到一个IOT的更在,只有不含有(10G的参数基础上增加了除XMLCLOB的类型,任何URI类型,空间类型,媒体类型)
CDC的用法
使用CDC视图mine logs包含XML格式会失败
错误为ORA-26783 “列的数据类型不被支持”,在任何版本中,CDC中都不支持XML格式,
捕获进程会捕获一下列的变化
9i
10G
11.1
CHAR
BINARY_FLOAT
FLOAT
NCHAR
BINARY_DOUBLE
CLOB with BASICFILE storage
VARCHAR2
LONG
NCLOB with BASICFILE storage
NVARCHAR2
LONG RAW
BLOB with BASICFILE storage
NUMBER
CLOB
XMLType stored as CLOB
DATE
NCLOB
RAW
UROWID
BLOB
CLOB (fixed width character sets only)
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
捕获进程不能捕捉列的变化的类型:
* SecureFile CLOB, NCLOB, and BLOB
* BFILE
* ROWID
* User-defined types (including object types, REFs, varrays, and nested tables)
* XMLType stored object relationally or as binary XML
Apply进程
由于应用进程不处理DML的调用,畜类LCRs或者用户信息时,限制只适用于数据类型那一层。
当DML表的更改LCRs时,一个应用程序适用于以下数据类型的修改
9i
10G
11.1
CHAR
LONG
FLOAT
NCHAR
BINARY_FLOAT
CLOB with BASICFILE storage
VARCHAR2
BINARY_DOUBLE
NCLOB with BASICFILE storage
NVARCHAR2
LONG RAW
BLOB with BASICFILE storage
NUMBER
NCLOB
XMLType stored as CLOB, object relationally, or as binary XM
DATE
UROWID
CLOB
BLOB
RAW
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
注:SecureFile CLOB,NCLOB,BLOB和虚拟列Oracle 11g数据库的新功能。
一个Apply进程也不允许行LCRs包含以下数据类型的DML更改结果
* SecureFile CLOB,NCLOB SecureFile,和SecureFile的BLOB
* BFILE
* ROWID
*用户定义类型(包括对象的类型,文献,可变数组,和嵌套表)
*以下Oracle提供的类型:任何类型的URI类型,空间类型,和媒体类型