测试场景
本文档建立了针对scott用户的Stream复制环境,如果没有特别声明,以下测试场景均以scott用户身份执行。
建一张表测试
主库
SQL> CREATE TABLE TTT(id NUMBER PRIMARY KEY,
2 name VARCHAR2(50)
3 )
4 /
Table created.
备库
SQL> desc TTT
Name Null? Type
---------- -------- -------------
ID NOT NULL NUMBER
NAME VARCHAR2(50)
表中插入一行数据
主库
SQL> insert into ttt values (1,'storm');
1 row created.
SQL> commit;
Commit complete.
SQL>
备库
SQL> select * from TTT;
ID NAME
---------- --------------------
1 storm
变更一下表的结构,添加一列
主库
SQL> ALTER TABLE TTT ADD(age NUMBER(2));
Table altered
备库
SQL> desc TTT
Name Null? Type
----------- -------- --------------
ID NOT NULL NUMBER
NAME VARCHAR2(50)
AGE NUMBER(2)
将表换一个表空间
主库
SQL> SELECT table_name,tablespace_name FROM user_tables WHERE table_name='TTT';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TTT US
SQL> ALTER TABLE TTT MOVE TABLESPACE tbs_stream;
Table altered
SQL> SELECT table_name,tablespace_name FROM user_tables
WHERE table_name='TTT';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TTT TBS_STREAM
备库
SQL> SELECT table_name,tablespace_name FROM user_tables
WHERE table_name='TTT';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TTT TBS_STREAM
表上Name列建一索引
主库
SQL> CREATE INDEX ttt_name_idx ON TTT(name);
Index created
备库
SQL> SELECT table_name, index_name FROM user_indexes WHERE table_name = 'TTT';
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
TTT TTT_NAME_IDX
TTT SYS_C005721
Rebuild索引测试
主库
SQL> ALTER INDEX ttt_name_idx REBUILD;
Index altered
备库
SQL> SELECT table_name, index_name FROM user_indexes WHERE table_name = 'TTT';
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
TTT TTT_NAME_IDX
TTT SYS_C005721
索引换一个表空间测试
主库
SQL> ALTER INDEX ttt_name_idx REBUILD TABLESPACE tbs_stream;
Index altered
备库
SQL> SELECT table_name,index_name,tablespace_name FROM user_indexes
WHERE table_name = 'TTT';
TABLE_NAME INDEX_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
TTT TTT_NAME_IDX TBS_STREAM
TTT SYS_C005721 USERS
删除索引测试
主库
SQL> DROP INDEX ttt_name_idx;
Index dropped
备库
SQL> SELECT table_name,index_name,tablespace_name FROM user_indexes
WHERE table_name = 'TTT';
TABLE_NAME INDEX_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
TTT SYS_C005721 USERS
删除表测试
主库
SQL> DROP TABLE ttt;
Table dropped
备库
SQL> DESC ttt;
Object ttt does not exist.
建一张带有LOB类型字段的表测试
主库
SQL> CREATE TABLE tttclob(id NUMBER PRIMARY KEY, memo CLOB);
Table created
备库
SQL> DESC tttclob;
Name Null? Type
----------- -------- --------------
ID NOT NULL NUMBER
MEMO CLOB
表中插入一行数据
主库
SQL> INSERT INTO tttclob VALUES(1,'clob_test');
1 row inserted
SQL> commit;
Commit complete
备库
SQL> SELECT * FROM tttclob;
ID MEMO
---------- --------------------------------------------------------------------------------
1 clob_test
创建Type测试
主库
SQL> CREATE or REPLACE TYPE ttttype;
2 /
Type created
备库
SQL> SELECT * FROM user_types WHERE type_name='TTTTYPE';
TYPE_NAME TYPE_OID TYPECODE ATTRIBUTES METHODS PREDEFINED INCOMPLETE FINAL INSTANTIABLE SUPERTYPE_OWNER SUPERTYPE_NAME LOCAL_ATTRIBUTES LOCAL_METHODS TYPEID
------------------------------ -------------------------------- ------------------------------ ---------- ---------- ---------- ---------- ----- ------------ ------------------------------ ------------------------------ ---------------- ------------- --------------------------------
TTTTYPE 1B36AAF10DA8301DE040A8C0289A77B4 OBJECT 0 0 NO YES YES YES
删除Type测试
主库
SQL> DROP TYPE ttttype;
Type dropped
备库
SQL> SELECT * FROM user_types WHERE type_name='TTTTYPE';
TYPE_NAME TYPE_OID TYPECODE ATTRIBUTES METHODS PREDEFINED INCOMPLETE FINAL INSTANTIABLE SUPERTYPE_OWNER SUPERTYPE_NAME LOCAL_ATTRIBUTES LOCAL_METHODS TYPEID
------------------------------ -------------------------------- -
至此,实验过程完毕,从此篇文章可以看出,streams搭建成功之后,基于table方式的数据同步实现,无论主库进行了任何修改,备库可以马上成功检验。这里引用《一步一步学ORACLE STREAMS》里的结语:
通过如上的测试可以看出stream的功能还是十分强大的,通过配置Oracle Stream可以更大的提升数据库的可用性和安全性,如此一个好用且不用花费高昂额外费用的功能还是很值得一用的。
ORACLE STREAMS的实验到这里告一段落,接下来的是ORACLE官方文档有关STREAMS的理论知识学习,任重而道远,同志继续努力。
阅读(677) | 评论(0) | 转发(0) |