Oracle表空间扩建

1. Oracle表空间

Oracle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间。一个数据库可以包含多个表空间,一个表空间只能属于一个数据库,一个表空间包含多个数据文件,一个数据文件只能属于一个表空间。

 

  • 从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。
    • Segment(段) :段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。
    • Extent (区间):分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象
  • 从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。
  • Oracle安装完数据库的一般流程:先建表空间(分区)-->再建用户(分配相应的表空间和用户权限)-->登陆用户-->建表
 --查看表空间
select * from v$tablespace

2. 表空间创建

create tablespace linkmes_eq --表空间名称
datafile 'C:\app\Administrator\oradata\linkmes\linkmes_eq.dbf' size 500M --存储地址 初始大小500M
autoextend on next 10M maxsize 200M; --每次扩展10M,如果不扩展用off,无限制扩展 unlimited

CREATE TABLESPACE linkmes_eq DATAFILE 'C:\app\Administrator\oradata\linkmes\linkmes_eq.dbf' SIZE 1024M  AUTOEXTEND OFF;--不扩展表空间

CREATE TEMPORARY TABLESPACE linkmes_tmp TEMPFILE --创建临时表空间
'C:\app\Administrator\oradata\linkmes\linkmes_tmp.dbf' SIZE 512M  AUTOEXTEND OFF;

3. 表空间属性

4. 删除表空间 

DROP TABLESPACE linkmes_eq INCLUDING CONTENTS AND DATAFILES; 

5. 改变表空间状态

5.1 使表空间脱机

ALTER TABLESPACE linkmes_eq OFFLINE;
-- 如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE linkmes_eq OFFLINE FOR RECOVER;

5.2 使表空间联机(在线)

-- 使表空间联机
ALTER TABLESPACE linkmes_eq ONLINE;

5.3 使表空间只读

--使表空间只读
ALTER TABLESPACE linkmes_eq READ ONLY;
--使表空间可读写
ALTER TABLESPACE linkmes_eq READ WRITE;

6. 扩展表空间 

  • 首先查看表空间的名字和所属文件 
select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space  from dba_data_files order by tablespace_name;
  • 增加数据文件 
ALTER TABLESPACE linkmes_eq ADD DATAFILE '/oracle/oradata/db/linkmes_eq02.dbf' SIZE 1000M;
  • 手动增加数据文件尺寸 
ALTER DATABASE DATAFILE '/oracle/oradata/db/linkmes_eq.dbf' RESIZE 4000M;
  • 设定数据文件自动扩展 
ALTER DATABASE DATAFILE '/oracle/oradata/db/linkmes_eq.dbf AUTOEXTEND ON NEXT 100M MAXSIZE 10000M;
  • 设定后查看表空间信息 
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,  (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" 
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

→飘渺的尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值