- 最后登录
- 2023-8-16
- 在线时间
- 1686 小时
- 威望
- 2135
- 金钱
- 50532
- 注册时间
- 2011-10-12
- 阅读权限
- 200
- 帖子
- 5207
- 精华
- 39
- 积分
- 2135
- UID
- 2
|
2#
发表于 2012-5-4 11:33:35
1.",那么是不是undo必须大于30G?"
不是 , 对于INSERT 操作 undo只记录INSERT记录的ROWID 以便回滚,undo 的数量级与INSERT的总行数有关系。
对于不同DML 如 update 、 Delete 、 insert , undo的表现是不同的
2. "insert的数据是存放在哪里?"
如果没有direct patch 的数据加载load的话, INSERT的数据 一开始 在Buffer Cache 中的dirty block脏块中, 之后根据 算法 由dbwr 进程 写出脏块内 磁盘上
3. commit后那为什么马上就可以查询到数据?
commit 是一个轻量级的操作 , commit做的操作非常少
4.这是在查询undo段表空间?
视乎 你查询的是 什么版本的数据 , oracle中存在多版本读的概念 multiversion read
5.如果insert时,所有的redo数据文件都写满了
redo 数据文件? 你指的是 online redo logfile 在线日志文件吗?
redo logfile 写满会 切换覆盖之前的redo log , 且要求完成必要的logfile checkpoint , 并不会造成hang的。
8i时代经典的面试题之一是 , 一个DML SQL要产生160MB 的redo ,而 数据库总共有3组 redo log ,每组50MB ,问这个DML 语句是否能正常处理?
答案是 yes
建议你 仔细阅读官方concept 概念 之后再去研究这些问题 |
|