Oracle数据库管理之管理表空间和数据文件Word文档格式.docx
《Oracle数据库管理之管理表空间和数据文件Word文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle数据库管理之管理表空间和数据文件Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
Oracle将数据逻辑地存放在表空间,而物理地存放在数据文件里。
表空间可以被进一步划分成一些更小的逻辑储存单位。
在一个Oracle数据库中,每个数据文件只属于一个表空间和一个数据库。
在一个Oracle数据库中一般有两类表空间,分别是系统表空间和非系统表空间。
系统表空间是与数据库一起建立的,在系统表空间中存有数据字典、系统还原(回滚)段。
非系统表空间可以由数据库管理员创建,储存一些单独的段,包括用户的数据段、索引段、还原段和临时段等。
三、创建表空间语法
CREATE[TEMPORARY|UNDO]TABLESPACE表空间名
[DATAFILE子句]
[MINIMUMEXTENT正整数[K|M]]
[BLOCKSIZE正整数K]
[ONLINE|OFFLINE]
[LOGGING|NOLOGGING]
[DEFAULTSTORAGE存储子句]
[EXTENTMANAGEMENTDICTIONARY|LOCAL
[AUTOALLOCATE|UNIFORMSIZE正整数K|M]]
[SEGMENTSPACEMANAGEMENTAUTO|MANUAL]
;
TEMPORARY|UNDO
TEMPORARY表示创建临时表空间,UNDO表示创建回滚表空间,如未使用表示创建永久表空间。
DATAFILE子句
指定与表空间相关联的数据文件的位置、名称和大小。
语法如下:
DATAFILE|TEMPFILE‘文件名’SIZEK|MREUSE
[AUTOEXTENTOFF|ON[NEXT正整数K|M
MAXSIZEUNLIMITED|正整数K|M]]
SQL>
createtablespacemytbs01
datafile'
D:
\app\Student\oradata\mytbs01.dbf'
size5m
createtablespacemytbs02
datafile'
\app\Student\oradata\mytbs02_1.dbf'
size5m,
'
\app\Student\oradata\mytbs02_2.dbf'
autoallocate;
临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。
当临时表空间不足时,表现为运算速度异常的慢。
最好为每个数据库用户都指定一个公用的临时表空间,如果不指定,这些临时数据就都会放在SYSTEM表空间中,从而产生大量的碎片。
创建临时表空间,不能使用非标准数据块,另临时表空间不能存放永久对象。
临时表空间具有以下特征:
临时数据文件不能置为只读
临时数据文件不能重命名
监时数据文件的日志方式总是NOLOGGING
创建一个本地管理的临时表空间TEMPTBS
createtemporarytablespacetemptbs
tempfile'
E:
\app\ZY\product\10.2.0\orcl\temp01.ora'
size50Mautoextendonnext5Mmaxsizeunlimited
extentmanagementlocal;
把临时数据放在TEMP临时表空间
alterdatabasedefaulttemporarytablespacetemptbs;
查看临时文件信息
selectfile#,status,bytes,namefromv$tempfile;
创建回滚表空间UNDOTBS
createundotablespaceundotbs
\app\ZY\product\10.2.0\orcl\undo01.ora'
size40M;
创建undo表空间时不能指定统一区大小的选项(uniform),否则出错。
把回滚数据放在undotbs1回滚表空间
altersystemsetundo_management=autoscope=spfile;
altersystemsetundo_tablespace=undotbsscope=spfile;
创建表空间的条件
1.具有createtablespace的权限,DBA角色具有该权限,sysdba,sysoper
2.创建的是bigfiel,还是smallifle超过T级别应考虑bigfile
3.新建的表空间的I/O,是否会导致磁盘I/O不够用
4.datafile后跟的路径应该具备写的权限
临时表空间扩容:
--
(1)重置临时文件大小
alterdatabasetempfile'
/opt/oracle/oradata/orcl/t2.dbf'
resize150m;
--
(2)让临时文件能自动扩展
autoextendonnext10mmaxsize50m;
--(3)增加临时文件
altertablespacet2addtempfile'
/disk8/oracle/t2b.dbf'
size50m;
--查看临时文件
selectTABLESPACE_NAME,FILE_NAME,BYTES/1024/1024"
SIZE(MB)"
fromdba_temp_files;
--默认临时表空间:
select*fromdatabase_properties;
--修改默认临时表空间:
ALTERDATABASEDEFAULTTEMPORARYTABLESPACET2;
默认临时表空间最好要指定一下,如果没有指定默认的临时表空间,那么将使用system表空间作为排
序区
默认临时表空间有一定的限制:
默认临时表空间不能删除
默认临时表空间不能脱机
获得创建表空间的语句:
SELECTdbms_metadata.get_ddl('
TABLESPACE'
'
SYSTEM'
)FROMdual;
--查看缺省是BIGFILE还是SMALLFILE,当缺省为SMALLFILE,创建表空间不指定表空间类型则为SMALLFILE
建议创建表空间时最好带上[BIGFILE|SMALLFILE]参数,以免参数设置导致创建了不合理的表空间
注意:
大表文件(bigfile)最大可以存放个T的容量。
头文件的大小达到了G-->block,普通的头文件大小为M---->
block。
createbigfiletablespace<
>
datafile<
........;
好处:
减少了数据文件的个数,管理方便,大的对象的存放得到了优化。
减少了control文件的信息,控制文件定义了datafile的个数。
bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。
四、表空间的状态属性
离线(Offline)状态
表空间不可用。
任何保存在该表空间中的数据库对象将不可存取。
具有Normal、Temporary、Immediate和ForRecovery四种模式。
在线(Online)状态
用户可以访问其中的数据。
只读(Read-Only)状态
表空间中的表只能读,不能更新。
读写(Read-Write)状态
表空间能正常使用的状态。
五、表空间状态设置
把表空间users以Temporary方式置于离线状态
altertablespaceusersofflinetemporary
把表空间users置于在线状态
altertablespaceusersonline
把表空间users置于只读状态
altertablespaceusersreadonly;
把表空间users置于读写状态
altertablespaceusersreadwrite;
六、表空间的管理方式
字典管理:
oracle8i(不包括i),只存在一种表空间的管理模式,即字典管理表空间(DMT)
DMT是指oracle的空间分配或回收是通过数据库中的数据字典表来记录和管理的
用于管理的两个数据字典表分别是:
UET$(usedextents)和FET$(freeextents)
其工作方式是:
当建立一个新的段或者段在表空间时,oracle通过一系列的SQL语句来完成这个工作
且和前面的两个字典表有关,在繁忙的系统中会造成竞争和等待(另一个DMT会带来的问题是空间碎片)
本地管理(LMT):
在i的R2版本后成了默认的选项
LMT在表空间的数据文件头部加入了一个位图区域,在其中记录每个extent的使用状况
当extent被使用或者被释放,oracle会更新头部的记录来反映这个变化,不产生回滚信息
因为仅仅操作数据文件头部的几个数据块,不用操作数据字典,LMT比DMT要快,尤其是在繁忙的时候更明显
七、查询表空间信息
查询表空间的基本信息
selecttablespace_name,contents,status
fromdba_tablespaces;
查询表空间的默认存储参数
selecttablespace_name,initial_extent,
next_extent,extent_management
查询表空间中数据文件的信息
selecttablespace_name,file_name,
bytes/(1024*1024)MB
fromdba_data_files;
查询表空间中空闲空间大小
selecttablespace_name,
sum(bytes/(1024*1024))free_MB
fro