我有几个关于 Oracle 10g 关于逻辑结构和物理结构的 问题,希望您能帮我解答一下,非常感谢!1.有一本书上说:“对物理结构的管理可以不影响逻辑结构”。
这句话该怎么理解?2."由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Group by,Order by等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间。"执行算法占用内存,怎么还占用硬盘空间?3.段可以理解为一张表,那数据块和区间可以一张表中的哪些部分呢?4.数据库在线,离线和数据库打开,关闭的区别是什么?5.逻辑结构中的内存结构和进程结构的关系是什么,进程在内存中运行吗?6.进程结构中,服务器进程和后台进程是如何协调工作的?我不太理解

解决方案 »

  1.   

    1:Oracle的数据文件可以很多也可以只有一个,这些数据文件的多寡不会影响你的数据库逻辑关系(例如:表、视图、过程、函数、触发器等)2:临时将统计中的数据放入temp空间,如果直接放入物理内存,那假设同时有5000个session存在统计,那服务器岂不是爆了3:参考FAT324:个人无答案5:个人无答案6:个人无答案
      

  2.   

    2."由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Group by,Order by等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间。" 执行算法占用内存,怎么还占用硬盘空间?当内存装载不下时,比如排序,大量的排序会占用很大的空间,内存不够了,就会利用临临时表空间
      

  3.   

    6.进程结构中,服务器进程和后台进程是如何协调工作的?我不太理解
    服务器进程是根据客户请求而进行的维护工作,后台进程是伴随着数据库启动而开启的一些进程如写磁盘,写日志等.
    当客户发出会话请求时,如insert ,commit这时服务器进行会进行处理,而此时相应的后台进程也要进行相应的工作如写到日志,写数据文件等,我的简单理解.
      

  4.   

    楼主这个帖子很好的,以前我应该能回答你的这些问题,事实上我已经也问过类似这样的问题:)可现在很多知识已经忘记了,需要查书才能正确回答。在此我只回答第4个问题吧。4.数据库在线,离线和数据库打开,关闭的区别是什么? 
      数据库online时,数据库一般是打开的,而且可以接受客户端的访问;
      数据库offline时,数据库一般也是打开的,但不能接受客户端的访问;
      数据库open时,数据库可以是online也可以是offline的,一般DBA在做维护是,数据库是open且offline的
      数据库close时,数据库服务就啥都不能做了
      

  5.   

    更正文字错误:
    楼主这个帖子很好的,以前我应该能回答你的这些问题,事实上我曾经也问过类似这样的问题:)可现在很多知识已经忘记了,需要查书才能正确回答。在此我只回答第4个问题吧。 4.数据库在线,离线和数据库打开,关闭的区别是什么? 
      数据库online时,数据库一般是打开的,而且可以接受客户端的访问; 
      数据库offline时,数据库一般也是打开的,但不能接受客户端的访问; 
      数据库open时,数据库可以是online也可以是offline的,一般DBA在做维护时,数据库是open且offline的 
      数据库close时,数据库服务就啥都不能做了 另外,第3题似乎也可以回答:
    3.段可以理解为一张表,那数据块和区间可以一张表中的哪些部分呢?
    Segment理解为一张表的说法兄弟头一次听到,有点意思,但不是很准确。Segment和tablspace相对于数据表而言是更倾向于physical的,数据表则更logical。一个数据表可以存在于tablespace中,但具体是什么地方则有数据库服务器来确定的,一种特殊其概况,比如一个很大的数据表可以跨tablspace存放,也就是说一个数据表可以存在与两个或更多的tablespace中。楼主所说的“那数据块和区间可以一张表中的哪些部分呢?”,这个也应该是数据库服务器来决定的,包括一个表的结构、数据或者诸如索引等都是可以的。但通常,将数据表空间和索引表空间这两种用于完全不同目的的表空间分开。关于OS_Block,Oracle_Block ,Extent,Segment,Tablespace之间的关系理解:
    tablespace相当于一个大盒子,oracle中所有的object都要放到这个大盒子里,所以你create table或index等object时可以指定tablespace,segment就是放到这个盒子里的一个物体,它也可能要占用好几个tablespace,extent是用来分配空间的,多个extent组成了一个segment,而block是最小的分配空间的单位,他们组成extent
      

  6.   

    真是好贴子...
    5.参考
    http://dev.csdn.net/article/69/69481.shtm
      

  7.   


    1,物理结构是指的数据文是磁盘文件,而逻辑结构则是指oracle内部的(表空间、段、区、块)。两个的性质不一样,组成方式也不一样,所以“对物理结构的管理可以不影响逻辑结构”是正确的。
      

  8.   


    2,一些大字段,以及group by 或者order by数据量大的话,内存中存放一部分,剩下的存放在temp表空间里面,随时可以取,效率也高!
      

  9.   

    1、"对物理结构的管理可以不影响逻辑结构",你可以这样来理解,表空间是一个逻辑结构,数据文件是一个物理结构,一个表空间可以对应多个数据文件,我们可以将这些数据文件放在不同的磁盘,不同的目录,但是在逻辑上,表空间只有一个,不会发生改变。
    2、当你对上百万行数据进行排序时,你可以通过EM的监视TEMP表空间,看一下,你就明白了。
    3、block存放的是Row Data,extents是block的集合,ORACLE通过它来分配空间的。
    6、你就这样来理解就可以了,就像应用程序以OS之间的关系。
      

  10.   

    3.段可以理解为一张表,那数据块和区间可以一张表中的哪些部分呢?
    =================================================================
    段可以理解为一张表 ==》基本正确,但也有例外,如果分区表就是一个分区一个段,聚簇表(clustered table)多个表存在于一个段中。数据块和区间 ==》数据块是数据库的读取单位,数据库从磁盘中向内存读取数据以块为单位。区是磁盘空间的分配单位,数据库从表空间的自由空间中给一个段分配空间的时候,一个分配一个区,区是一个数据文件中连续的数据块。不同的区可以位于同一表空间的不同的数据文件,所以表或者说段的存储是可以跨数据文件的。
      

  11.   

    5.逻辑结构中的内存结构和进程结构的关系是什么,进程在内存中运行吗? 
    ========================================================================
    进程在内存中运行吗? ==》当然是的。内存结构(通常为 SGA)是所有后台进程都能访问的、后台进程的共享内存。
      

  12.   

    6.进程结构中,服务器进程和后台进程是如何协调工作的?我不太理解
    ===================================================================
    从磁盘IO的角度看,服务器进程把所需要的数据读入内存(SGA)中,而后台进程负责把内存需要写回的数据写入磁盘。
    你发现没有,有 DBW 这样的后台写进程,但并没有 DBR 这样的后台读进程。