Archive for September, 2010

>ora_rowscn行记录号总结

>oracle10g新增加了一个伪列ora_rowscn
主要是这么几点:
1.默认情况,ora_rowscn记录的scn并不准确,记录的是block的scn。
2.创建表的时候ROWDEPENDENCIES可以来使ora_rowscn真正记录行一级的scn。
3.不能用在查询view时。
4.不能用于flashback query。
可以用来:
1.确认行所在块最后一次修改的scn
2.确认行所在块最后一次修改的大概时间
3.大部分的时候可以确定出两行记录创建的先后顺序(没在同一个块上)
4.如果CREATE TABLE … ROWDEPENDENCIES 可以精确到行

Comments

>redo日志切换时checkpoint not completed

>Thread 1 cannot allocate new log, sequence 62698
Checkpoint not complete
大数据量操作时,redo日志转换频繁,每次转换日志均会出发checkpoint操作。在checkpoint操作未完成之前,对应的redologfile不能被重用,会造成数据库hang住。
加大redologfile的size,增加redo日志组之后,问题解决。

Comments

>Oracle数据类型Long需要注意的问题

>1.long是一个旧oracle数据类型,用于存储最多包含2GB数据的可变长度字符串,类似varchar2
2.不能在select语句的where子句中使用long
3.表不能有多个long列
4.不能被索引
5.强烈建议停止使用long引用clob

Comments

>数据量巨大的表删除列

>如果你有这个需求,要删除某一个表上的某些列,但是由于这个表拥有非常大量的数据,如果你在尖峰时间直接执行 ALTER TABLE ABC DROP (COLUMN);可能会收到 ORA-01562 – failed to extend rollback segment number string,

这是因为在这个删除列的过程中你可能会消耗光整个RBS,造成这样的错误出现,因此这样的做法并不是一个好方法,就算你拼命的加大RBS空间来应付这个问题,也不会是个好主意。

–不要马上drop column,应该先set unused让column无法使用,避开系统尖峰时间再来处理,要注意的是一但你set unused column,这个栏位是无法再回复使用的。
alter table ttttt set unused (b) CASCADE CONSTRAINTS;
–我们应该避免一次写入那么多的undo log,可以每删除一千笔资料就commit一次。
alter table ttttt drop unused columns checkpoint 1000;

Comments