可更新分区物化视图Issue

这个限制其实按照道理不应该存在,但是确实有这个问题,一个可更新的分区物化视图无法刷新会引起分区间记录转移的改动。这句话比较拗口,那么用例子说明一下。

创建一个分区表,注意要enable row movement,这样后面才能去更新分区键的字段值。
CREATE TABLE PARTITION_BY_RANGE
( FIRST_NAME VARCHAR2(10),
MIDDLE_INIT VARCHAR2(1),
LAST_NAME VARCHAR2(10),
BIRTH_MM INT NOT NULL,
BIRTH_DD INT NOT NULL,
BIRTH_YYYY INT NOT NULL)
PARTITION BY RANGE (BIRTH_YYYY, BIRTH_MM, BIRTH_DD)
(PARTITION DOBS_IN_1971_OR_BEFORE VALUES LESS THAN (1972, 01 ,01),
PARTITION DOBS_IN_1972 VALUES LESS THAN (1973, 01 ,01),
PARTITION DOBS_IN_1973 VALUES LESS THAN (1974, 01 ,01),
PARTITION DOBS_IN_1974 VALUES LESS THAN (1975, 01 ,01),
PARTITION DOBS_IN_1975_OR_LATER VALUES LESS THAN (MAXVALUE, MAXVALUE, MAXVALUE))
ENABLE ROW MOVEMENT;

插入分区数据。

INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1969’, ‘A’, ‘SMITH_1969’, 09, 20, 1969);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1970’, ‘A’, ‘SMITH_1970’, 09, 20, 1970);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1971’, ‘A’, ‘SMITH_1971’, 09, 20, 1971);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1972’, ‘A’, ‘SMITH_1972’, 09, 20, 1972);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1973’, ‘A’, ‘SMITH_1973’, 09, 20, 1973);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1974’, ‘A’, ‘SMITH_1974’, 09, 20, 1974);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1975’, ‘A’, ‘SMITH_1975’, 09, 20, 1975);
INSERT INTO PARTITION_BY_RANGE VALUES (‘FRED_1976’, ‘A’, ‘SMITH_1976’, 09, 20, 1976);
COMMIT;

创建物化视图日志。

create MATERIALIZED VIEW LOG ON PARTITION_BY_RANGE WITH PRIMARY KEY;

创建分区可更新物化视图。不是分区视图不会有问题,不是可更新视图也不会问题。

create MATERIALIZED VIEW mv_pr
PARTITION BY RANGE (BIRTH_YYYY, BIRTH_MM, BIRTH_DD)
(PARTITION MV_IN_1971_OR_BEFORE VALUES LESS THAN (1972, 01 ,01),
PARTITION MV_IN_1972 VALUES LESS THAN (1973, 01 ,01),
PARTITION MV_IN_1973 VALUES LESS THAN (1974, 01 ,01),
PARTITION MV_IN_1974 VALUES LESS THAN (1975, 01 ,01),
PARTITION MV_IN_1975_OR_LATER VALUES LESS THAN (MAXVALUE, MAXVALUE, MAXVALUE))
refresh fast with primary key for update
as
select * from PARTITION_BY_RANGE;

随便修改基表的几条数据,目的是引起分区记录的转移,比如将DOBS_IN_1972分区内的记录全部更新到DOBS_IN_1973中。

然后,尝试做物化视图的手动刷新,将会报错。

SQL> exec dbms_mview.refresh(list => ‘MV_PR’);

begin dbms_mview.refresh(list => ‘MV_PR’); end;

ORA-12008: error in materialized view refresh path
ORA-14402: updating partition key column would cause a partition change
ORA-06512: at “SYS.DBMS_SNAPSHOT”, line 2255
ORA-06512: at “SYS.DBMS_SNAPSHOT”, line 2461
ORA-06512: at “SYS.DBMS_SNAPSHOT”, line 2430
ORA-06512: at line 2

目前没有什么可以解决的方法,只能是修改为非分区的或者只读的物化视图。

2.3版魔兽世界 – 盗贼的春天

台服魔兽世界今天维护之后更新到2.3,347M的补丁需要下载一段时间,对于长篇的补丁说明稍微点评一下。

祖阿曼:
无非是增加了一个副本,多了个拿装备的地方,对于我这样长久都还没有升级到70的人来说,没什么吸引力。

语音系统正式推出:
语音系统的好处是,大概会不断地听到,“我靠,你丫原来是人妖!”,哈哈。

公会银行:
不错的功能,使公会管理趋于简单化,相信今后暴雪一定会在某个补丁中推出公会领地,一个可以利用公会资金创建公会特有建筑物的领地,在这个领地内修缮装备或者防御或者攻击敌人都将有额外的奖励加成。

等级提升的改善措施:
1-60级升级速度加快,对于喜欢练小号的人来说是个绝好的消息。

即使你的角色已经在施放另一个法术了,用户端施法请求仍会传送到服务器:
/stopcasting不需要再加入到宏里面去了,由于客户端网络延迟带来的DPS下降会大大减少,当然,一个有效的施法时间检测UI仍然是必须的。

坐下的时候如果要施法将自动站立,可以通过/console autoStand 0来关闭这个功能:
这是对于在坐骑上如果要施法自动下马之后的又一个贴心改动。

战场上旗帜掉落以后,将产生3秒内无法再被拾取的效果:
又是一个针对网络延迟的修改,再也不用旗子一掉就疯狂点自己身体的左上角了。3秒,可不短啊。

在战场开始前,在战场中死亡并被灵魂医者后的数秒内,施放任何法术将不消耗法力值:
战场越来越像竞技场了。不知道术士的发糖机是不是还要消耗3块碎片呢?

奥山战场修改:
攻防更加激烈,战术更加诡异了,因为只要还占有一片墓地,玩家就不会被传送到战争刚开始的那个通道里。

猎人:
猎人加强了。瞄准射击将使治疗效果降低50%,并持续10秒,这是多么强大的buff,而且秘法射击(奥术射击)会额外驱散目标的一个魔法效果!再加上陷阱和钉刺的伤害会随着远程攻击强度的提升而提升,想来猎人在竞技场的地位将得到很大提升。

法师:
侦测魔法消除,所有玩家都可以随时看到目标身上的增益效果:
RAID简单化的一个改动。
在战场中无法再施放传送回各主城的传送门法术:
这个。。。以后刷子们又放心了一点儿,不会挂机一个小时后再回来看发现自己不知道被哪个具有正义感的法师开门送回主城了。

牧师:
矮人和德莱尼牧师在20级的时候可以学习新法术-谴责,对目标造成神圣伤害并瘫痪目标2秒:
难道还要加强矮牧的PVP本领吗?
所有种族的牧师在20级都可以学习防恐结界:
矮牧的独特本领终于普及给大家了,似乎这是Ming屡次提到的建议。

盗贼,或者说是潜行者ORZ:
毒药时长上升为1小时,致盲不再需要致盲粉并且改为物理攻击(意味着深冰法的水元素不再那么有效了),死亡谎言Buff,移动速度Buff,出血Buff,暗影闪现(暗影步)Buff,投掷武器Buff,OMG,2.3确实是盗贼的春天,就像那个辉煌的1.12时代一样,盗贼们,重新回到王者的位置上来吧!

术士:
无论从哪个方面说,都被NERF了。不能不说是一个遗憾。

現在只需要聲望達到尊敬便可以取得英雄模式的钥匙:
哈哈,那些为了英雄副本钥匙辛辛苦苦刷到崇敬的人们啊,为你们默哀。。。

當你觀察其他玩家時,你現在可以看到裝備連同他們的天賦選擇。
看来以后更多人会点着其它玩家看个不停了。

RAC10gR2 on HP-UX IA64

这几天经历了有史以来最痛苦的Oracle 10gR2 RAC的安装体验。

操作系统是HP-UX IA64,原本是两台已经安装过Oracle10gR2 CRS+RAC的系统,在安装完之后做了安全控制,取消了很多服务,然后机器从北京搬到上海,存储换了(意味着OCR和Voting Disk没有了),主机名称换了,网卡ID换了,IP地址换了(意味着重新构建OCR Disk很麻烦),在这样的一台机器上要重新安装RAC。

多次的失败之后,要求HP工程师重新安装了操作系统,从上周五白天一直到今天晚上才完全搞定,在今天晚上22:00才最后发现原来一切一切不可思议的问题都是源自于一个小小的环节,以往几天甚至对CRS在HP-UX上的稳定性都产生了极大的怀疑。

现象是,css/crs/evm这些后台进程用ps看全部都是正常的,但是crs_stat命令始终报无法连接CRS Daemon;重新启动机器之后有时候一个节点正常了,但是另外一个节点不正常,再次重启,不正常的节点可能又正常了;好不容易两个节点都正常了,数据库软件也安装完毕了,数据库也创建了,最后再重启一下两台机器,CRS又不正常了。。。几乎抓狂!

最后,焦点聚集到网卡的全双工和半双工设置上,网络集成商在屡次确认网络配置确实没有问题之后,在客户的强烈要求下,最后又再次检查了一下交换机,发现交换机上有两个端口设置成了半双工+自适应,而主机上的网卡全部都是全双工+非自适应,而这两个端口恰恰是连接某台数据库服务器上的Public网卡。就是这个网络设置上全双工和半双工的不匹配,让CRS发生了各种古怪的现象。

一切问题都在把交换机端口也设置为全双工+非自适应之后荡然无存。

这篇文章的意思是:CRS不是想象中那么不稳定,如果在安装过程中或者安装完毕有奇怪的现象,那么第一个要找的不是CRS软件本身,而是操作系统以及网络设置。