管理表文档格式.docx

上传人:b****2 文档编号:13266951 上传时间:2022-10-09 格式:DOCX 页数:10 大小:16.43KB
下载 相关 举报
管理表文档格式.docx_第1页
第1页 / 共10页
管理表文档格式.docx_第2页
第2页 / 共10页
管理表文档格式.docx_第3页
第3页 / 共10页
管理表文档格式.docx_第4页
第4页 / 共10页
管理表文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

管理表文档格式.docx

《管理表文档格式.docx》由会员分享,可在线阅读,更多相关《管理表文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

管理表文档格式.docx

-----ROWID提供了访问一个表中一行数据的最快机制。

数据对象号相对文件号块号行号

RRR

BBBBBB

FFF

000000

一个扩展ROWID在磁盘上需要10个字节的存储空间,它是用18个字符来显示。

扩展ROWID的组成如下:

1.数据对象号:

被赋予每一个对象,它在一个数据库中是惟一的。

2.相对文件号:

对同一个表空间中的每一个文件是惟一的。

3.块号:

为相对文件中包含数据行的块的位置。

4.行号:

标识了块头中行目录的位置。

ORACLE在内部存储扩展ROWID时,数据对象号需要32位(bits),相对文件号需要10位,块号需要22位,而行号则需要16号,加起来总共80位或10个字节。

下面让我们来查看一下ROWID:

SQL>

selectempno,ename,job,sal,rowid

2fromemp

3wheresal>

2000;

EMPNOENAMEJOBSALROWID

---------------------------------------------------------

7566JONESMANAGER2975AAAL+ZAAEAAAAAdAAD

7698BLAKEMANAGER2850AAAL+ZAAEAAAAAdAAF

7782CLARKMANAGER2450AAAL+ZAAEAAAAAdAAG

7788SCOTTANALYST3000AAAL+ZAAEAAAAAdAAH

7839KINGPRESIDENT5000AAAL+ZAAEAAAAAdAAI

7902FORDANALYST3000AAAL+ZAAEAAAAAdAAM

已选择6行。

让我们来分析一下ROWID这列的内容:

1.数据对象号为AAAL+Z

2.相对文件号为AAE

3.块号为AAAAAd

4.行号为AAM

ORACLE数据行的结构:

为了节省磁盘空间,ORACLE系统使用了一种特殊的数据行结构。

ORACLE数据行是存储在数据块中的,每个数据块中可以存放多个数据行。

每个数据行是以变长记录的形式存储在数据块中的。

通常一行中的列是按它们被定义的顺序存放的,并且末尾的空列不存储。

但是非末必的空列需要一个字节的存储长度。

1.行头:

用来存储该行中的列数,链接信息和行锁状态。

2.行数据:

是由一系列的列长和列值组成。

对于数据行中的每一列,ORACLE服务器存储列的长度和列的实际值。

3.列长:

一般列长需要一个字节。

但是如果列的长度超过了250个字节,列长就将为3个字节。

4.列值:

列的实际值紧接着列长字节后存放。

创建普通表:

conn/assysdba

已连接。

createtablescott.supplier

2(scodenumber(8),

3snamevarchar2(25),

4contactvarchar2(15),

5phonevarchar2(15),

6faxvarchar2(15))

7storage(initial100knext100k

8pctincrease0minextents1

9maxextents8)

10tablespaceusers;

表已创建。

selectowner,TABLE_NAME,TABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS

2fromdba_tables

3whereowner='

SCOTT'

;

OWNERTABLE_NAMETABLESPACE_NAMEINITIAL_EXTENT

----------------------------------------------------------------------------------------------

NEXT_EXTENTMIN_EXTENTSMAX_EXTENTS

---------------------------------

SCOTTDEPTUSERS65536

12147483645

SCOTTEMPUSERS65536

SCOTTBONUSUSERS65536

SCOTTSALGRADEUSERS65536

SCOTTSUPPLIERUSERS106496

大家发现MAX_EXTENTS这里我们设置的是8可是这里显示的确是2147483645,是不是我们设置不成功呢,其实不是,是因为我们的USERS表空间中本地管理的,是由操作系统来管理而不是ORACLE的数据字典来管理,因此它的MAX_EXTENTS这个参数不能应用到本地管理的表空间中,因此这个设置在这种情况下无效。

创建临时表:

临时表是一种特殊的表。

当需要对某一(也可是几个)表中的一批数据进行反复操作时,通过为这批数据创建一个临时表可能会简化操作并且有可能提高效率。

我们使用GOLBALTEMPORARY子句来创建临时表。

createglobaltemporarytable

2scott.emp_temp

3oncommitpreserverows

4as

5select*

6fromscott.emp

7wherejobnotlike'

SAL%'

临时表中存储的是会话私有数据,这些数据只在事务进行或会话期间存在。

可以通过ONCOMMITDELETEROWS或ONCOMMITPRESERVEROWS子句来控制数据存在的周期。

1.ONCOMMITDELETEROWS:

说明数据行只有在事务中可见,也是默认值。

2.ONCOMMITPRESERVEROWS:

说明数据行在整个会话中可见。

怎样来查看临时表呢?

其实和查看普通表是一样的

selectempno,ename,job,sal,deptno

2fromscott.emp_temp;

EMPNOENAMEJOBSALDEPTNO

-------------------------------------------------

7369SMITHCLERK80020

7566JONESMANAGER297520

7698BLAKEMANAGER285030

7782CLARKMANAGER245010

7788SCOTTANALYST300020

7839KINGPRESIDENT500010

7876ADAMSCLERK110020

7900JAMESCLERK95030

7902FORDANALYST300020

7934MILLERCLERK130010

已选择10行。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1