基础知识5——创建和管理表空间

创建和管理表空间
表空间时模式数据的仓库,包括数据字典.所有数据库必须有SYSTEM和SYSAUX表空间,实际中还有临时表空间和撤销表空间.在创建 数据库时,通常已经创建了这4个表空间.此后DBA可以为用户数据创建更多表空间,为撤销和临时数据创建更多表空间.

1   CREATE SMALLFILE TABLESPACE "NEWTBS"
2   DATAFILE 'D:\oracle\product\10.2.0\oradata\bob\newtbs01.dbf'
3   SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 200M
4   LOGGING
5   EXTENT MANAGEMENT LOCAL
6   SEGMENT SPACE MANAGEMENT AUTO
7   DEFAULT NOCOMPRESS;


1-表空间默认是smallfile,可以由多个数据文件组成,bigfile下只有一个数据文件
2-数据文件的名称和位置
3-创建的数据文件大小为100MB,变满后自动扩大10MB,最大为200MB,默认方式下不启用自动扩展
4-表空间中针对段的所有操作都生成重做,默认属性,也可为极少操作比如生成索引等禁用重做的生成
5-表空间将使用位图来分配区间,默认方式
6-表空间中的段将使用位图来跟踪块的使用情况,默认方式
7-表空间中的段不压缩,默认方式

所有表空间都应该在本地管理!

更改表空间
重命名表空间及其数据文件
ALTER TABLESPACE tablespaceoldname RENAME TO tablespacenewname;
改起来挺简单,但是很多站点依赖与命名约定将表空间与数据文件关联在一起,要重命名数据文件必须使数据文件脱机. 
具体请看:

http://blog.itpub.net/25025926/viewspace-1064894/

使表空间联机或脱机
ALTER TABLESPACE tablespacename OFFLINE [ NORMAL | IMMEDIATE | TEMPORARY ];

normal脱机默认方式,强制实施针对所有表空间数据文件的检查点,包含表空间的块的数据库缓冲区缓存中的每个脏缓冲区 都将写入到数据文件中,此后表空间和数据文件处于脱机状态.
immediate很极端,立即使表空间和数据文件脱机,不会转储任何脏缓冲区,这么整数据文件将受到损坏,联机之前必须应用重做日志的变更向量进行 恢复,只有文件已损坏,无法完成检查点时,才会这么整.
temporary脱机针对所有可以执行检查点操作的所有文件实施检查点,然后按顺序使表空间及文件脱机.任何受损的文件将立即脱机.

将表空间标记为只读:
ALTER TABLESPACE tablespacename [ READ ONLY | READ WRITE ]

只读后,不能用DML更改,但能删除,费解么?因为删除表并不对表产生实际影响,针对数据字典的事务,会删除描述表及其列的行;


重调表空间大小
可以向其添加数据文件,也可调整现有数据文件的大小. 如果创建文件时使用AUTOEXTEND,则可根据需要自动向上调整数据文件的大小,
否则只能使用alter database命令手动方式更改:

ALTER DATABASE DATAFILE filename RESIZE n [ M | G | T ];    --MGT指的是文件大小MB,GB,TB

比如来个例子:


alter database datafile 'd:\oracle\user02.dbf' resize 100m;


要向表空间添加一个文件:

alter tablespace tablespacename 
add datafile 'D:\oracle\newfile02.dbf' size 100m;

可添加自动扩展

alter database datafile  'D:\oracle\newfile02.dbf' autoextend on next 100m maxsize 2g;


更改警报阈值
实例的MMON进程准实时监控每个表空间的满度,默认表空间满度超过85%,将发出警报;超过97%发出严重警报.
建议用em管理警报阈值


删除表空间

DROP TABLESPACE tablespacename [ INCLUDING CONTENTS [ AND DATAFILES ] ];

如不指定INCLUDING CONTENTS关键字,表空间包含任何对象,则提示删除失败;如没指定AND DATAFILES关键字,则删除表空间
及其内容,但数据文件还保留在磁盘上,需操作系统命令删除(windows平台必须手动删除数据文件).




OMF
有了oracle管理的文件(oracle managed file OMF),DBA将不必了解有关文件系统的任何知识,将以完全自动的方式完成数据库文件的 创建,要启用OMF,请设置一部分或所有下列实例参数:

db_create_file_dest                     --指定所有数据文件的默认位置
db_create_online_log_dest_1     --指定联机重做日志文件的默认位置
db_create_online_log_dest_2
db_create_online_log_dest_3
db_create_online_log_dest_4
db_create_online_log_dest_5
db_recovery_file_dest               --设置归档重做日志文件和备份文件的默认位置.


除设置默认文件位置外,OMF还生成文件名并在默认方式下设置文件大小. 




又到了练习时间了,整个例子创建表空间并更改其属性,此后启用OMF

创建表空间

create tablespace newtbs
datafile 'D:\oracle\product\10.2.0\oradata\bob\newtbs_01.dbf' size 20m
extent management local autoallocate
segment space management auto;


在新的表空间创建表,并确定第一个区间的大小

create table newtab (c1 date) tablespace newtbs;

select extent_id,bytes from dba_extents
where owner='SYS' and segment_name='NEWTAB'



手动添加区间,重复执行以下命令来观察每个新区建的大小:

alter table newtab allocate extent




使表空间脱机

alter tablespace newtbs offline/online

设为只读,再改为可读写

alter tablespace newtbs read only/read write


启用OMF来创建数据文件

alter system set db_create_file_dest='D:\oracle\product\10.2.0\oradata\bob';

使用最少的语法创建表空间

create tablespace omftbs;


确定OMF文件的特性

select file_name,bytes,autoextensible,maxbytes,increment_by
from dba_data_files where tablespace_name='OMFTBS'

调整OMF文件,使其更合理

alter database datafile
'D:\oracle\product\10.2.0\oradata\bob\omf.dbf' resize 500m   soso 

删除表空间

drop tablespace omftbs including contents and datafiles;




管理表空间中的空间

区间管理:始终应该用本地管理,不要是用字典管理.

管理段空间:始终应该使用自动管理

要查看任何表空间是否使用手动管理,请用此命令:


select tablespace_name,segment_space_management from dba_tablespaces
TABLESPACE_NAME    SEGMENT_SPACE_MANAGEMENT
-----------------------------------
SYSTEM    MANUAL
UNDOTBS1    MANUAL
SYSAUX    AUTO
TEMP    MANUAL
USERS    AUTO
EXAMPLE    AUTO
BOBTEST    AUTO






继续练习,使用非默认的手动空间管理创建表空间:


create tablespace manualsegs segment space management manual;

手动技术确认新表空间存在

select segment_space_management from dba_tablespaces
where tablespace_name='MANUALSEGS';

在表空间中创建表和索引:

create table mantab (c1 number) tablespace manualsegs;
create index mantabi on mantab(c1) tablespace manualsegs;

新建将使用自动段空间管理(默认方式)的表空间:

create tablespace autosegs;



将对象移入新表空间

alter table mantab move tablespace autosegs;
alter index mantabi rebuild online tablespace autosegs;

确认对象位于正确的表空间中:

select tablespace_name from dba_segments
where segment_name like 'MANATAB%';

删除原始的表空间:

drop tablespace manualsegs including contents and datafiles;

将新表空间重命名为原来的名称:

alter tablespace autosegs rename to manualsegs;

删除表空间进行清理

drop tablespace manualsegs including contents and datafiles;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25025926/viewspace-1067918/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25025926/viewspace-1067918/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值