Archive for 三月, 2008

delete,truncate,drop

星期三, 三月 12th, 2008

delete/truncate 只删除数据不删除表,索引的结构。
drop 将删除表的结构被依赖的 index/constrain/trigger,依赖于该表的 procedure/function 将保留,但是变为 invalid 状态。

delete 是 dml,写 rollback segement,可回滚,速度慢,事务提交之后才生效。在 9i 满足 undo_retention 条件下可使用 flashback。一次性大批量数据的 delete 可能导致回滚段急剧扩展从而影响到数据库,慎用。触发 trigger。
truncate/drop 是 ddl,隐式提交,不写 rollback segment,不能回滚,速度快。9i 不能使用 flashback。不触发 trigger。

delete 不影响表所占用的 extent,HWM 保持原位置不动,即使删除的是最靠近 HWM 的数据。delete 其实也可以释放空间,但是不降低 HWM,delete 后 block 的空闲空间达到 pct_used,就可以重用。
truncate 缺省情况下将空间(表和索引)释放到 minextents 个 extent,除非使用 reuse storage。truncate 会将高水线复位(回到最开始)。
drop 将表所占用的空间全部释放,segment 不存在,无所谓 HWM 的概念。

truncate/drop 的对象必须是本模式下的,或者被授予 drop any table 的权限,但 drop any table 权限不能 truncate/drop sys 的表。
delete 的对象必须是本模式下的,或者被授予 delete on SCHEMA.table 或 delete any table 的权限,但 delete any table 权限不能 delete sys 的表。

不能 truncate 一个带有 enable 外键的表,不管表里有没有数据,如果要 truncate,首先要 disable 外键或者删除外键(drop 外键的表肯定是删除了外键)。
不能 drop 一个带有 enable 外键的表,不管表里有没有数据,如果要 drop,首先要删除外键,或者直接用 drop table TABLE_NAME cascade constraints; 级联删除外键。
delete 可以。

热点块的寻找

星期三, 三月 12th, 2008

如何判断使系统是否有latch争用,可以查看v$latch视图
select latch#,name,misses,gets,sleeps from v$latch where name like ‘cache buffer%’

LATCH#,NAME,GETS,MISSES,SLEEPS
123,cache buffer handles,11025,0,0
117,cache buffers lru chain,47182,7,0
122,cache buffers chains,2797560,6,0

(全文…)

direct path read等待

星期二, 三月 11th, 2008

direct path read(USER I/0类)

  1. 与直接读取相关联的等待事件。当ORACLE将数据块直接读入会话的PGA(进程全局区)中,同时绕过SGA(系统全局区)。PGA中的数据并不和其他的会话共享。即表明,读入的这部分数据该会话独自使用,不放于共享的SGA中。
  2. 在排序操作(order by/group by/union/distinct/rollup/合并连接)时,由于PGA中的SORT_AREA_SIZE空间不足,造成需要使用临时表空间来保存中间结果,当从临时表空间读入排序结果时,产生direct path read等待事件。
  3. 使用HASH连接的SQL语句,将不适合位于内存中的散列分区刷新到临时表空间中。为了查明匹配SQL谓词的行,临时表空间中的散列分区被读回到内存中(目的是为了查明匹配SQL谓词的行),ORALCE会话在direct path read等待事件上等待。
  4. 使用并行扫描的SQL语句也会影响系统范围的direct path read等待事件。在并行执行过程中,direct path read等待事件与从属查询有关,而与父查询无关,运行父查询的会话基本上会在PX Deq:Execute Reply上等待,从属查询会产生direct path read等待事件。

(全文…)

当前日志损坏的案例(蚂蚁)

星期五, 三月 7th, 2008

[oracle@ts01 oracle]$ sqlplus ‘/ as sysdba’

SQL*Plus: Release 9.2.0.4.0 - Production on Tue Nov 15 10:35:11 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL> conn / as sysdba
Connected.
SQL>

(全文…)

查看linux系统版本,内核,CPU,MEM,位数的相关命令

星期三, 三月 5th, 2008

1.查看版本,内核

[oracle@svr15 ~]$ cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant)
Kernel \r on an \m

[oracle@svr15 ~]$ cat /proc/version
Linux version 2.6.9-5.ELsmp (bhcompile@decompose.build.redhat.com) (gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)) #1 SMP Wed Jan 5 19:30:39 EST 2005

[oracle@svr15 ~]$ uname -r
2.6.9-5.ELsmp
(全文…)