Oracle 表空间创建&表空间拓展

目录

一. 表空间概述

二. 表空间创建

1. 创建格式

2. 创建实例

三. 表空间拓展

1. 拓展原因

2. 查看

3. 拓展方式


一. 表空间概述

表空间是Oracle数据库的逻辑结构,在一个ORACLE数据库中,可以有一个或多个表空间,而一个表空间对应着的是一个或多个物理的数据库文件。如果要对Oracle数据库做数据恢复,需要以表空间作为最小单位,进行恢复。表空间种容纳的数据库实体有表、视图、索引、聚簇、回退段和临时段等。需要注意的是,在创建数据库用户之前,需要先创建表空间,这样才好在创建用户时,给用户分配默认的表空间。

二. 表空间创建

1. 创建格式

CREATE [UNDO|TEMPORARY] TABLESPACE tablespace_name 

     DATAFILE 'path/tbs_file_name' [SIZE INTEGER[K| M]]  [REUSE] 

     [AUTOEXTEND [OFF | ON ] ]

     [NEXT INTEGER[K | M]]

     [MAXSIZE [UNLIMITED | INTEGER[K | M]]]

     [MINIMUM EXTENT INTEGER[K | M]]

     [BLOCKSIZE integer [k]]

     [DEFAULT STORAGE storage_clause]

     [ONLINE | OFFLINE]

     [LOGGING | NOLOGGING]

     [FORCE LOGGING]

     [EXTENT MANAGEMENT [DICTIONARY | LOCAL]]

     [AUTOALLOCATE | UNIFORM [SIZE INTEGER[K | M]]]

     [SEGMENT SPACE MANAGEMENT [AUTO | MANUAL]]

说明:

  • UNDO:创建一个回滚表空间,当没有指定回滚表空间时,使用system回滚段来进行事务管理。
  • tablespace_name:遵循Oracle命名规范。
  • DATAFILE 'path/tbs_file_name' [[SIZE|RESIZE] INTEGER[K|M|G]] [REUSE]:指定一个或多个数据文件路径和文件名;[[SIZE|RESIZE] INTEGER[K|M|G]]指定/更改表空间数据文件所占的空间大小,[K|M|G]是文件大小单位;[REUSE]表空间数据文件已经存在,则需要使用reuse注明。
  • [AUTOEXTEND [OFF|ON]]:禁止或允许自动扩展数据文件,默认情况下为OFF
  • [NEXT INTEGER[K|M]]:指定需拓展数据文件的磁盘空间大小,[K|M]为单位。
  • [MAXSIZE [UNLIMITED|INTEGER[K|M]]]:指定允许拓展的最大磁盘空间大小,UNLIMITED指当磁盘空间满(32G)时,才不允许再扩展数据文件。
  • [MINMUM EXTENT INTEGER[K|M]]:指定盘区大小是指定大小的整数倍,可以减小空间碎片。
  • [BLOCKSIZE integer [k]]:设定一个不标准的块的大小。如果要设置这个参数,必须设置db_block_size,至少一个db_nk_block_size,并且声明的integer的值必须等于db_nk_block_size。在临时表空间不能设置这个参数。
  • [DEFAULT STORAGE storage_clause]:该表空间创建的全部对象指定缺省的存储参数,没有指定时oracle将会为所有对象指定一些系统默认的存储参数。
  • [ONLINE | OFFLINE]:ONLINE是指对授权访问该表空间的用户可用。OFFLINE是指未完成的事物可以提交或回滚,但不能发起新的事物,也不能进行查询。
  • [LOGGING | NOLOGGING]:日志属性,它表示将来的表、索引等是否需要进行日志处理。默认值为LOGGING
  • [FORCE LOGGING]:表空间进入强制日志模式。
  • [PERMANENT | TEMPORARY]:指出表空间的属性,是永久表空间还是临时表空间,声明了这个参数后,不能声明block size
  • [EXTENT MANAGEMENT [DICTIONARY | LOCAL]] [AUTOALLOCATE | UNIFORM [SIZE INTEGER[K | M]]]:这是最重要的子句,说明了表空间如何管理范围。一旦你声明了这个子句,只能通过移植的方式改变这些参数。如果希望表空间本地管理的话,声明local选项。本地管理表空间是通过位图管理的。autoallocate说明表空间自动分配范围,用户不能指定范围的大小。注意:本地管理表空间只能存储永久对象。如果你声明了local,将不能声明default storage_clause,mininum extent、temporary.
  • [SEGMENT SPACE MANAGEMENT [AUTO | MANUAL]]:表空间段的管理方式,AUTO为系统自动管理,MANUAL为手工管理。默认为AUTO。

 

2. 创建实例

  • 创建表空间需在SQL plus中,登陆sysdba用户创建

su - oracle

sqlplus /nolog

conn /as sysdba;

  • 查看数据位置

查看Sql:select * from dba_data_files;

  • 创建表空间

创建一个初始空间为8G且自增的表空间命令:create tablespace tbs_name datafile '/home/oracle/app/oradata/orcl/tbsname.dbf' size 8G autoextend on next 200M maxsize unlimited;

  • 查看创建结果

查询表空间Sql:

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
  FROM dba_tablespaces t, dba_data_files d
 WHERE t.tablespace_name = d.tablespace_name
 GROUP BY t.tablespace_name;

三. 表空间拓展

1. 拓展原因

表空间无法自动拓展,主要有两个原因,一个是磁盘资源不足,一个是到了最大值。其中判断最大值需要知道表空间数据文件有两种,一种是固定大小的,最大值就是其设置大小;一种是可以自增的,自增的也可以设置一个最大值,如果不设置,那么就会默认一个最大值,默认最大值是32G。

 

 

当磁盘资源不足时,就需要通过拓展磁盘资源的手段,增加磁盘空间。如果是达到了数据文件的最大值,就需要通过以下方式进行表空间拓展。

2. 查看

查看表空间使用情况Sql:

SELECT b.tablespace_name AS "表空间",
       b.file_name AS "物理文件名",
       b.bytes / 1024 / 1024 AS "当前大小(M)",
       (b.bytes - SUM(nvl(a.bytes, 0))) / 1024 / 1024 AS "已使用(M)",
       substr((b.bytes - SUM(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) AS "使用率(%)",
       CASE b.autoextensible
         WHEN 'YES' THEN
          '是'
         ELSE
          '否'
       END AS "是否自增",
       b.maxbytes / 1024 / 1024 AS "自增最大容量(M)"
  FROM dba_free_space a, dba_data_files b
 WHERE a.file_id = b.file_id
   AND a.tablespace_name IN ('TBS_NAME')
 GROUP BY b.tablespace_name, b.file_name, b.bytes, b.autoextensible, b.maxbytes
 ORDER BY b.tablespace_name;

 

也可以在plsql查看

3. 拓展方式

  • 首选为表空间增加数据文件(表空间达到32G上线,需增加表空间文件)

alter tablespace TBS_NAME

add datafile path/tbs_file_name1.dbf' --数据文件名

size 100M --初始大小

autoextend on next 1M maxsize 8192M; --自增,每次增加1M,最大为8192M(8192M可为)

  • 更改表空间

alter database datafile 'path/tbs_file_name1.dbf' resize 1024m;

  • 固定大小表空间,设置文件自动扩展

alter database datafile 'path/tbs_file_name1.dbf' autoextend on next 1M maxsize 8192M;

  • 多个表空间可以切换Undo表空间

alter system set undo_tablespace = TBS_NAME;

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

琳妹妹的辉哥哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值