oracle的逻辑结构组件从小到大为:数据块,区,段,表空间
数据块:最小的数据块由存储系统中磁盘空间的一定量的字节组成。
数据块对应物理结构中的磁盘块,有2,4,8,16,32KB。
在设定数据块大小时,如果行比较小且访问比较随机(添加了索引),最好使用较小的数据块,当行比较小且访问是连续的或者行比较长时,需要使用较大尺寸的数据块。如果无法确定,推荐使用8KB。
某些情况下需要设置不同的数据块大小,如果选择了配置多个不同尺寸的数据块,则需要在SGA中进行配置(在高速缓存中配置相应子高速缓存),此配置仅为在具有不同数据块尺寸的数据库之间传送表空间。
当需要查看数据块中的实际数据时,可以通过转储块的内容查看(数据块默认二进制存储,需要转换),在转储过程中,有时会遇到块讹误,此时可以使用rman从讹误数据块恢复数据。
以下sql可以确定文件和块id的查询
sql>select segement_name;
file_id,
block_id,
FROM dba_extents
WHERE owner = 'OE'
AND segment_name LIKE 'ORDERS%';
或者select header_file,header_block FROM dba_segments
WHERE segment_name = 'persons';
接着使用相应的文件和块号发布以下命令得到的所需转储块
SQL>alter system dump datafile xxx block xxx;
以上命令将在oracle数据库的默认跟踪目录(dump)下产生一个块转储
例如:dump file /u02/app/oracle/oradata/oracle/admin/pasu/udump/pasu_ora_1481594066.trc
以上可以从数据块中得到一些简单的信息,若想要查询更重要的数据,嘿嘿,我还不会。
区:几个相邻的数据块组成区,在创建表或者索引时,需要指定区的大小(第一个区)和下一个区(后续扩增的区)的大小。
段:分配给任一数据库对象的所有空间,即custome表对应custome段。
表空间:是数据库的主要逻辑结构,一般情况下,相关联的表会放在一个表空间下,表空间中的数据文件组成了数据库存放数据的物理空间。
默认情况下,oracle有5个表空间必须在安装实例时创建:SYS表空间,SYSAUX表空间,(撤销)undo表空间,(临时)temporary表空间和默认参数表空间。
为何sql server无表空间但是oracle有?
1.表空间更容易将空间分配个不同用户
2.数据仓库可以分配在几个表空间上,以此提高性能。
3.可以offline单个表空间而不用停掉整个数据库。
4.表空间可以指定要导入或者导出的应用数据。