010.数据库管理-表空间&数据文件

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线
在这里插入图片描述

表空间
  • 表空间是数据库的逻辑组成部分。从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中。

  • 表空间由一个或多个数据文件组成。

  • 在这里插入图片描述

  • 数据库的逻辑结构

    • Oracle中逻辑结构包括:表空间、段、区、块(类似省、市、县、镇)
      • 数据库由表空间构成
      • 表空间由段构成
      • 段由区构成
      • 区由oracle块构成
      • 在这里插入图片描述
    • 这种构成结构能提高数据库的效率
    • 表空间用于从逻辑上组织数据库的数据。
    • 数据库逻辑上是由一个或多个表空间组成的
    • 通过表空间可以达到以下作用:
      1. 控制数据库占用的磁盘空间
      2. dba可以将不同的数据类型部署到不同的位置,这样有利于提高i/o性能,同时利于备份和恢复等管理操作

建立表空间
  • 建立表空间是使用create tablespace命令完成。
  • 注意:一般建立表空间是特权用火或是dba来执行,如果是其他用户建立表空间,那么用户必须具有create tablespace的系统权限
  • 建立数据表空间
    • 建立数据库之后,为了便于管理表,最好建立自己的表空间
      create tablespace sp001 datafile 'e:\sp001.dbf'
      size 20M uniform size 128k
      
    • 说明:执行完上述命令,会建立名称为sp001的表空间,并为该表空间建立名称为sp001.dbf的数据文件,分配的区大小为128k
  • 使用数据表空间
    crate table myemp(deptno number(4),mname varchar2(14),loc varchar2(16)) tablespace sp001;
    
    • 创建myemp表,并将该表放在sp001表空间中
  • 改变表空间状态
  • 当建立表空间时,表空间处于联机(online)状态。此时该表空间可以访问,并且该表空间可以读写。即可以查询该表空间数据,还可以在表空间执行各种语句。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态。一般由特权用户或dba来操作
  1. 使表空间脱机(offline)
    alter tablespace 表空间名 offline;
    
  2. 使表空间联机(online)
    alter tablespace 表空间名 online;
    
  3. 使表空间只读(read only)
    • 当建立表空间时,该表空间可以读写。如果部希望该表空间执行updatedeleteinser操作,那么可以将该表空间设置成只读状态
    alter tablespace 表空间名 read only
    
  4. 使表空间可读写(read write)
    alter tablespace 表空间名 read writer
    
  • 表空间相关查询
  • 根据表空间名,查询表空间包含的所有表
    select * from all_tables where tablespace_name='表空间名'
    
  • 知道表名,查询该表属于哪个表空间
    select tablespace_name, table_name from user_tables where table_name='表名称'
    
    • 注:系统表空间(system)不能设置为只读,普通表空间可以设置为只读
  • 删除表空间
  • 一般由特权用户或dba来操作,如果其他用户操作,则必须具有drop tablespace系统权限
    drop tablespace '表空间名' including contents and datafiles;
    
    • 说明:
    1. including contents表示删除表空间时,删除该表空间的所有数据库对象
    2. datafiles表示将数据库文件也删除
  • 扩展表空间
  1. 增加数据文件
    alter tablespace 表空间名 add datafile 'e:\sp002.dbf' size 20M;
    
  2. 增加数据文件的大小
    alter tablespace 表空间名 'e:\sp001.dbf' resize 20M;
    
    • 注意:数据文件的大小不能超过500M
  3. 设置文件的自动增长
    alter tablespace 表空间名 'e:\sp001.dbf' autoextend on next 10M maxsize 500M;
    
  • 移动数据文件
  • 有时,你的数据文件所在的磁盘损坏,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移动到其他磁盘,然后恢复。
  • 下面以移动数据文件sp001.dbf为例
  1. 确定数据文件所在的表空间
    select tablespace_name from dba_data_files where file_name='e:\sp001.dbf'
    
  2. 使表空间脱机(确保数据文件的一致性,将表空间转变为offline的状态)
    alter tablespace 表空间名 offline;
    
  3. 使用命令移动数据文件到指定的目标位置
    host move e:\sp001.dbf d:\sp001.dbf
    
  4. 移动数据文件
    • 在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改
    alter tablespace 表空间名 rename datafile 'e:\sp001.dbf' to 'd:\sp001.dbf'
    
  5. 使表空间联机
    • 在移动了数据文件后,为了使用户可以访问表空间,必须将表空间转变为online状态
    alter tablespace 表空间名 online;
    
  • 查询表空间信息
    • 查询数据字典视图dba_tablespaces显示表空间信息
    select tablespace_name from dba_tablespaces
    
  • 查询表空间所包含的数据文件
    • 查询数据字典视图dba_data_file显示表空间所包含的数据文件
    select file_name,bytes from dba_data_file where tablespace_name='表空间名'
    

表空间和数据文件总结
  1. 了解表空间和数据文件的作用
  2. 掌握常用表空间,undo表空间和临时表空间的建立方法
  3. 了解表空间的各个状态(online<联机>offline<脱机>read write<读写>read only<只读>)的作用,以及如何改变表空间状态
  4. 了解移动数据文件的原因,以及使用alter tablespacealter datatable命令移动数据文件的方法
其他表空间
  • 除了最常用的数据表空间外,还有其他类型表空间
  1. 索引表空间
  2. undo表空间
  3. 临时表空间
  4. 非标准块的表空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

失心疯_2023

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

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

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

打赏作者

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

抵扣说明:

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

余额充值