当前位置: 首页 > news >正文

Oracle数据库的表空间(一)

目录

1.表空间

(1)创建表空间 

(2)管理表空间

 (3)删除表空间

补充


Oracle学习的相关知识点(汇总)

1.表空间

表空间由数据文件组成,这些数据文件是数据库实际存放数据的地方,数据库的所有系统数据和用户数据都必须存放在数据文件中。创建一个数据库时,系统都会默认地为它创建一个“SYSTEM”表空间以存储系统信息。

(1)创建表空间 

下面的参数和说明都是比较复杂的,只有慢慢的和不断的练习才能更好的掌握。 

格式:

CREATE TABLESPACE <表空间名>

        DATAFILE '/<文件路径>/<文件名>' [SIZE<文件大小> [ K∣M ]] [ REUSE ]

        [ AUTOEXTEND [ OFF∣ON [ NEXT <磁盘空间大小>[ K∣M ]]

        [ MAXSIZE [ UMLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ] ]

        [ MINMUM EXTENT<数字值> [ K | M ] ]

        [ DEFAULT <存储参数>]

        [ ONLINE∣OFFLINE ]

        [ LOGGING∣NOLOGGING ]

        [ PERMANENT∣TEMPORARY ]

        [ EXTENT MANAGEMENT [ DICTIONARY∣LOCAL [ AUTOALLOCATE∣UNIFORM [ SIZE <数字值>[K | M]]]]]

说明

  • DATAFILE子句:用于为表空间创建数据文件,格式与CREATE DATABASE语句中的DATAFILE子句相同。
  • AUTOEXTEND:用于指定是否禁止或允许自动扩展数据文件。若选择OFF,则禁止自动扩展数据文件。 若选择ON,则允许自动扩展数据文件。NEXT指定当需要更多盘区时分配给数据文件的磁盘空间。
  • MAXSIZE:指定允许分配给数据文件的最大磁盘空间。其中,UMLIMITED表示对分配给数据文件的 磁盘空间没有设置限制。
  • MINMUM EXTENT:指定最小的长度,默认为操作系统和数据库块确定。
  • ONLINE和OFFLINE:ONLINE表示在创建表空间之后,使授权访问该表空间的用户立即可用该表空间; OFFLINE表示在创建表空间之后使该表空间不可用,默认为ONLINE

<存储参数>::= STORAGE

(

        INITIAL <第一个区的大小>[ K︱M ]

        NEXT<下一个区的大小> [ K︱M ]

        MINEXTENTS ︱<区的最小个数>UNLIMITED

        MAXEXTENTS <区的最大个数>

        PCTINCREASE <数字值>.

        FREELISTS<空闲列表数量>

        FREELIST GROUPS<空闲列表组数量>

)

  • INITIAL指定对象(段)的第一个区的大小,单位为KB或MB,默认值是5个数据块的大小;
  • NEXT指定下一个区以及后续区的大小,单位为KB或MB,最小值是1个数据块的大小
  • MINEXTENTS指定创建对象(段)时就应该分配的区的个数,默认为1;
  • MAXEXTENTS指定可以为一个对象分配的区的最大个数,该参数最小值是MINEXTENTS;
  • PCTINCREASE指定第3个区以及后续区在前面区的基础之上增加的百分比; FREELISTS指定表、簇或索引的每个空闲列表组的空闲列表数量;
  • FREELIST GROUP指定表、簇或索引的空闲列表组的数量
  • LOGGING/NOLOGGING:指定日志属性,它表示将来的表、索引等是否需要进行日志处理。默认值 为LOGGING。
  • PERMANENT:指定表空间,将用于保存永久对象,这是默认设置。
  • TEMPORARY:指定表空间,将用于保存临时对象。
  • EXTENT MANAGEMENT:指定如何管理表空间的盘区。
  • DICTIONARY:指定使用字典表来管理表空间,这是默认设置。
  • LOCAL:指定本地管理表空间。
  • AUTOALLOCATE:指定表空间由系统管理,用户不能指定盘区尺寸。
  • UNIFORM:指定使用SIZE字节的统一盘区来管理表空间。默认的SIZE为1MB。如果既没指定 AUTOALLOCATE又没指定UNIFORM,那么默认为AUTOALLOCATE。

注意:指定了LOCAL,那么就不能指定DEFAULT<存储参数>和TEMPORARY;

例子1:创建一个20MB大小的表空间,包含日志处理并且是不允许自动扩展数据文件的。

CREATE TABLESPACE DEMOTAB
    DATAFILE 'E:\Oracle\TableSpace\demo1.DBF' SIZE 20M REUSE 
    AUTOEXTEND OFF
    LOGGING;

 例子2:例子1:创建一个20MB大小的表空间,包含日志处理并且是允许自动扩展数据文件的。

CREATE TABLESPACE DEMOTAB1
    DATAFILE 'E:\Oracle\TableSpace\demo2.DBF' SIZE 20M REUSE 
    AUTOEXTEND ON NEXT 1M MAXSIZE 30M
    LOGGING
    EXTENT MANAGEMENT LOCAL;

(2)管理表空间

利用ALTER TABLESPACE命令可以修改现有的表空间或它的一个或多个数据文件。可以为数据库中每一个数 据文件指定各自的存储扩展参数值

格式:

ALTER TABLESPACE <表空间名>

        [ADD DATAFILE | TEMPFILE '/<文件路径>/<文件名>' [SIZE<文件大小> [ K∣M ]] ]

        [ REUSE ]

        [ AUTOEXTEND [ OFF∣ON [ NEXT <磁盘空间大小>[ K∣M ]]

        [ MAXSIZE [ UMLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ] ]

        [RENAME DATAFILE '<路径>/<文件名>',...n TO '<路径>/<新文件名>',...n]

        [ DEFAULT <存储参数>]

        [ ONLINE∣OFFLINE [ NORMAL∣TEMPORARY∣IMMEDIATE ]]

        [ LOGGING∣NOLOGGING ]

        [ PERMANENT∣TEMPORARY ]

        [READ ONLY | WRITE]

说明

  • ADD DATAFILE∣TEMPFILE:向表空 间添加指定的数据文件或临时 文件
  • RENAME DATAFILE:对一个 或多个表空间的数据文件重命名。 在重命名数据文件之前要使表空间 脱机
  • READ WRITE:表明在先前 只读表空间上允许写操作。
  • READ ONLY:表明表空间上 不允许进一步写操作。该子句在 现有的事务全部提交或回滚后才 生效,使表空间变成只读。

例子:将新的数据文件添加到已有的表空间DEMOTAB1。

ALTER TABLESPACE DEMOTAB1
    ADD DATAFILE 'E:\Oracle\TableSpace\demo3.DBF' SIZE 20M REUSE 
    AUTOEXTEND ON NEXT 1M MAXSIZE 30M;

 

 (3)删除表空间

DROP TABLESPACE <表空间名>

        [INCLUDING CONTEINTS [{AND | KEEP}DATAFILES]

                [CASCADE CONSTRAINTS]

        ];

提示:在删除表空间之前,如果其中还保留有数据库对象,则必须使用INCLUDING CONTENTS子句,表示表空间和其中保存的数据库对象全部删除,但对应的数据文件并不会从操作系统中被删除。

如果要删除表空间对象的数据文件,则必须使用AND DATAFILES;

如果要保留数据文件,则加上KEEP DATAFILES。

使用CASCADE CONSTRAINTS用于删除与表空间相关的数据文件,但只对最新创建的或者最后一个表空间有效。

例子:删除表空间DEMOTAB1,并且删除相关的数据文件和对象。

DROP TABLESPACE DEMOTAB1
    INCLUDING CONTENTS AND DATAFILES;

提示:申请的空间越大,那么删除的过程时间也就越长。

补充

如果要查看表空间的情况:

SELECT FILE_NAME, BYTES

        FROM DBA_DATA_FILES
        WHERE TABLESPACE_NAME = 'DEMOTAB1';

select *
    from dba_data_files
    where tablespace_name='DEMOTAB1';

--未使用的表空间大小 
select tablespace_name,sum(bytes)/1024/1024 
    from dba_free_space 
    group by tablespace_name; 

--查看每个表占用的空间大小:

select segment_name,sum(bytes)/1024/1024
    from user_extents
    group by segment_name; 

--查看每个表占用的空间大小:

    
select segment_name,sum(bytes)/1024/1024
    from user_extents
    group by segment_name;

 

相关文章:

  • C | 实用调试技巧
  • 使用nvm安装node
  • 【算法】剑指offer-调整数组顺序数组出现超过一半的数字
  • 蓝桥杯C++AB算法辅导
  • matplotlib设置x轴和y轴 设置
  • MiniFly V1.1开源四轴驱动代码分析八:旋转矩阵、控制分配矩阵等分析介绍
  • 【云原生 | 从零开始学Kubernetes】二十五、kubectl深入理解
  • 策略模式的java实现-实际应用场景进阶版
  • [计算机通信网络]以太网的帧格式详解
  • [图像识别]10.OpenCV的特征点检测 SIFT和SURF算法
  • 牛客网专项练习30天Pytnon篇第02天
  • Controller部分
  • Lambda表达式与Stream API
  • Python语言程序设计 习题5
  • 分享制作Docker镜像的两种方式
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • angular组件开发
  • Centos6.8 使用rpm安装mysql5.7
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • docker python 配置
  • Effective Java 笔记(一)
  • extjs4学习之配置
  • iOS小技巧之UIImagePickerController实现头像选择
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • yii2中session跨域名的问题
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • FaaS 的简单实践
  • 移动端高清、多屏适配方案
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #DBA杂记1
  • #vue3 实现前端下载excel文件模板功能
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (ZT)一个美国文科博士的YardLife
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (简单) HDU 2612 Find a way,BFS。
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (五)c52学习之旅-静态数码管
  • (转)C#调用WebService 基础
  • .NET 分布式技术比较
  • .NET/C# 使窗口永不获得焦点
  • .net中应用SQL缓存(实例使用)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • :“Failed to access IIS metabase”解决方法
  • @RequestBody与@ResponseBody的使用
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @开发者,一文搞懂什么是 C# 计时器!
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [Docker]十二.Docker consul集群搭建、微服务部署,Consul集群+Swarm集群部署微服务实战
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [Flex][问题笔记]TextArea滚动条问题