Oracle工作原理!
问,有谁能给我一个满意的答案? 问题点数:100、回复次数:17Top
1 楼lws0472(期待2008)回复于 2002-06-15 11:23:28 得分 1
找本数据库的书好好看看吧Top
2 楼ATCG(novel gene)回复于 2002-06-15 11:24:41 得分 1
这不是一两句话说得清的,建议先学习以下ORACLE体系结构
这很重要,Top
3 楼aw325(爱情甜蜜蜜)回复于 2002-06-15 11:29:24 得分 0
你们很厉害吗?不如说两句!比如DBWR与LGWR如何能协调的工作,何种情况下触发这两个进程!慢慢说嘛!干嘛上来就让人家看书?Top
4 楼aw325(爱情甜蜜蜜)回复于 2002-06-15 11:31:01 得分 0
TO ATCG:
还比较友好!接受建议!谢谢!Top
5 楼3yugui(亿硅)回复于 2002-06-15 11:40:03 得分 0
这个问oracle公司比较适合。不过谈一些实际的问题我想应该好一些。Top
6 楼fibbery(飞)(睡足了才能提高效率)回复于 2002-06-15 11:59:20 得分 5
学、问......
边学边问....
Top
7 楼biti_rainy(biti_rainy)回复于 2002-06-15 12:18:31 得分 40
oracle的工作原理?
题目太大了,呵呵
如果是初学,怎么都讲不清楚的
比如,很简单的问一句:最简单的不排序不利用索引不涉及cost的查询的时候数据是怎么获取的?
简单一点说:
比如 select * from a;
先在数据缓冲区根据内部的存储结构查找是否有表a的数据块(我并不知道内存中的存储结构)
if没有,则通过磁盘i/o把所有数据通过物理读取进来(这个过程中可能涉及了数据字典等内容以确定表结构和表存储的物理位置)
else 有,则先查看数据块头的有关修改的记录,如果数据块有被修改又没有提交(dirty buffer),则通过块头记录了回滚段信息找到回滚段,通过回滚段头的事务表信息记录的事务信息和数据在回滚段中的物理位置,找到该部分数据,把该部分数据读取出来(回滚段前映像)。如果这个过程中回滚段和缓冲区数据之和都只有一部分,数据库又怎么确认并从磁盘read,偶就不清楚了。
就算在我上面说的这点还算比较少的内容中,各部分存储结构和存储了哪些信息,在什么时候有什么作用,恐怕很清晰的了解的人也不多。再深入下去……oracle的学习就没有尽头了……
要仔细到这个地步,恐怕不是一两年的事情,就算再多几年,恐怕也还差的远 :)
仔细的塌实的看书,多上网交流,看文档,认真实践,才是学习前进的根本。没有任何捷径,如果想通过1个月的培训就怎样,那是不可能的。更何况培训教师的水准未必能保证呢。
Top
8 楼aw325(爱情甜蜜蜜)回复于 2002-06-15 13:08:21 得分 0
大言不惭,呵呵,可以不用把我当作初学者!Top
9 楼aw325(爱情甜蜜蜜)回复于 2002-06-15 13:09:30 得分 0
不好意思,我是在说我自己“大言不惭”!Top
10 楼biti_rainy(biti_rainy)回复于 2002-06-15 13:23:05 得分 0
比如DBWR与LGWR如何能协调的工作,关于这个问题的话,其实更应该是操作系统的事情,对于数据库来说,这两个是没有什么必然联系的,如果存在多个磁盘控制器,他们是可以并行的,这也是存储规划的时候注意i/o的规划问题之一
写日志文件,是在下面几种情况下发生:
1:log buffer 满1M
2:log buffer超过1/3(该buffer设置超过3M没有任何意义)
3:时间超过3秒
4:日志切换(手工和自动都是)
5:commit的时候
写数据文件:
当发生检查点的时候(ckpt),会写数据文件和控制文件
由这里可以看出
操作是否commit是否写入日志文件 和 是否写入数据文件无关
可能已经commit的操作,但没有写如数据文件
没有commit的却已经写如数据文件
这个在select的时候是通过scn来检查的
在数据库崩溃后恢复的时候,也是通过scn来决定怎么恢复并保证数据不丢失的
包括根据日志文件前滚(roll forward)和根据回滚段回滚(roll back)
如果再讲下去,scn和保障数据不丢失的机制,又多了……
Top
11 楼ATCG(novel gene)回复于 2002-06-15 17:28:40 得分 5
大家好!
我上ORACLE论坛其实时间不长,在这里学到了很多东西,记得我刚学
ORACLE的时候,是一点也不懂的,也不会安装,更不用说什么内存结构,
实例,数据库的物理结构,逻辑结构等概念了,刚开始学是要自己仔细看书
的,从体系结构着手,慢慢体会我想就会有收获。我很希望在论坛上能多认识
一些朋友,他们的很多解决问题的思路和方法,都给了我很好的启示,让我
受益菲浅。谢谢大家!
Top
12 楼tianmaa(天马)回复于 2002-06-15 17:54:05 得分 5
建议:分步学习。第一步先学习它的基本知识,装一个oracle,边用边学,很快就能入门了.
如果以使用为主,就不必先去研究诸如“DBWR与LGWR如何能协调的工作,何种情况下触发这两个进程之类”的问题。它们会影响你学习oracle的进度,暂时不学它也不会影响你使用oracle。
等你使用熟练后,再学这些问题,就容易理解了。Top
13 楼biti_rainy(biti_rainy)回复于 2002-06-15 20:07:42 得分 3
先 了解体系结构,看基本概念
可能先看了这些,在相当一段时间内
都不会觉得书上说的有什么现实意义
不着急,以后随着应用的深入
就会觉察出来的
刚开始了解概念后
多实践
上论坛,学习别人的经验和方法
看oracle的文档
多思考
坚持下去......一切都ok了
注意,想学习好oracle一定要热爱它,喜欢它
否则,要学好,是一件相当痛苦的事情
Top
14 楼mycode(不写代码)回复于 2002-06-16 09:41:32 得分 5
Oracle学习时,可以把它当作操作系统来学习。操作系统所具有特点如进程管理、内存管理、存储管理等,它都有。Top
15 楼ghxac(云翔)回复于 2002-06-16 17:18:29 得分 5
总是要从理论到实际的
多看一些书吧Top
16 楼fibbery(飞)(睡足了才能提高效率)回复于 2002-06-17 09:45:47 得分 30
TO biti_rainy(biti_rainy) :
当发生检查点的时候(ckpt),实际上,数据库写进程DBWR的写操作是由LGWR来通知的。所以并不是一点关系没有!至少,这也算是一种协调!
Top
17 楼aw325(爱情甜蜜蜜)回复于 2002-06-17 10:44:33 得分 0
该问题已经结贴 ,得分记录: lws0472 (1)、 ATCG (1)、 fibbery (5)、 biti_rainy (40)、 ATCG (5)、 tianmaa (5)、 biti_rainy (3)、 mycode (5)、 ghxac (5)、 fibbery (30)、
Top




