第5章存储管理Word文档格式.docx
《第5章存储管理Word文档格式.docx》由会员分享,可在线阅读,更多相关《第5章存储管理Word文档格式.docx(39页珍藏版)》请在冰豆网上搜索。
其中的“设置为默认永久表空间”选项,表示如果在创建用户时没有为该用户指定默认的表空间,将使用此表空间作为该用户的默认表空间。
在该用户下创建对象时,如果没有明确指定所属的表空间,则把创建的对象存放在此表空间中。
如果没有指定数据库的默认永久表空间,同时在创建用户时也没有指定默认永久表空间是哪一个,则会使用系统表空间作为该用户的默认永久表空间。
数据库的永久表空间不能被删除,除非指定了另外一个表空间作为默认永久表空间。
此处还可选择是否“加密”。
“临时”选项,指定表空间仅用于存放临时对象,永久性对象都不能存放在临时表空间中。
其中的“设置为默认临时表空间”选项,表示如果在创建用户时没有为该用户指定默认临时表空间,将使用此表空间作为该用户的默认临时表空间。
该用户进行的排序等操作都将使用此表空间作为临时存储的地方。
如果没有指定数据库的默认临时表空间,同时在创建用户时也没有指定默认临时表空间是哪一个,则会使用系统表空间作为该用户的默认临时表空间。
数据库的临时表空间不能被删除,除非指定了另外一个临时表空间作为默认临时表空间。
“还原”选项,为数据库的闪回(Flashback)特性提供撤销数据。
(3)状态。
可以选择表空间的状态为“读写”、“只读”和“脱机”,“读写”状态时允许用户对表空间进行读写操作,“只读”状态时用户只能对表空间进行读取,不能写入;
“脱机”状态不允许用户访问表空间。
(4)数据文件。
指定创建表空间所包含的数据文件。
如选中“使用大文件表空间”选项,则使用大文件(Bigfile)表空间。
其好处是减少了数据文件的数量,方便了数据文件的管理。
选用大文件表空间,则只能有一个数据文件,大文件表空间仅可用于Oracle10g版或更高版本的数据库,且仅在本地管理表空间中才能获得支持。
由于大文件表空间最大可达8EB,因此可以显著提高Oracle数据库的存储容量。
如果不使用大文件(Bigfile)表空间,则是Smallfile,此时可以为表空间创建多个数据文件,这种方式为默认方式。
在表空间“名称”文本框中输入“XXGCX”,在区管理中选中“本地管理”,状态选中“读写”,类型选中“永久”。
单击“添加”按钮,显示“添加数据文件”界面。
这里,可以为数据文件输入文件名、文件目录以及文件大小等参数。
其中,“重用现有文件”选项表示如果输入的文件已经存在将重用该文件;
在“存储”选项组中,如果选中“数据文件满后自动扩展(AUTOEXTEND)”复选框,则数据文件将会自动增长,同时还需指定最大文件的大小,如果没有选中“数据文件满后自动扩展(AUTOEXTEND)”复选框,则可以指定增量大小。
如输入文件名XXGCX.DBF,文件大小为100MB,选中“数据文件满后自动扩展(AUTOEXTEND)”复选框,增量大小为100KB,并选择最大文件大小为“无限制”,如图5-3所示。
图5-3添加数据文件界面
单击“继续”按钮返回“创建表空间”界面。
此时可以看到新创建的数据文件,还可以选择”继续”按钮添加数据文件。
在“创建表空间”界面的“存储”选项卡中,可以选择设置表空间的存储参数。
其中,“区分配”部分包括“自动”和“统一”两个选项,如果选择“自动”,则下一次扩展的区大小由Oracle系统自动确定;
如果选择“统一”,则可以指定区大小。
“段空间管理”部分包括“自动”和“手动”两种选项,决定了当向表中插入数据时,如何在段的区间里选择一个可用的数据块来存放数据。
如果选择“自动”单选按钮,则表空间中的对象将自动管理其空闲空间,也称为自动段空间管理(AutomaticSegmentSpaceManagement,ASSM),系统通过位图块(BitmapBlock,BMB)的组织结构来实现,这将有效提高空闲空间管理的性能;
如果选择“手动”,则表空间中的对象将使用空闲列表(Freelist)的形式来管理其空闲空间。
创建大文件(Bigfile)的表空间时,段空间管理必须是“自动”,而不能是“手动”,否则系统会提示出错。
Oracle建议使用自动段空间管理(ASSM)方式。
“压缩选项”决定数据库是否启用数据段压缩,可以有效降低磁盘和高速缓存占用率。
适用于在OLTP和数据仓库环境中。
默认为“不压缩”。
设置好的“存储”选项卡如图5-4所示。
图5-4存储选项卡
此时,创建上述XXGCX表空间对应的SQL语句如下。
CREATESMALLFILETABLESPACE"
XXGCX"
DATAFILE'
D:
\APP\ADMINISTRATOR\ORADATA\ORCL\XXGCX.DBF'
SIZE100M
AUTOEXTENDONNEXT100KMAXSIZEUNLIMITEDLOGGING
EXTENTMANAGEMENTLOCAL
SEGMENTSPACEMANAGEMENTAUTO
单击”确定”按钮,表空间创建成功。
此时查看表空间列表,可以看到新建的XXGCX表空间,该表空间大小为100MB,已经使用1MB,占用率为1%,空闲空间为99.0MB,为在线(ONLINE)状态,类型为PERMANENT(永久),区管理为LOCAL(本地管理),段管理为AUTO(自动),如图5-5所示。
图5-5查看新建的XXGCX表空间
5.1.2管理表空间
1.修改表空间
在表空间创建完成后,在OEM中可以选择修改表空间。
在图5-5中选择要修改的表空间,如刚刚创建的表空间XXGCX,,然后单击“编辑”按钮即可进行修改,如图5-6所示。
图5-6编辑XXGCX表空间
在“编辑表空间”界面中,可以看到只有能够修改的属性才处于编辑状态,一些不能被修改的属性呈灰色。
这是因为Oracle系统规定表空间的一些属性只能在创建表空间时设置,一旦表空间创建完成就不能被修改。
此时,可以选择修改表空间的名称和状态。
通过“操作”下拉列表框,可以进入不同的修改界面。
如“添加数据文件”、“类似创建”、“生成DDL”、“本地管理”、“显示表空间内容”和“脱机”等操作。
如选择修改“状态”为“脱机”时,有4种脱机模式可供选择。
(1)正常:
在脱机前将执行检查,将要脱机的表空间所对应的数据缓冲区中的“脏”数据写回数据文件,然后才脱机。
正常脱机模式不会丢失表空间的数据,表空间下次联机时也无需进行恢复。
如果表空间中的所有数据文件都没有错误,表空间可以正常脱机。
(2)临时:
在脱机前执行检查,脏数据能写入数据文件就写入,不能写入的就不写入。
这种脱机模式会损坏表空间中的数据。
如果表空间的数据文件因写入错误脱机,然后将表空间临时脱机,在将表空间联机之前需要介质恢复。
通常用于表空间中的数据部分损坏或丢失的情况。
(3)立即:
在脱机前不执行检查,脏数据也不写回数据文件。
如果数据库运行在非归档(Noarchivelog)模式下,表空间不能立即脱机。
立即脱机模式会损坏表空间中的数据,当联机表空间时需要介质恢复。
通常用于表空间中的数据全部损坏或丢失的情况。
(4)用于恢复:
将恢复集中的数据库表空间脱机,以便进行时间点恢复。
注意:
表空间脱机时尽量采用正常(Normal)方式,这样可以避免将表空间联机时进行介质恢复。
2.移动表空间
在Oracle中如果将表空间所对应的数据文件从一个目录移动到另外一个目录,使用OEM工具是无法完成的,只能使用命令的方式。
如果是系统表空间,如SYSTEM表空间,需依次执行下面的命令:
SQL>
SHUTDOWNIMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
STARTUPMOUNT
ORACLE例程已经启动。
TotalSystemGlobalArea778387456bytes
FixedSize1374808bytes
VariableSize486540712bytes
DatabaseBuffers285212672bytes
RedoBuffers5259264bytes
数据库装载完毕。
HOSTCOPYD:
\app\Administrator\oradata\orcl\system01.dbf
D:
\app\Administrator\oradata\system01.dbf
已复制1个文件。
ALTERDATABASERENAMEFILE
'
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF'
TO
\APP\ADMINISTRATOR\ORADATA\SYSTEM01.DBF'
;
数据库已更改。
AlterDatabaseOpen;
此时,如果通过下面的命令查看SYSTEM表空间的存储路径,可以发现已经发生了更改。
SELECTNAMEFROMV$DATAFILE;
NAME
------------------------------------------------------------
\APP\ADMINISTRATOR\ORADATA\SYSTEM01.DBF
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
\APP\ADMINISTRATOR\ORADATA\ORCL\XXGCX.DBF
已选择6行。
如果是非系统表空间,如XXGCX表空间,则无需关闭数据库,直接执行下面的命令即可以完成移动的操作。
ALTERTABLESPACExxgcxOFFLINE;
表空间已更改。
\APP\ADMINISTRATOR\ORADATA\ORCL\XXGCX.DBF
\APP\ADMINISTRATOR\ORADATA\XXGCX.DBF
ALTERTABLESPACExxgcxRENAMEDATAFILE
to
\APP\ADMINISTRATOR\ORADATA\XXGCX.DBF'
;
ALTERTABLESPACEXXGCXONLINE;
此时,查看查看XXGCX表空间的存储路径,可以发现已经发生了更改。
------------------------------------------------------
3.删除表空间
当不再需要表空间时,可以从数据库中删除表空间以及内容。
删除表空间的用户,必须具有DROPTABLESPACE系统权限。
在OracleEnterpriseManager工具中删除表空间,单击”删除”按钮,系统会显示警告信息,如图5-7所示。
图5-7删除表空间的警告信息
如果用户确认要删除,在单击”是”按钮,Oracle系统将删除此表空间。
通过命令的方式也可以删除表空间和所对应的数据文件,如下面的语句。
DROPTABLESPACEXXGCXINCLUDINGCONTENTSANDDATAFILES;
上面的语句在删除表空间时,同时删除表空间相对关的数据文件。
如果希望保留该数据文件,则使用下面的语句。
DROPTABLESPACEXXGCXINCLUDINGCONTENTS;
如果删除的表空间不包含表、视图或者其他数据库对象时,则无需指定INCLUDINGCONTENTS参数,即使用下面的语句。
DROPTABLESPACEXXGCX;
如果删除的表空间非空,则必须使用包含includingcontents参数的droptablespace语句,否则系统会提示出错。
5.1.3非标准Oracle块大小的表空间
Oracle11g在创建表空间时,如果没有指定BLOCKSIZE参数,则默认表空间使用DB_BLOCK_SIZE初始化参数指定的标准Oracle块大小。
对于一些用来存储非结构化数据,如图片、文件等的表空间来说,使用标准Oracle块大小的表空间在存取数据的效率较低,可以使用较大的非标准Oracle块大小的表空间,则就需要创建非标准Oracle块小大的表空间。
在Oracle11g中创建非标准Oracle块大小的表空间,则需设定DB_nK_Cache_Size系列初始化参数,指定非标准Oracle块大小的所使用的缓冲区大小,否则无法创建非标准Oracle块大小的表空间。
下面的例子显示标准Oracle块大小为8KB,如果希望创建Oracle块大小为16KB的表空间,则必须首先设置DB_16K_CACHE_SIZE。
SHOWPARAMETERDB_16K_CACHE_SIZE
NAMETYPEVALUE
-------------------------------------------
db_16k_cache_sizebiginteger0
ALTERSYSTEMSETDB_16K_CACHE_SIZE=16kSCOPE=BOTH;
系统已更改。
NAMETYPEVALUE
----------------------------------------
db_16k_cache_sizebiginteger16M
CREATETABLESPACETS_FILE
\APP\ADMINISTRATOR\ORADATA\ORCL\TS_FILE.DBF'
SIZE100MBLOCKSIZE16K;
表空间已创建。
DESCDBA_TABLESPACES;
名称是否为空?
类型
-------------------------------------------------------
TABLESPACE_NAMENOTNULLVARCHAR2(30)
BLOCK_SIZENOTNULLNUMBER
INITIAL_EXTENTNUMBER
NEXT_EXTENTNUMBER
MIN_EXTENTSNOTNULLNUMBER
MAX_EXTENTSNUMBER
.........
SELECTTABLESPACE_NAME,BLOCK_SIZEFROMDBA_TABLESPACES;
TABLESPACE_NAMEBLOCK_SIZE
-----------------------------------
SYSTEM8192
SYSAUX8192
UNDOTBS18192
TEMP8192
USERS8192
EXAMPLE8192
XXGCX8192
TS_FILE16384
已选择8行。
5.1.4表空间的联机和脱机
表空间在联机状态下,用户可以访问表空间中的所有数据文件;
表空间在脱机状态下,用户无法访问该表空间中的所有数据文件。
在有些情况下,需要将表空间脱机来完成某些操作,如下面的一些情况。
(1)部分数据库不可用,而允许正常访问数据库的其他部分。
(2)执行表空间的备份,尽管表空间联机状态下也可以进行备份。
(3)使某个应用程序对应的表在更新或维护该应用程序时暂时不可用。
Oracle系统中的SYSTEM和SYSAUX表空间不能脱机,其余表空间都可以将数据文件脱机,来完成某些操作后,再将表空间联机。
同时要求在将表空间联机时,这些数据文件必须全部存在。
Oracle系统可以使用ALTERTABLESPACE语句来实现表空间的联机和脱机。
如下面的语句将USERS表空间脱机。
ALTERTABLESPACEUSERSOFFLINE;
要将表空间联机,使用下面的语句。
ALTERTABLESPACEUSERSONLINE;
为了使用ALTERTABLESPACE语句将表空间联机或脱机,用户必须具有ALTERTABLESPACE或MANAGETABLESPACE的系统权限。
在OEM工具中执行联机或脱机表空间的操作比较简单,在表空间界面中选择“操作”下拉列表框中的“脱机”或“联机”选项,单击“开始”按钮即可。
其中脱机时一般选择“正常”的脱机模式,如图5-8所示。
图5-8将表空间脱机的
5.1.5与表空间相关的数据字典
Oracle11g系统中与表空间相关的主要数据字典请见表5-1。
表5-1有关表空间的数据字典
名称
说明
DBA_TABLESPACES
所有表空间信息
USER_TABLESPACES
当前用户可用的表空间信息
DBA_DATA_FILES
所有表空间和所对应的数据文件信息
DBA_TEMP_FILES
所有临时表空间和所对应的临时文件信息
DBA_USERS
所有用户的默认表空间和临时表空间等信息
V$TABLESPACE
所有表空间的名称和数量以及是否大文件格式等信息
V$DATAFILE
所有表空间对应的数据文件,包括名称、块大小、创建时间等信息
V$TEMPFILE
所有临时文件信息
下面以V$DATAFILE为例说明使用方法。
DESCV$DATAFILE;
-----------------------------------------------------
FILE#NUMBER
CREATION_CHANGE#NUMBER
CREATION_TIMEDATE
TS#NUMBER
RFILE#NUMBER
STATUSVARCHAR2(7)
ENABLEDVARCHAR2(10)
CHECKPOINT_CHANGE#NUMBER
CHECKPOINT_TIMEDATE
UNRECOVERABLE_CHANGE#NUMBER
UNRECOVERABLE_TIMEDATE
LAST_CHANGE#NUMBER
LAST_TIMEDATE
OFFLINE_CHANGE#NUMBER
ONLINE_CHANGE#NUMBER
ONLINE_TIMEDATE
BYTESNUMBER
BLOCKSNUMBER
............
SELECTNAME,BLOCKS,BYTESFROMV$DATAFILE;
NAMEBLOCKSBYTES
------------------------------------------------------------------
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF92160754974720
\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF97280796917760
\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF13440110100480
\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF6405242880
\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF12800104857600
\APP\ADMINISTRATOR\ORADATA\ORCL\XXGCX.DBF12800104857600
5.2数据文件
数据文件是Oracle数据库存储所有数据库数据的物理文件。
表空间的物理组成元素就是数据文件,一个表空间可以包含多个数据文件,并且每个数据文件只能属于一个表空间。
对数据文件的管理包括创建数据文件、向表空间添加数据文件、改变数据文件的大小以及联机脱机等操作。
5.2.1创建数据文件
在Oracle11g中创建数据文件可以使用OEM工具来实现。
创建