oracle数据库逻辑结构Word文档格式.docx
- 文档编号:5252025
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:15
- 大小:74.30KB
oracle数据库逻辑结构Word文档格式.docx
《oracle数据库逻辑结构Word文档格式.docx》由会员分享,可在线阅读,更多相关《oracle数据库逻辑结构Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
在数据库缓冲区中的每一个块都是一个数据块,一个数据块不能跨越多个文件。
数据块的构造主要包括:
·
标题:
包括一般的块信息,如块地址,段类型等。
表目录:
包括有关表在该数据块中的行信息。
·
Oracle体系构造第2章行目录:
包括有关在该数据块中行地址等信息。
行数据:
包括表或索引数据。
一行可跨越多个数据块。
空闲空间:
分配空闲空间是用于插入新的行和需要额外空间的行更新。
通过空间管理参数pctfree可控制空闲空间的使用。
空闲空间的管理既可以是自动的也可以是手动的。
在数据操作中,有两种语句可以增加数据库块的空闲空间:
一个是Delete删除语句,另一个是Update更新现有行。
释放的空闲空间可用于insert语句,假设insert语句是与产生空闲空间的语句在同一个事务之中,并在其后执行,那么insert语句可直接使用生成的空闲空间。
假设insert语句是在一个与产生空闲空间的语句相别离的事务中,那么insert语句可在其他事务提交后,并在其需要空间时,使用之前产生的空闲空间。
数据块中释放的空间可能是连续的,也可能不连续。
Oracle只有在出现以下情况时,才会合并数据块的空闲空间:
当insert或update语句要使用一个数据块,该数据块的空闲空间足以存储新的一行,而且空闲空间均是碎片,数据块中连续空间无法插入一行的时候。
除此而外,Oracle在系统性能下降时也需要压缩数据块的空间。
可以对空闲空间产生影响的参数有两个:
pctfree和pctused。
对于手工管理的表空间,在特定段中的所有数据块,可使用两个空间管理参数pctfree和pctused来控制insert和update对空闲空间的使用。
当创立或修改表时可指定这两个参数。
创立或修改一个拥有自己的索引段的索引时可指定pctfree参数。
pctfree参数为块中行的更新预留了空闲空间的最小百分比,默认值为10。
例如,假定在Createtable语句中指定了pctfree为20,那么说明在该表的数据段内每个数据块的20%被作为可利用的空闲空间,用于更新已在数据块内存在的数据行。
其余80%是用于插入新的数据行,直到到达80%为止。
显然,pctfree值越小,那么为现存行更新所预留的空间越少。
因此,假设pctfree设置得太高,那么在全表扫描期间增加I/O,浪费磁盘空间;
假设pctfree设置得太低,那么会导致行迁移。
pctused参数设置了数据块是否是空闲的界限。
当数据块的使用空间低于pctused的值时,此数据块标志为空闲,该空闲空间仅用于插入新的行。
假设数据块已经到达了由pctfree所确定的上边界时,Oracle就认为此数据块已经无法再插入新的行。
例如,假定在Createtable语句中指定pctused为40,那么当小于或等于39时,该数据块才是可用的。
所以,可将数据块填得更满,这样可节省空间,但却增加了处理开销,因为数据块的空闲空间总是要被更新的行占据,所以对数据块需要频繁地进展重新组织。
比较低的pctused增加了数据库的空闲空间,但减少了更新操作的处理开销。
所以,假设pctused设置过高,那么会降低磁盘的利用率导致行迁移;
假设pctused设置过低,那么浪费磁盘空间,增加全表扫描时的I/O输出。
pctused是与pctfree相对的参数。
那么,如何选择pctfree和pctused的值呢?
有个公式可供参考。
显然,pctfree和pctused的之和不能超过100。
假设两者之和低于100,那么空间的利用与系统的I/O之间的最正确平衡点是:
pctfree与pctused之和等于100%减去一行的大小占块空间大小的百分比。
例如,假设块大小为2048字节,那么它需要100个字节的开销,而行大小是390字节〔为可用块的20%〕。
为了充分利用空间,pctfree与pctused之和最好为80%。
那么,怎样确定数据块大小呢?
有两个因素需要考虑:
一是数据库环境类型。
例如,是DSS环境还是OLTP环境?
在数据仓库环境〔OLAP或DSS〕下,用户需要进展许多运行时间很长的查询,所以应当使用大的数据块。
在OLTP系统中,用户处理大量的小型事务,采用较小数据块可以获得更好的效果。
二是SGA的大小。
数据库缓冲区的大小由数据块大小和初始化文件的db_block_buffers参数决定。
最好设为操作系统I/O的整数倍。
2.区
区〔Extent〕也称为数据区,是一组连续的数据块。
当一个表、回滚段或临时段创立或需要附加空间时,系统总是为之分配一个新的数据区。
一个数据区不能跨越多个文件,因为它包含连续的数据块。
使用区的目的是用来保存特定数据类型的数据,也是表中数据增长的根本单位。
在Oracle数据库中,分配空间就是以数据区为单位的。
一个Oracle对象包含至少一个数据区。
设置一个表或索引的存储参数包含设置它的数据区大小。
3.段
段〔Segment〕是由多个数据区构成的,它是为特定的数据库对象〔如表段、索引段、回滚段、临时段〕分配的一系列数据区。
段内包含的数据区可以不连续,并且可以跨越多个文件。
使用段的目的是用来保存特定对象。
一个Oracle数据库有4种类型的段:
数据段:
数据段也称为表段,它包含数据并且与表和簇相关。
当创立一个表时,系统自动创立一个以该表的名字命名的数据段。
索引段:
包含了用于进步系统性能的索引。
一旦建立索引,系统自动创立一个以该索引的名字命名的索引段。
回滚段:
包含了回滚信息,并在数据库恢复期间使用,以便为数据库提供读入一致性和回滚未提交的事务,即用来回滚事务的数据空间。
当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创立和撤销。
系统有个默认的回滚段,其管理方式既可以是自动的,也可以是手工的。
临时段:
它是Oracle在运行过程中自行创立的段。
当一个SQL语句需要临时工作区时,由Oracle建立临时段。
一旦语句执行完毕,临时段的区间便退回给系统。
4.表空间
Oracle数据库〔tablespace〕是由假设干个表空间构成的。
任何数据库对象在存储时都必须存储在某个表空间中。
表空间对应于假设干个磁盘文件,即表空间是由一个或多个磁盘文件构成的。
表空间相当于操作系统中的文件夹,也是数据库逻辑构造与物理文件之间的一个映射。
每个数据库至少有一个表空间,表空间的大小等于所有附属于它的数据文件大小的总和。
在Oracle10g中有以下几种比较特殊的表空间:
〔1〕系统表空间
系统表空间〔systemtablespace〕是每个Oracle数据库都必须具备的。
其功能是在系统表空间中存放诸如表空间名称、表空间所含数据文件等数据库管理所需的信息。
系统表空间的名称是不可更改的。
系统表空间必须在任何时候都可以用,也是数据库运行的必要条件。
因此,系统表空间是不能脱机的。
系统表空间包括数据字典、存储过程、触发器和系统回滚段。
为防止系统表空间产生存储碎片以及争用系统资源的问题,应创立一个独立的表空间用来单独存储用户数据。
〔2〕SYSAUX表空间
SYSAUX表空间是随着数据库的创立而创立的,它充当SYSTEM的辅助表空间,主要存储除数据字典以外的其他对象。
SYSAUX也是许多Oracle数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。
〔3〕临时表空间
相对于其他表空间而言,临时表空间〔temptablespace〕主要用于存储Oracle数据库运行期间所产生的临时数据。
数据库可以建立多个临时表空间。
当数据库关闭后,临时表空间中所有数据将全部被去除。
除临时表空间外,其他表空间都属于永久性表空间。
〔4〕撤销表空间
用于保存Oracle数据库撤销信息,即保存用户回滚段的表空间称之为回滚表空间〔或简称为RBS撤销表空间〔undotablespace〕〕。
在Oracle8i中是rollbacktablespace,从Oracle9i开始改为undotablespace。
在Oracle10g中初始创立的只有6个表空间sysaux、system、temp、undotbs1、example和users。
其中temp是临时表空间,undotbs1是undo撤销表空间。
图2-5是表空间与数据库及数据文件之间的对应关系。
图2-5表空间与数据库及数据文件之间的对应关系
在管理表空间时应遵循以下原那么:
1〕使用多重表空间。
采用多重表空间可使数据库操作更灵敏。
主要表达在以下方面:
将用户数据与数据字典数据相别离,并将不同表空间的数据文件分别存储在不同磁盘上可以降低I/O竞争。
将一个应用的数据与其他应用相别离,可以防止表空间脱机时多个应用受到影响。
可根据需要将单个表空间脱机,从而获得较好的可用性。
通过为不同类型的数据库预留表空间,以到达优化表空间的目的,如更新较高的或只读,或临时段存储等。
备份单个表空间。
2〕为用户指定表空间限额。
要创立、管理与使用表空间,必须首先以sys用户并以assysdba身份登录数据库。
与Oracle9i不同,在Oracle10g中,启动SQL*Plus时的帐户和口令不需加引号。
命令格式是:
sqlplussys/<
syspassword>
assysdba
在Oracle10g中,创立和管理表空间所使用的数据字典和权限及语句可归纳如下。
1.与表空间有关的数据字典
查询和使用与表空间有关的元数据均可从以下数据字典中获得。
主要包括:
dba_tablespaces、dba_users、dba_ts_quotas、user_tablespaces、user_ts_quotas、user_extents、user_segments、user_free_space、dba_data_files、dba_extents、dba_free_space、dba_segments、dba_temp_files、dba_undo_extents、dba_rollback_segs、dba_data_files、v_$backup_datafile、v_$database_block_corruption、v_$datafile、v_$datafile_copy、v_$datafile_header、v_$rollstat、v_$segment_statistics、v_$undostat等。
以v_$开头的数据字典均保存为动态信息。
2.与使用表空间有关的系统权限
与表空间有关的主要系统权限有:
createtablespace、altertablespace、droptablespace、managetablespace和unlimitedtablespace等。
其中,unlimitedtablespace是允许用户无限制地访问所有表空间。
出于平安考虑,在授予该权限给用户时应慎重。
假设用户不需要该系统权限,最好撤销该权限,否那么用户会利用该权限蓄意创立大量对象或复制数据,从而塞满表空间导致数据库效劳器崩溃。
3.创立永久性的表空间
命令格式:
SQL>
create[undo]tablespacetablespace
[datafilefilespec[autoextend_clause][,filespec[autoextend_clause]]...]
[{minimumextentinteger[k|m]|blocksizeinteger[k]|{logging|nologging}
|defaultstorage_clause|{online|offline}
|{permanent|temporary}|extent_management_clause|segment_management_clause
}
[minimumextentinteger[k|m]|blocksizeinteger[k]
|{logging|nologging}|defaultstorage_clause|{online|offline}
]...
];
【例2-1】创立一个名为dalianren的表空间
createtablespacedalianrennologging
extentmanagementlocaluniformsize256k
segmentspacemanagementauto;
4.使一个表空间脱机
altertablespace<
tablespace_name>
offline;
【例2-2】将表空间dalianren脱机
altertablespacedalianrenoffline;
注意system表空间不能脱机。
5.使一个表空间联机
online;
【例2-3】将表空间dalianren联机
altertablespacedalianrenonline;
6.使表空间只读
readonly;
【例2-4】将表空间dalianren更改为只读
altertablespacedalianrenreadonly;
7.使表空间可读可写
readwrite;
【例2-5】将表空间dalianren更改为可读写
altertablespacedalianrenreadwrite;
8.创立临时表空间
createtemporarytablespace<
tempfile′<
data_file_path_and_file_name>
′
size<
megabytes>
mautoextend<
on|off>
extentmanagementlocaluniformsize<
extent_size>
;
【例2-6】创立临时表空间temp
createtemporarytablespacetemp
size500mautoextendoff
extentmanagementlocaluniformsize512k;
注意虽然语句altertablespace中带有temporary关键字,但不能使用带有temporary关键字的altertablespace语句将一个本地管理的永久表空间转变为本地管理的临时表空间。
必须使用createtemporarytablespace语句直接创立本地管理的临时表空间。
9.添加临时表空间的数据文件
addtempfile′<
path_and_file_name>
′size<
n>
m;
【例2-7】为临时表空间temp_ren添加数据文件
10.调整临时表空间的数据文件
alterdatabasetempfile′<
′resize<
mega_bytes>
【例2-8】调整临时表空间的数据文件大小
11.将表空间的数据文件或临时文件脱机
alterdatabase
datafile′<
′offline;
或
【例2-9】将表空间的数据文件或临时文件脱机
Alterdatabasetempfile′<
′online;
【例2-10】将临时表空间联机
13.删除表空间,但不删除其文件
droptablespace<
【例2-11】删除表空间dalianren,但不删除其文件
droptablespacedalianren;
includingcontents;
【例2-12】删除表空间dalianren及其包含的内容
droptablespacedalianrenincludingcontents;
15.删除包含目录内容和数据文件在内的表空间
includingcontentsanddatafiles;
【例2-13】删除表空间dalianren及其包含的内容以及数据文件
droptablespacedalianrenincludingcontentsanddatafiles;
16.当含有参照性约束时,删除包含目录内容和数据文件在内的表空间
includingcontentsanddatafilescascadeconstraints;
【例2-14】将表空间dalianren及其包含的内容、数据文件以及相关约束一同删除
droptablespacedalianrenincludingcontentsanddatafilescascadeconstraints;
17.表空间更名
Oracle9i中不能直接将表空间更名。
在Oracle10g可直接更名永久表空间和临时表空间。
但是,system和sysaux表空间不能更名。
old_tablespacename>
renameto<
new_tablespacename>
【例2-15】将表空间users更改为newusers
altertablespaceusersrenametonewusers;
在Oracle10g中,假设一个撤销表空间通过使用pfile的实例被更名,那么警告日志文件中将写入一个信息,提醒用户更改undo_tablespace的参数值。
18.多重临时表空间
在Oracle10g中增加了一个表空间组的概念,通过使用表空间组用户可以使用一个以上的表空间存储临时段。
表空间组是在第一个表空间被指定给该组时,由系统自动隐式创立的。
例如:
通过添加现有的表空间创立表空间组。
altertablespacetemptablespacegrouptemp_ts_group;
添加一个新的表空间给该已经创立的表空间组。
createtemporarytablespacetemp2
被指定给组的表空间可在视图中查询得到。
select*fromdba_tablespace_groups;
group_nametablespace_name
------------------------------------------------------------
temp_ts_grouptemp
temp_ts_grouptemp2
2rowsselected.
一旦创立了表空间组,就可以将其指定给用户或作为默认的临时表空间,就像一个表空间一样。
将表空间组指定给用户,作为临时表空间。
alteruserscotttemporarytablespacetemp_ts_group;
将表空间组作为默认的临时表空间。
alterdatabasedefaulttemporarytablespacetemp_ts_group;
表空间也可以从表空间组中移出。
altertablespacetemp2tablespacegroup;
查询表空间组。
1rowselected.
理论上,一个表空间组包含多少表空间是没有最大限制的,但必须至少包含一个表空间。
当最后一个表空间被删除后,该表空间组也被隐式地删除。
假设该表空间组仍然被指定做临时表空间,那么不可以删除该组中的最后一个表空间成员。
同时,表空间组不能与表空间同名。
列出表空间、表空间的文件、分配的空间、空闲空间以及下一个空闲分区,如下所示。
setlinesize132
setpagesize60
coltablespace_nameformata12
colfile_nameformata38
coltablespace_kbheading′TABLESPACE|TOTALKB′
colkby
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 数据库 逻辑 结构