文章目录

  • 1 概述
    • 1.1 相关视图
    • 1.2 内存结构图示
  • 2 常用操作
    • 2.1 创建
    • 2.2 修改
    • 2.3 删除
    • 2.4 查询
  • 3 扩展
    • 3.1 ORA-01653:表无法在表空间中扩展
    • 3.2 ASSM 自动段空间管理

1 概述

1. 表空间(1) 表空间是一个逻辑的概念,真正存放数据的是数据文件(data files) (2) 1 个数据库 = N 个表空间(N >=1)1 个表空间 = N 个数据文件(N >= 1)-- 1 个数据文件 只能属于 1 个表空间
2. 建立表空间的作用(1) 控制数据库占用 '磁盘空间' 的大小(2) 不同类型的数据存储到不同的位置,有利于提高 'I/O' 性能,同时有利于备份和恢复等操作

1.1 相关视图

-- 数据文件
select * from dba_data_files;
select * from dba_temp_files;
-- 表空间
select * from dba_tablespaces;
select * from dba_free_space;
-- 权限
select distinct t.privilegefrom dba_sys_privs twhere t.privilege like '%TABLESPACE%';

1.2 内存结构图示

扩展:Oracle 体系结构详解(存储结构 + 内存结构 + 进程结构)

2 常用操作

2.1 创建

  • 语法:create tablespace

语法:可选子句有很多,以下仅列举常用的,具体的请参考官方文档

create [temporary | undo] tablespace "TBS"           -- '表空间类型及名称', 默认 '永久'
datafile 'D:\Oracle\TBS.dbf' size 10m                -- '数据文件的位置及大小'
[autoextend off] | [autoextend on next n maxsize m]  -- '是否自动扩展',默认 'off'
[loggin | nologgin]                                  -- '是否产生日志',默认 'loggin'
[segment space management auto]                      -- '段空间自动管理',默认 'auto', 建议默认
[extent management local [uniform size n]]           -- '表空间管理方式',dictionary | local(默认,推荐)

例1:创建一个固定表空间 “TBS01”,其大小为 10MB

create tablespace tbs01
datafile 'D:\Oracle\TBS01.dbf' size 10m;
-- 1.路径必须存在,否则报错!
-- 2.表空间名称默认大写,除非用引号注明,如 "tbs" 则为小写

例2:创建一个自增表空间 “TBS02”,其大小为 10MB,每次扩展 1MB,最大扩展到 20MB

create tablespace tbs02
datafile 'D:\Oracle\TBS02.dbf' size 10m
autoextend on next 1m maxsize 20m;

查询上述情况:1M = 1024KB,1KB = 1024 Byte

select t.tablespace_name, -- 表空间t.file_name, -- 数据文件名 t.autoextensible, -- 表空间是否自增t.bytes / 1024 / 1024 "SIZE(M)", -- 表空间初始值,单位 mt.increment_by * 8 / 1024 "NEXT(M)", -- 每次增加数据块的个数 1blok = 8KBt.maxbytes / 1024 / 1024 "MAXSIZE(M)" -- 表空间最大值,单位 mfrom dba_data_files twhere t.tablespace_name IN ('TBS01','TBS02');

查询截图:

2.2 修改

例1:修改数据文件的大小为 20M

alter database datafile 'D:\Oracle\TBS01.dbf' resize 20m;

例2:修改数据文件为自动扩展,最大值为 1G

alter database datafile 'D:\Oracle\TBS01.dbf' autoextend on next 20m maxsize 1g;

例3:新增数据文件

alter tablespace tbs01 add datafile 'D:\Oracle\TBS01_1.dbf' size 200m;
alter tablespace tbs01 add datafile 'D:\Oracle\TBS01_2.dbf' autoextend on next 20m maxsize 1g;

2.3 删除

例1:仅删除 的表空间(数据文件还在)

drop tablespace tbs; -- 可手动删除 数据文件

例2:可以删除 非空 的表空间(数据文件还在)

drop tablespace tbs including contents; -- 可手动删除 数据文件

例3:完全删除(表空间 和 数据文件)

drop tablespace tbs including contents and datafiles;
-- 若存在外键约束,则追加下列子句即可
cascade constraints;

2.4 查询

例1:查询表空间清单

select ddf.tablespace_name 表空间名,ddf.file_name 数据文件名,ddf.file_id 数据文件id,ddf.autoextensible 是否自动扩展,ddf.bytes / 1024 / 1024 "数据文件大小(M)",ddf.increment_by * 8 / 1024 "自增步长(M)",round(ddf.maxbytes / 1021 / 1021) "数据文件最大值(M)",dt.contents 表空间类型,dt.logging 是否生成日志,dt.extent_management 管理模式,dt.allocation_type 分配类型,dt.segment_space_management 段管理模式from dba_data_files  ddf, -- tablespace_namedba_tablespaces dt -- tablespace_namewhere dt.tablespace_name = ddf.tablespace_nameorder by ddf.file_id;

例2:表空间使用情况

with temp_data_files as(select ddf.tablespace_name, sum(bytes) totalfrom dba_data_files ddfgroup by ddf.tablespace_name),
temp_free_space as(select dfs.tablespace_name, sum(bytes) freefrom dba_free_space dfsgroup by dfs.tablespace_name)
select dt.tablespace_name 表空间名称,dt.contents 类型,(tdf.total / 1024 / 1024) "总大小(M)",(tfs.free / 1024 / 1024) "空闲(M)",round((tdf.total - tfs.free) / 1024 / 1024, 2) "已使用(M)",round((tdf.total - tfs.free) / tdf.total * 100, 2) "使用占比(%)"from dba_tablespaces dt, -- tablespace_nametemp_data_files tdf, -- tablespace_nametemp_free_space tfs -- tablespace_namewhere tdf.tablespace_name = dt.tablespace_nameand tfs.tablespace_name = dt.tablespace_name;

3 扩展

3.1 ORA-01653:表无法在表空间中扩展

报错截图:

错误原因&解决办法:

错误原因:'表空间满了',有以下两种可能性1. 未设置表空间自动扩展2. 虽然设置了表空间自动扩展,但是超过了 'maxsize'
解决办法:1. 设置自动扩展(或指定 unlimited: 无限大小)alter database datafile 'D:\Oracle\TBS.dbf' autoextend on maxsize 5m;      2. 新增 '数据文件' -- 推荐alter tablespace TEST1 add datafile 'D:\Oracle\TBS.dbf' size 3m;3. 扩大 maxsize -- 不推荐(若过大,影响 I/0)

验证情况1:表空间满了 且 未设置表空间自动扩展

-- 创建表空间
create tablespace TEST1 datafile 'D:\Oracle\TEST1.dbf' size 1m;
-- 创建用户
create user test_tbs identified by test_tbs default tablespace TEST1;
grant create session to test_tbs; -- 允许登陆
grant resource to test_tbs;

数据验证:

create table test_tbs.tablespace_test (tid   number(10),tname varchar2(50)
);
-- 插入数据验证
declarev_sql_insert varchar2(500);
begin-- 模拟插入语句v_sql_insert := 'INSERT INTO test_tbs.tablespace_test (tid, tname) VALUES (:b1, :b2)';-- 百万级数据量for i in 1 .. 1000000 loopexecute immediate v_sql_insertusing i, 'a' || i;end loop;
end;

验证情况2:虽然设置了表空间自动扩展,但是超过了 'maxsize’

alter database datafile 'D:\Oracle\TEST1.dbf' autoextend on next 1m maxsize 2m;
再执行上述 'declare 插入数据验证' 即可

3.2 ASSM 自动段空间管理

ASSM: Auto Segment Space Management (自动段空间管理)
-- 一般自动管理,无需手动操作
select t.segment_space_management -- AUTO(自动) | MANUAL(手动) from dba_tablespaces t;

Oracle 表空间详解(tablespace)相关推荐

  1. Oracle表空间_PK是什么意思,Oracle表空间详解

    关键字:Oracle表空间详解 一.============  查询 =================== 1.查询oracle用户的默认表空间和临时表空间 select default_table ...

  2. Oracle 表分区详解(partition table)

    文章目录 1 概述 1.1 思维导图 2 分类 2.1 传统表分区 2.1.1 范围分区 range 2.1.2 列表分区 list 2.1.3 哈希分区 hash 2.1.4 复合分区 range ...

  3. oracle offline 删除表,Oracle offline 表空间详解

    表空间详解 一.Offline的整体效果:offline以后,未完成的事物可以提交或回滚,但不能发起新的事物,也不能进行查询. 二.Offline的语法: ALTER TABLESPACE table ...

  4. 数据库 表空间详解以及其使用方法 (Oracle)

    表空间 表空间是数据库中最大的逻辑单位,Oracle数据库采用表空间将相关的逻辑组件组合在一起,一个Oracle数据库至少包含一个表空间.每个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空 ...

  5. oracle已经创建表空间不存在,oracle表空间的创建、删除、查看、表空间不存在、及修改默认表空间详解...

    一.创建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地 ...

  6. oracle中表空间详解

    oracle与其他数据库不同的地方就是表空间设计.表空间可以将oracle数据库划分为多个逻辑区域,这有点像MySQL中的create database的感觉.在一个oracle数据库中能够有一个或多 ...

  7. DB2缓冲池、表空间详解

    简介 对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑.在本文中,我们将讨论DBA 要做出重要选择的两个方面:表空间和缓冲池.表空间和缓冲池的设计和 ...

  8. oracle表分区详解

    此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作. (1.) 表空间及分区 ...

  9. (转)oracle表分区详解

    此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作. (1.) 表空间及分区 ...

最新文章

  1. 昨天,我用 Python 写了一个婚介模型
  2. R包库安装及数据加载:一次安装多个R包、一次加载多个R包
  3. ListView 常用属性
  4. cc.AudioSource
  5. 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
  6. 用ABAP来实现柱状图和饼状图的输出
  7. 格式化_U盘提示格式化怎么办 U盘提示格式化解决方法【详解】
  8. 小问题,对递归重复调用的改进,一起来分享
  9. 武汉科技大学城市学院计算机二级考试,湖北省计算机等级考试一年有几次报名...
  10. NopCommerce 2.5的部署
  11. python解析器打包_打包发布Python模块的方法详解
  12. UI线程安全 runOnUiThread 和 Handler 一般用法
  13. 华南农业大学计算机科学与技术专业,华南农业大学住宿
  14. 基于vue.js仿淘宝收货地址,并设置默认地址
  15. python turtle库seth_python学习篇,turtle库
  16. 紫外分光光度计与紫外可见分光光度计的区别是什么?
  17. day2 craps赌博游戏
  18. Windows 开机启动时自动删除 Temp 文件夹下的临时文件
  19. 发现网站被劫持该怎么办?网站域名劫持的情况及解决办法
  20. html颜色对应卡,PANTONE色卡

热门文章

  1. H5在线CAD,网页CAD,MxDraw云图平台2022.08.24更新
  2. 苹果手机话筒声音小怎么办_苹果8通话声音小,苹果8听筒声音小怎么办
  3. nacos get changed dataId error, code: 403
  4. AI强度相关的研究:MCTS 蒙特卡洛树搜索 Monte Carlo Tree Search
  5. 每天看一个fortran文件(2)
  6. 龙讯LT8911EXB高性能MIPI转EDP分辨率1080P概述
  7. 设置切换输入法按键ctrl+shift
  8. manjaro i3wm社区版配置记录
  9. 计算机管理没有指定运行,如何限制电脑只运行一个软件?只打开指定软件?
  10. python3制作中文词云_Python_制作中文词云