Oracle 表空间详解(tablespace)
文章目录
- 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)相关推荐
- Oracle表空间_PK是什么意思,Oracle表空间详解
关键字:Oracle表空间详解 一.============ 查询 =================== 1.查询oracle用户的默认表空间和临时表空间 select default_table ...
- 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 ...
- oracle offline 删除表,Oracle offline 表空间详解
表空间详解 一.Offline的整体效果:offline以后,未完成的事物可以提交或回滚,但不能发起新的事物,也不能进行查询. 二.Offline的语法: ALTER TABLESPACE table ...
- 数据库 表空间详解以及其使用方法 (Oracle)
表空间 表空间是数据库中最大的逻辑单位,Oracle数据库采用表空间将相关的逻辑组件组合在一起,一个Oracle数据库至少包含一个表空间.每个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空 ...
- oracle已经创建表空间不存在,oracle表空间的创建、删除、查看、表空间不存在、及修改默认表空间详解...
一.创建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地 ...
- oracle中表空间详解
oracle与其他数据库不同的地方就是表空间设计.表空间可以将oracle数据库划分为多个逻辑区域,这有点像MySQL中的create database的感觉.在一个oracle数据库中能够有一个或多 ...
- DB2缓冲池、表空间详解
简介 对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑.在本文中,我们将讨论DBA 要做出重要选择的两个方面:表空间和缓冲池.表空间和缓冲池的设计和 ...
- oracle表分区详解
此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作. (1.) 表空间及分区 ...
- (转)oracle表分区详解
此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作. (1.) 表空间及分区 ...
最新文章
- 昨天,我用 Python 写了一个婚介模型
- R包库安装及数据加载:一次安装多个R包、一次加载多个R包
- ListView 常用属性
- cc.AudioSource
- 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
- 用ABAP来实现柱状图和饼状图的输出
- 格式化_U盘提示格式化怎么办 U盘提示格式化解决方法【详解】
- 小问题,对递归重复调用的改进,一起来分享
- 武汉科技大学城市学院计算机二级考试,湖北省计算机等级考试一年有几次报名...
- NopCommerce 2.5的部署
- python解析器打包_打包发布Python模块的方法详解
- UI线程安全 runOnUiThread 和 Handler 一般用法
- 华南农业大学计算机科学与技术专业,华南农业大学住宿
- 基于vue.js仿淘宝收货地址,并设置默认地址
- python turtle库seth_python学习篇,turtle库
- 紫外分光光度计与紫外可见分光光度计的区别是什么?
- day2 craps赌博游戏
- Windows 开机启动时自动删除 Temp 文件夹下的临时文件
- 发现网站被劫持该怎么办?网站域名劫持的情况及解决办法
- html颜色对应卡,PANTONE色卡
热门文章
- H5在线CAD,网页CAD,MxDraw云图平台2022.08.24更新
- 苹果手机话筒声音小怎么办_苹果8通话声音小,苹果8听筒声音小怎么办
- nacos get changed dataId error, code: 403
- AI强度相关的研究:MCTS 蒙特卡洛树搜索 Monte Carlo Tree Search
- 每天看一个fortran文件(2)
- 龙讯LT8911EXB高性能MIPI转EDP分辨率1080P概述
- 设置切换输入法按键ctrl+shift
- manjaro i3wm社区版配置记录
- 计算机管理没有指定运行,如何限制电脑只运行一个软件?只打开指定软件?
- python3制作中文词云_Python_制作中文词云