动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.MySQL5、PostgreSQL8和Oracle10g.
.在listener.ora文件中tcp协议和i.
.ORACLE中如何实现ASCII字符串和1.
.oracle pro*c 学习笔记.
.直接挖掘数据文件的数据.
.解决表空间填充满时出现的ORA-16.
.Linux用作嵌入式操作系统.
.Oracle中审计参数audit_trail的讨.
.ORACLE入门之改数据库的归档方式.
.教你快速掌握Oracle数据库中的 b.
.ORACLE性能诊断―学习statspack笔.
.Oracle弥补9i数据库的两个漏洞.
.详细讲解Oracle I/O子系统的配置.
.教你轻松掌握修改Oracle数据库表.
.Oracle 10G中的回收站(Recycle B.
.ORACLE在HP-UX下的系列问题处理(.
.oracle数据库如何增加表空间大小.
.ORACLE的日志管理.
.Oracle 数据库的备份与恢复.
.用最简单的方法复制或迁移Oracle.

不重建快照的情况下可以修改主表 (二)

发表日期:2008-2-9 |


    不知道谁在主表上删除了一个字段,搞得snapshot无法快速refresh;还好是on prebuilt table的,再一看发现mlog里面有记录,如何才能保证2边数据一致那,我可不想complete refresh。     解决方法 只在只有一个snapshot的前提下,且master table无任何dml语句。     测试如下: SQL> create table st as select * from dba_users where rownum<5; Table created. SQL> alter table st add primary key (user_id); Table altered. SQL> create snapshot log on st; Materialized view log created. SQL> delete from st where rownum=1; 1 row deleted. SQL> commit; Commit complete. SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered.     观察mlog中的纪录,注重SNAPTIME$$ 时间字段。 SQL> select * from mlog$_st; USER_ID SNAPTIME$$ D O ---------- ------------------- - - CHANGE_VECTOR$$ ------------------------------------------------------------------------------------------------------------------------------------------------------ 249 4000-01-01 00:00:00 D O 0000     创建一个on prebuilt snapshot SQL> create table sts as select * from st; SQL> alter table sts add primary key(user_id); SQL> create snapshot sts on prebuilt table as select * from st; Materialized view created.     创建快照后,mlog中的数据自动清除 SQL> select * from mlog$_st; no rows selected     在主表上作修改 SQL> delete from st where rownum=1; 1 row deleted. SQL> commit; Commit complete.     观察日志 SQL> select * from mlog$_st; USER_ID SNAPTIME$$ D O ---------- ------------------- - - CHANGE_VECTOR$$ ------------------------------------------------------------------------------------------------------------------------------------------------------ 256 4000-01-01 00:00:00 D O 0000     删除一个字段 SQL> alter table st set unused column username;     用临时表保存mlog中的纪录 SQL> create table mlog_st as select * from mlog$_st; Table created.     执行快速刷新失败 SQL> exec dbms_snapshot.refresh('sts','f'); BEGIN dbms_snapshot.refresh('sts','f'); END; * ERROR at line 1: ORA-12008: error in snapshot refresh path ORA-00904: invalid column name ORA-06512: at "SYS.DBMS_SNAPSHOT", line 617 ORA-06512: at "SYS.DBMS_SNAPSHOT", line 674 ORA-06512: at "SYS.DBMS_SNAPSHOT", line 654 ORA-06512: at line 1     察看mlog纪录,发现SNAPTIME$$被修改了 SQL> select * from mlog$_st; USER_ID SNAPTIME$$ D O ---------- ------------------- - -
CHANGE_VECTOR$$ ------------------------------------------------------------------------------------------------------------------------------------------------------ 256 2005-06-04 02:39:39 D O 0000     删除snapshot ,预备重新建立;但对应的mlog内容被自动删除,所以之前要保留mlog中的纪录,要不然数据不一致就完了 SQL> drop snapshot sts; Materialized view dropped. SQL> select * from mlog$_st; no rows selected 在on prebuilt table上作修改 SQL> alter table sts set unused column username; Table altered. SQL> create snapshot sts on prebuilt table as select * from st; Materialized view created.     发现不一致 SQL> select ( select count(*) from st) st, ( select count(*) from sts) sts from dual; ST STS ---------- ---------- 2 3     fast refresh成功,但是数据不一致 SQL> exec dbms_snapshot.refresh('sts','f'); PL/SQL procedure sUCcessfully completed. SQL> select ( select count(*) from st) st, ( select count(*) from sts) sts from dual; ST STS ---------- ---------- 2 3     将mlog纪录再copy回来。 SQL> insert into mlog$_st select * from mlog_st; 1 row created. SQL> commit; Commit complete.     刷新后,数据一致 SQL> exec dbms_snapshot.refresh('sts','f'); PL/SQL procedure successfully completed. SQL> select ( select count(*) from st) st, ( select count(*) from sts) sts from dual; ST STS ---------- ---------- 2 2     要害在于mlog数据的保存和时间字段的设置,4000-01-01 00:00:00 表示还没有被刷新过。     假如,这个mlog被多个snapshot使用,可能过程更复杂。
上一篇:sqlplus的oci prefetch特性 人气:404
下一篇:查找bad sql的方法 人气:358
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号