10G之ORA_ROWSCN

OoNiceDream 发表于 2009-05-30 15:23

Oracle 10G中,使用ora_rowscn可以查询到记录最后变更的SCN。不过,默认是基于块级维护(norowdependencies),也就是说,一个BLOCK上的所有行会共享同一个SCN,如果一个BLOCK上的某一行更新了,该BLOCK上的其它行的SCN也会推进,这是因为此时的SCN是从BLOCK头部获取的。另外也可以实现行级维护,在建表时通过加上rowdependencies选项来指定,这样Oracle会为每一行存储各自的SCN。

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

10G删除空数据文件

OoNiceDream 发表于 2009-05-14 15:21

Oracle 9I、10G都可以采用:Alter database datafile file_name offline drop;来删除数据文件,但当数据文件为非空时,存放在该数据文件上的数据就无法读据了:

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

Hash Partitioned Global Index

OoNiceDream 发表于 2009-05-10 12:54

Hash partitioned global index是10G的新特性,Oracle对哪种情况下适合使用该索引,也有一点说明:

Hash partitioned global indexes can improve the performance of indexes
where a small number of leaf blocks in the index have high contention
in multiuser OLTP environments. Queries involving the equality and IN
predicates on the index partitioning key can efficiently use hash-partitioned global indexes.

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

关于SYS.AUDSES$的一点总结

OoNiceDream 发表于 2009-04-26 15:16

V$SESSION中的AUDSID是会话连接到Oracle数据库的识别标志之一。我们可以在当前会话中使用USERENV(‘SESSIONID’)来获得自己的AUDSID,而AUDSID,其实是从SYS.AUDSES$这个SEQUENCE中获取的。

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

限制用户只能KILL本用户的会话

OoNiceDream 发表于 2009-04-01 23:16

在yangtingkun的BLOG上看到了“限制用户只能KILL本用户会话”的文章
正好有这个需求,收藏了一下。文中使用了两个存储过程来实现:

关键字: | 分类: 基础知识 | 评论数: 1 | 阅读全文

DML操作记录在UNDO中的信息

OoNiceDream 发表于 2009-03-27 16:31

DML操作在UNDO中的信息

通过Dump UNDO Block观察到DML操作记录在UNDO中的信息,主要为以下内容:
1、对于Insert操作,需要在UNDO中记录插入行的ROWID(并非直接记录,而是拼凑出来的)。
2、对于Update操作,需要在UNDO中记录被更新列的前镜像,同时也会记录被更新行的ROWID。
3、对于Delete操作,需要在UNDO中记录被删除行所有列的值(前镜像)及ROWID。

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

修改SEQUENCE的LAST_NUMBER

OoNiceDream 发表于 2009-03-26 16:26

应用人员提出要修改SEQUENCE的LAST_NUMBER,增加50W,其间的序列值用于新增数据使用。
翻开手册发现没有直接修改LAST_NUMBER的语句,倒是在PL/SQL中可以直接修改。
这里以LAST_NUMBER增加10000为例,修改过程如下:

关键字: | 分类: 基础知识 | 评论数: 1 | 阅读全文

UNDO表空间手工管理

OoNiceDream 发表于 2009-03-20 22:21

在DBA 2.0都到来的时代,还谈UNDO表空间手工管理,实在是有点土了。
可惜这东西,真没接触过,做点简单的笔记,备用,没准还有机会用上。

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

存储过程与角色的关系

OoNiceDream 发表于 2009-03-06 16:22

在默认情况下(也就是AUTHID DEFINER时),Oracle在执行、编译存储过程时并不检查定义者拥有的角色,只是检查其被显式授予的权限,这样就导致了执行、编译存储过程时报权限不足、表不存在的错误(例二的情况,使用AUTHID CURRENT_USER也不行,详见正文):

ORA-01031: insufficient privileges
ORA-00942: table or view does not exist
关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

观察drop partition时的锁情况

OoNiceDream 发表于 2009-02-26 22:46

借一次drop partition机会,观察下相关表及分区的锁情况。
由于表较大,便于观察,作个简单的记录,供以后参考(相关表名等信息略作更改):

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

一个关于MR锁的小笑话

OoNiceDream 发表于 2009-02-23 19:31

记得刚刚当DBA时,查询了一下v$lock视图,做了个group by:

SYS@DB1> select type,count(*) from v$lock
  2  group by type order by 2 desc;
 
TYPE   COUNT(*)
---- ----------
MR         1193
TM           83
TX           14
RT            3
TS            2
XR            2
DM            1
PI            1

发现大量的“MR”锁,赶紧上报说:数据库有问题啊,大量MR锁。哈哈,闹了个小笑话。

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

10G中Sqlplus的prelim选项

OoNiceDream 发表于 2009-02-17 15:50

10G中,当数据库无法连接,又需要做SYSTEM DUMP时,可以尝试使用sqlplus的prelim选项

关键字: | 分类: 基础知识 | 评论数: 0 | 阅读全文

站内搜索



返回首页 | 关于我 | 联系我 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |