首页 > 开发 > 综合 > 正文

不重建快照的情况下可以修改主表(如添加字段)

2024-07-21 02:34:14
字体:
来源:转载
供稿:网友
  通常假如需要对主表进行修改的话,如增加字段,修改字段数据类型;这要求我们将快照/复制停掉,甚至删除快照。这样给数据同步带来麻烦。非凡是主表数据很多的话,通常采用的方法是将数据导出,再建立on PRebuilt table,再导入数据,建立刷新环境。 这需要很多时间和回滚段等资源,还轻易出错。  我们采用prebuilt table创建的快照和物化视图可以避免这样的情况。  master table 是scott.trade 已经建立了mlog  snapshot on prebuit table是zhangbin.trade;快照建立在prebuilt table是本方法的前提。  SQL>show user  SYS  在主表上添加字段,且之前作了刷新——保证主表和快照数据一致  SQL> alter table scott.trade add zb varchar2(20) default 'ab';  Table altered.  删除快照,但on prebult table还在  SQL> drop snapshot zhangbin.trade;  Materialized view dropped.  SQL> select count(*) from slog$;
  COUNT(*)
  ----------
  0  在prebult table上添加字段,执行同样的ddl  SQL> alter table zhangbin.trade add zb varchar2(20) default 'ab';  Table altered.  SQL> connect zhangbin/zhangbin  Connected.  重新创建快照  SQL> create snapshot trade on prebuilt table as select * from scott.trade;  Materialized view created.  快速刷新成功。  SQL> execute dbms_snapshot.refresh('trade','fast');  PL/SQL procedure sUCcessfully completed.  SQL> show user  USER is "ZHANGBIN"  SQL> update scott.trade set zb='ddd';  13 rows updated.  SQL> commit;  Commit complete.  SQL> execute dbms_snapshot.refresh('trade','fast');  PL/SQL procedure successfully completed.  可以参考itpub讨论 http://www.itpub.net/showthread.php?s=&threadid=330470  http://www.dbazine.com/nanda2.Html   也有例子。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表