我有几个关于 Oracle 10g 关于逻辑结构和物理结构的 问题,希望您能帮我解答一下,非常感谢!1.有一本书上说:“对物理结构的管理可以不影响逻辑结构”。
这句话该怎么理解?2."由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Group by,Order by等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间。"执行算法占用内存,怎么还占用硬盘空间?3.段可以理解为一张表,那数据块和区间可以一张表中的哪些部分呢?4.数据库在线,离线和数据库打开,关闭的区别是什么?5.逻辑结构中的内存结构和进程结构的关系是什么,进程在内存中运行吗?6.进程结构中,服务器进程和后台进程是如何协调工作的?我不太理解
这句话该怎么理解?2."由于Oracle工作时经常需要一些临时的磁盘空间,这些空间主要用作查询时带有排序(Group by,Order by等)等算法所用,当用完后就立即释放,对记录在磁盘区的信息不再使用,因此叫临时表空间。一般安装之后只有一个TEMP临时表空间。"执行算法占用内存,怎么还占用硬盘空间?3.段可以理解为一张表,那数据块和区间可以一张表中的哪些部分呢?4.数据库在线,离线和数据库打开,关闭的区别是什么?5.逻辑结构中的内存结构和进程结构的关系是什么,进程在内存中运行吗?6.进程结构中,服务器进程和后台进程是如何协调工作的?我不太理解
解决方案 »
- oracle如何访问access的数据?急急急,在线等
- 存储过程中的insert into语句速度慢 如何优化
- oracle 事务处理
- 如何在如下情况提高检索速度???
- oracle里用什么命令格式从数据库A里把某一表连表结构和数据一起倒成一个文件,然后用什么命令格式把该文件倒到数据库B里(当然是倒文件的
- 对游标内容为空和非空的if判断
- 如何取得oracle的所有表的表结构,表名称,索引信息?(在不知道有那些表的情况下)
- 没有发现客户端与网络组件,急急急!!!
- 有关ORACLE数据表的导入导出
- 如何统计时间戳相同一天的个数
- spool如何输出小数
- oracle中出现“sp2-0042:未知命令“scott”-其余行忽略””
服务器进程是根据客户请求而进行的维护工作,后台进程是伴随着数据库启动而开启的一些进程如写磁盘,写日志等.
当客户发出会话请求时,如insert ,commit这时服务器进行会进行处理,而此时相应的后台进程也要进行相应的工作如写到日志,写数据文件等,我的简单理解.
数据库online时,数据库一般是打开的,而且可以接受客户端的访问;
数据库offline时,数据库一般也是打开的,但不能接受客户端的访问;
数据库open时,数据库可以是online也可以是offline的,一般DBA在做维护是,数据库是open且offline的
数据库close时,数据库服务就啥都不能做了
楼主这个帖子很好的,以前我应该能回答你的这些问题,事实上我
已曾经也问过类似这样的问题:)可现在很多知识已经忘记了,需要查书才能正确回答。在此我只回答第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
5.参考
http://dev.csdn.net/article/69/69481.shtm
1,物理结构是指的数据文是磁盘文件,而逻辑结构则是指oracle内部的(表空间、段、区、块)。两个的性质不一样,组成方式也不一样,所以“对物理结构的管理可以不影响逻辑结构”是正确的。
2,一些大字段,以及group by 或者order by数据量大的话,内存中存放一部分,剩下的存放在temp表空间里面,随时可以取,效率也高!
2、当你对上百万行数据进行排序时,你可以通过EM的监视TEMP表空间,看一下,你就明白了。
3、block存放的是Row Data,extents是block的集合,ORACLE通过它来分配空间的。
6、你就这样来理解就可以了,就像应用程序以OS之间的关系。
=================================================================
段可以理解为一张表 ==》基本正确,但也有例外,如果分区表就是一个分区一个段,聚簇表(clustered table)多个表存在于一个段中。数据块和区间 ==》数据块是数据库的读取单位,数据库从磁盘中向内存读取数据以块为单位。区是磁盘空间的分配单位,数据库从表空间的自由空间中给一个段分配空间的时候,一个分配一个区,区是一个数据文件中连续的数据块。不同的区可以位于同一表空间的不同的数据文件,所以表或者说段的存储是可以跨数据文件的。
========================================================================
进程在内存中运行吗? ==》当然是的。内存结构(通常为 SGA)是所有后台进程都能访问的、后台进程的共享内存。
===================================================================
从磁盘IO的角度看,服务器进程把所需要的数据读入内存(SGA)中,而后台进程负责把内存需要写回的数据写入磁盘。
你发现没有,有 DBW 这样的后台写进程,但并没有 DBR 这样的后台读进程。