我的编程空间,编程开发者的网络收藏夹
学习永远不晚

表空间uniform size和 autoallocate的区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

表空间uniform size和 autoallocate的区别

看循序渐进和数据库性能优化时进行的测试,记录一下。[@more@]

UNIFORM SIZE的测试


SQL> CREATE TABLESPACE eric DATAFILE
2 '/u01/app/oradata/orcl/eric01.dbf' SIZE 10M AUTOEXTEND OFF
3 LOGGING
4 PERMANENT
5 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
6 BLOCKSIZE 8K
7 SEGMENT SPACE MANAGEMENT MANUAL
8 FLASHBACK ON;

Tablespace created.


SQL> select tablespace_name,extent_management,allocation_type
2 from dba_tablespaces where tablespace_name='ERIC';

TABLESPACE_NAME EXTENT_MAN ALLOCATIO
------------------------------ ---------- ---------
ERIC LOCAL UNIFORM


SQL> create table test
2 tablespace eric as
3 select * from dba_users where 1=0;

Table created.


SQL> select extent_id,block_id,blocks
2 from dba_extents where segment_name='TEST' and tablespace_name='ERIC';

EXTENT_ID BLOCK_ID BLOCKS
---------- ---------- ----------
0 9 128

test表创建时是从block_id为9的开始的,前8个block都被系统保留了.其中数据块1和2用于记录数据文件头的信息,数据块

3~8用于记录区间的位图信息.

SQL> alter system dump datafile 9 block min 1 block max 3;

System altered.

SQL> SELECT d.VALUE
2 || '/'
3 || LOWER (RTRIM (i.INSTANCE, CHR (0)))
4 || '_ora_'
5 || p.spid
6 || '.trc' trace_file_name
7 FROM (SELECT p.spid
8 FROM v$mystat m, v$session s, v$process p
9 WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p ,
10 (SELECT t.INSTANCE
11 FROM v$thread t, v$parameter v
12 WHERE v.NAME = 'thread'
13 AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
14 (SELECT VALUE
15 FROM v$parameter
16 WHERE NAME = 'user_dump_dest') d
17 /

TRACE_FILE_NAME
--------------------------------------------------------------------------------
/u01/app/admin/orcl/udump/orcl_ora_3868.trc

根据生成的跟踪文件,可以发现前两个block记录的是文件头的信息

/u01/app/admin/orcl/udump/orcl_ora_3868.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/product/10201/
System name: Linux
Node name: rhel131
Release: 2.6.9-42.ELsmp
Version: #1 SMP Wed Jul 12 23:27:17 EDT 2006
Machine: i686
Instance name: orcl
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 3868, image: oracle@rhel131 (TNS V1-V3)

*** 2008-10-22 03:22:09.566
*** ACTION NAME:() 2008-10-22 03:22:09.564
*** MODULE NAME:(sqlplus@rhel131 (TNS V1-V3)) 2008-10-22 03:22:09.564
*** SERVICE NAME:(SYS$USERS) 2008-10-22 03:22:09.564
*** SESSION ID:(159.6) 2008-10-22 03:22:09.564
Start dump data blocks tsn: 9 file#: 9 minblk 1 maxblk 3
Block 1 (file header) not dumped: use dump file header command
buffer tsn: 9 rdba: 0x02400002 (9/2)
scn: 0x0000.001398aa seq: 0x02 flg: 0x00 tail: 0x98aa1d02
frmt: 0x02 chkval: 0x0000 type: 0x1d=KTFB Bitmapped File Space Header
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x0CEB6800 to 0x0CEB8800
CEB6800 0000A21D 02400002 001398AA 00020000 [......@.........]
CEB6810 00000000 00000009 00000080 00000500 [................]
CEB6820 00000001 00000000 00000000 00000007 [................]
CEB6830 00000488 00000001 00000008 00000000 [................]
CEB6840 00000000 00000000 00000000 00000000 [................]
CEB6850 00000009 00000080 00000000 00000000 [................]
CEB6860 00000000 00000000 00000000 00000000 [................]
Repeat 504 times
CEB87F0 00000000 00000000 00000000 98AA1D02 [................]
File Space Header Block:
Header Control:
RelFno: 9, Unit: 128, Size: 1280, Flag: 1
AutoExtend: NO, Increment: 0, MaxSize: 0
Initial Area: 7, Tail: 1160, First: 1, Free: 8
Deallocation scn: 0.0
Header Opcode:
Save: No Pending Op
buffer tsn: 9 rdba: 0x02400003 (9/3)
scn: 0x0000.001398aa seq: 0x01 flg: 0x00 tail: 0x98aa1e01
frmt: 0x02 chkval: 0x0000 type: 0x1e=KTFB Bitmapped File Space Bitmap
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x0CEB6800 to 0x0CEB8800
CEB6800 0000A21E 02400003 001398AA 00010000 [......@.........]
CEB6810 00000000 00000009 00000009 00000000 [................]
CEB6820 00000001 0000F7FF 00000000 00000000 [................]
CEB6830 00000000 00000000 00000001 00000000 [................]
CEB6840 00000000 00000000 00000000 00000000 [................]
Repeat 506 times
CEB87F0 00000000 00000000 00000000 98AA1E01 [................]
File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 1, Free: 63487
0100000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000

从第3个块开始,记录了位图的信息.
01是16进制转换为二进制就是0000 0001,经过高位低位的字节交换得出的结果是1000 0000(linix平台为little-Endian),

表示分配了一个区间

下面再分配一个区间
SQL> alter table test allocate extent;

Table altered.


此时的位图变成了:
buffer tsn: 9 rdba: 0x02400003 (9/3)
scn: 0x0000.00139a4b seq: 0x01 flg: 0x00 tail: 0x9a4b1e01
frmt: 0x02 chkval: 0x0000 type: 0x1e=KTFB Bitmapped File Space Bitmap
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x0CEB6800 to 0x0CEB8800
CEB6800 0000A21E 02400003 00139A4B 00010000 [......@.K.......]
CEB6810 00000000 00000009 00000009 00000000 [................]
CEB6820 00000002 0000F7FE 00000000 00000000 [................]
CEB6830 00000000 00000000 00000003 00000000 [................]
CEB6840 00000000 00000000 00000000 00000000 [................]
Repeat 506 times
CEB87F0 00000000 00000000 00000000 9A4B1E01 [..............K.]
File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 2, Free: 63486
0300000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000

03代表0000 0011,经过高低位的转换也就是1100 0000,代表前两个区间被分配了.

在这个数据文件里再建立一个对象,共分配四个区间

SQL> create table test2 tablespace eric
2 as select * from dba_objects where 1=2;

Table created.

SQL> alter table test2 allocate extent;

Table altered.

SQL> /

Table altered.

SQL> /

Table altered.

SQL> col segment_name for a10
SQL> select segment_name,extent_id,block_id,blocks
2 from dba_extents where file_id=9;

SEGMENT_NA EXTENT_ID BLOCK_ID BLOCKS
---------- ---------- ---------- ----------
TEST 0 9 128
TEST 1 137 128
TEST2 0 265 128
TEST2 1 393 128
TEST2 2 521 128
TEST2 3 649 128

6 rows selected.

再转储文件头,区间位图已变化为:
buffer tsn: 9 rdba: 0x02400003 (9/3)
scn: 0x0000.00139d3d seq: 0x01 flg: 0x04 tail: 0x9d3d1e01
frmt: 0x02 chkval: 0x4d8d type: 0x1e=KTFB Bitmapped File Space Bitmap
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x0CEB6800 to 0x0CEB8800
CEB6800 0000A21E 02400003 00139D3D 04010000 [......@.=.......]
CEB6810 00004D8D 00000009 00000009 00000000 [.M..............]
CEB6820 00000006 0000F7FA 00000000 00000000 [................]
CEB6830 00000000 00000000 0000003F 00000000 [........?.......]
CEB6840 00000000 00000000 00000000 00000000 [................]
Repeat 506 times
CEB87F0 00000000 00000000 00000000 9D3D1E01 [..............=.]
File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 6, Free: 63482
3F00000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000

3F转换为二进制是0011 1111,高低位转换结果是1111 1100,也就是对应了前6个区间被分配了


再建立一个对象.
SQL> create table test3 tablespace eric
2 as select * from dba_objects where 1=2;

Table created.


SQL> select segment_name,extent_id,block_id,blocks
2 from dba_extents where file_id=9;

SEGMENT_NA EXTENT_ID BLOCK_ID BLOCKS
---------- ---------- ---------- ----------
TEST 0 9 128
TEST 1 137 128
TEST2 0 265 128
TEST2 1 393 128
TEST2 2 521 128
TEST2 3 649 128
TEST3 0 777 128

7 rows selected.

此时的位图变化为:

/u01/app/admin/orcl/udump/orcl_ora_3894.trc

File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 7, Free: 63481
7F00000000000000 0000000000000000 0000000000000000 0000000000000000

7F转换为二进制为0111 1111,经过位转换结果为1111 1110 ,前7个区已分配.
下面drop掉test2表看看


SQL> drop table test2;

Table dropped.

SQL> col segment_name for a10
SQL> select segment_name,extent_id,block_id,blocks
2 from dba_extents where file_id=9;

SEGMENT_NA EXTENT_ID BLOCK_ID BLOCKS
---------- ---------- ---------- ----------
TEST 0 9 128
TEST 1 137 128
TEST3 0 777 128

奇怪了,怎么还是7F?跟drop前是一样的.

/u01/app/admin/orcl/udump/orcl_ora_3897.trc

File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 7, Free: 63481
7F00000000000000 0000000000000000 0000000000000000 0000000000000000


下面比较了一下最后两后的trace文件,也没有发现不同点.

[oracle@rhel131 ~]$ diff /u01/app/admin/orcl/udump/orcl_ora_3894.trc

/u01/app/admin/orcl/udump/orcl_ora_3897.trc
1c1
< /u01/app/admin/orcl/udump/orcl_ora_3894.trc
---
> /u01/app/admin/orcl/udump/orcl_ora_3897.trc
13c13
< Unix process pid: 3894, image: oracle@rhel131 (TNS V1-V3)
---
> Unix process pid: 3897, image: oracle@rhel131 (TNS V1-V3)
15,19c15,19
< *** 2008-10-22 03:46:04.029
< *** ACTION NAME:() 2008-10-22 03:46:04.028
< *** MODULE NAME:(sqlplus@rhel131 (TNS V1-V3)) 2008-10-22 03:46:04.028
< *** SERVICE NAME:(SYS$USERS) 2008-10-22 03:46:04.028
< *** SESSION ID:(146.56) 2008-10-22 03:46:04.028
---
> *** 2008-10-22 03:47:50.875
> *** ACTION NAME:() 2008-10-22 03:47:50.874
> *** MODULE NAME:(sqlplus@rhel131 (TNS V1-V3)) 2008-10-22 03:47:50.874
> *** SERVICE NAME:(SYS$USERS) 2008-10-22 03:47:50.874
> *** SESSION ID:(146.61) 2008-10-22 03:47:50.874


终于找到原因了,是10g recyclebin引起的。

在drop test2时,没有清空回收站的信息,所以在文件头还是会记录空间已分配,试了另外一个表就知道原因了。

SQL> drop table test purge;

Table dropped.

再来看dump出来的文件
File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 0, Free: 63483
7C00000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000

变成7C了,转成二进制是0111 1100,高低位转换后就成为0011 1110

再来purge test2.

SQL> purge table test2;

Table purged.

dump出来的信息为:

File Space Bitmap Block:
BitMap Control:
RelFno: 9, BeginBlock: 9, Flag: 0, First: 0, Free: 63487
4000000000000000 0000000000000000 0000000000000000 0000000000000000

变成40了,转成二进制是0100 0000,高低位转换后就成为0000 0010了.

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

表空间uniform size和 autoallocate的区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ASP空间和PHP空间的区别

这篇文章主要介绍“ASP空间和PHP空间的区别”,在日常操作中,相信很多人在ASP空间和PHP空间的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP空间和PHP空间的区别”的疑惑有所帮助!接下来,请跟
2023-06-07

sed模式空间和暂存空间的区别

sed编辑器逐行处理文件,并将输出结果打印到屏幕上。sed命令将当前处理的行读入模式空间(pattern space)进行处理,sed在该行上执行完所有命令后就将处理好的行打印到屏幕上(除非之前的命令删除了该行),sed处理完一行就将其从模
2022-06-04

国内空间和国外空间的区别是什么

1. 价格:国内空间相对便宜,而国外空间价格较高。2. 速度和稳定性:由于国外空间的服务器距离较远,导致访问速度较慢,并且受网络波动影响较大,而国内空间访问速度更快,稳定性更高。3. 支持的语言和技术:国外空间通常支持更多的语言和技术,如A
2023-06-04

云服务器和空间的区别

云服务器和空间是两个不同的概念,但它们有一些相似之处。云服务器通常指的是用来托管计算机、服务器或其他资源的服务器平台,而空间通常指的是存储空间,通常用于存储电子邮件、图像、视频、音频、文档等等。云服务器的优势在于它的灵活性和弹性,它可以根据业务需求来动态地扩大或缩小托管的数据中心的规模。而空间则更多地涉及到存储和管理方面,它需要考虑到物理空间的大小,以及数据的安全性和访问控制。同时,空间还需
2023-10-26

sed模式空间和暂存空间的区别是什么

本篇内容主要讲解“sed模式空间和暂存空间的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sed模式空间和暂存空间的区别是什么”吧!sed编辑器逐行处理文件,并将输出结果打印到屏幕上。
2023-06-09

云服务器和云空间的区别

云服务器(CloudServer)是一种云计算服务,它允许用户将数据存储在云服务器上,这些数据可以通过网络访问并在多台计算机上共享。云计算服务提供商通常会为用户提供云服务器,这是因为它可以帮助用户更快地获取所需的服务,而不必管理多个计算机或服务器。云服务器通常采用虚拟化技术来提高效率。云计算服务通常会使用多种技术来管理数据。例如,它可以使用云存储服务来存储用户的数据,并提供自动备份和恢复功能
2023-10-26

阿里云时空数据库和空间的区别

简介阿里云时空数据库是一种基于云计算平台的时空数据管理工具,它提供了一种高效、可靠的方式来存储和处理时空数据。而空间则是指地理空间信息,它涵盖了地理位置、地图投影、坐标系等方面的知识。详细说明1.数据存储方式阿里云时空数据库采用的是关系型数据库的方式进行数据存储。它支持多种数据类型,包括数值型、字符串型、日期型等。用户
阿里云时空数据库和空间的区别
2024-01-19

云服务器和空间的区别在哪

云服务器(CloudServer)是一种提供服务器托管和虚拟化服务的云计算基础设施。与传统服务器相比,云服务器具有如下优点:性能和稳定性:与传统的服务器相比,云服务器能够以非常高的效率和稳定性运行,无论是在全球不同的地理位置,还是在不同的使用者的设备上,都能够提供良好的性能和高可用性。灵活性和可扩展性:云服务器提供了一种高度灵活的方式,可以根据需要进行扩展或缩减。与传统的服务器相比,云服务器可以根据使用者的使用需求进行...
2023-10-27

虚拟空间和云服务器的区别

虚拟空间和云服务器都是为了存储和处理数据而设计的云计算平台。它们都可以提供灵活和可扩展的存储和数据处理功能,以帮助用户更有效地管理他们的资源。以下是它们的一些区别:存储类型:虚拟空间通常只支持虚拟机(VM),而云服务器通常支持更广泛的存储类型,如RDS、HA、SAN等。数据存储方式:虚拟空间通常支持本地文件系统、云存储等多种数据存储方式。相比之下,云服务器通常支持更广泛的数据分布式存储和复制机制。数据访问方...
2023-10-27

云服务器和云空间的区别在哪

云服务器和云空间是两个不同的概念,它们的区别如下:云服务器:指用来托管计算机、服务器的服务器平台,通常采用云存储、CDN等服务来满足用户的需求。用户通过租用服务器来使用云服务器,可以在不同的位置和设备上访问自己的服务器。云空间:指云服务器的一个虚拟空间,类似于一个小型的私人空间,用户可以将自己的文件、应用程序等存储在这个空间中。云空间通常采用CDN等服务来加速访问速度,并可以方便地进行分享
2023-10-26

云服务器和空间的区别在哪里

可用性:云服务器提供的是可用性(HA)功能,它可以在不需要用户干预的情况下将计算任务分配给多台云服务器上的计算机。如果需要,云服务器可以扩展其资源,以提高可用性。可靠性:云服务器使用多个数据中心提供的资源,这些数据中心是由云服务提供商管理的,并且有备份和灾难恢复计划。云服务器还可以监控资源的使用情况,以便在需要时进行调
云服务器和空间的区别在哪里
2023-10-28

云主机和云空间的区别是什么

云主机和云空间是两种不同的云计算服务,它们的主要区别在于用途和功能。云主机是一种虚拟服务器,用户可以通过云服务提供商租用虚拟服务器来托管网站、应用程序等,具有独立的操作系统和资源,可以自由配置和管理。云主机通常用于运行需要大量计算资源和性能
云主机和云空间的区别是什么
2024-05-14

购买域名和空间的区别是什么

购买域名和空间是建立网站的两个基本步骤,它们之间的区别如下:1、域名是网站的名称,空间是网站的存储空间。域名是网站的唯一标识符,用于让用户找到您的网站;空间则是您存储网站文件、图片、数据库等内容的地方。2、域名是必需的,而空间是可选的。如果
2023-03-21

云服务器和空间的区别是什么

云服务器(CloudServer)是一种提供高性能计算和存储服务的服务器,通常用于创建虚拟私有云(VirtualPrivateCloud)。与之相比,空间服务器是一种提供存储空间和数据共享的服务器,通常用于创建私有云(PrivateCloud)。它们的区别在于:数据存储和访问方式:云服务器一般会部署在公有云平台上,客户可以通过公有云平台访问其数据。空间服务器通常需要自己的硬件设备和网络连接来实现数据存储和访问。成本:空间服务器的初始成本会相对较...
2023-10-27

域名空间和服务器的区别有哪些

域名空间和服务器的区别如下:1. 域名空间是一个命名系统,用于将域名映射到IP地址,以便用户可以访问网站。服务器则是一台计算机,用于存储和提供网站内容。2. 域名空间是一个层次结构,由多个域名组成,包括顶级域名、二级域名和子域名等。服务器则
2023-06-11

云服务器和云空间的区别是什么

云服务器和云空间是两个不同的概念。云服务器(CloudServer)是一种云计算服务,其主要目的是提供虚拟化、高可扩展性和快速部署等特性,为用户提供高性能、弹性、可靠、安全和可管理的云服务。云服务器提供了多种云计算服务,包括虚拟化、容器化、负载均衡、云存储、数据库等等。云空间(CloudSpace)是一种云计算空间,其主要目的是提供更大的存储和计算能力,为用户提供更加稳定安全的云计算服务,例
2023-10-26

编程热搜

目录