我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈
表空间&数据文件
表空间
-
表空间是数据库的逻辑组成部分。从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中。
-
表空间由一个或多个数据文件组成。
-
数据库的逻辑结构
- Oracle中逻辑结构包括:表空间、段、区、块(类似省、市、县、镇)
- 数据库由表空间构成
- 表空间由段构成
- 段由区构成
- 区由oracle块构成
- 这种构成结构能提高数据库的效率
- 表空间用于从逻辑上组织数据库的数据。
- 数据库逻辑上是由一个或多个表空间组成的
- 通过表空间可以达到以下作用:
- 控制数据库占用的磁盘空间
- dba可以将不同的数据类型部署到不同的位置,这样有利于提高i/o性能,同时利于备份和恢复等管理操作
- Oracle中逻辑结构包括:表空间、段、区、块(类似省、市、县、镇)
建立表空间
- 建立表空间是使用
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
表空间中
- 创建myemp表,并将该表放在
- 改变表空间状态
- 当建立表空间时,表空间处于联机(
online
)状态。此时该表空间可以访问,并且该表空间可以读写。即可以查询该表空间数据,还可以在表空间执行各种语句。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态。一般由特权用户或dba来操作
- 使表空间脱机(
offline
)alter tablespace 表空间名 offline;
- 使表空间联机(
online
)alter tablespace 表空间名 online;
- 使表空间只读(
read only
)- 当建立表空间时,该表空间可以读写。如果部希望该表空间执行
update
、delete
、inser
操作,那么可以将该表空间设置成只读状态
alter tablespace 表空间名 read only
- 当建立表空间时,该表空间可以读写。如果部希望该表空间执行
- 使表空间可读写(
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;
- 说明:
including contents
表示删除表空间时,删除该表空间的所有数据库对象datafiles
表示将数据库文件也删除
- 扩展表空间
- 增加数据文件
alter tablespace 表空间名 add datafile 'e:\sp002.dbf' size 20M;
- 增加数据文件的大小
alter tablespace 表空间名 'e:\sp001.dbf' resize 20M;
- 注意:数据文件的大小不能超过500M
- 设置文件的自动增长
alter tablespace 表空间名 'e:\sp001.dbf' autoextend on next 10M maxsize 500M;
- 移动数据文件
- 有时,你的数据文件所在的磁盘损坏,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移动到其他磁盘,然后恢复。
- 下面以移动数据文件sp001.dbf为例
- 确定数据文件所在的表空间
select tablespace_name from dba_data_files where file_name='e:\sp001.dbf'
- 使表空间脱机(确保数据文件的一致性,将表空间转变为offline的状态)
alter tablespace 表空间名 offline;
- 使用命令移动数据文件到指定的目标位置
host move e:\sp001.dbf d:\sp001.dbf
- 移动数据文件
- 在物理上移动了数据后,还必须执行
alter tablespace
命令对数据库文件进行逻辑修改
alter tablespace 表空间名 rename datafile 'e:\sp001.dbf' to 'd:\sp001.dbf'
- 在物理上移动了数据后,还必须执行
- 使表空间联机
- 在移动了数据文件后,为了使用户可以访问表空间,必须将表空间转变为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='表空间名'
- 查询数据字典视图
表空间和数据文件总结
- 了解表空间和数据文件的作用
- 掌握常用表空间,undo表空间和临时表空间的建立方法
- 了解表空间的各个状态(
online<联机>
、offline<脱机>
、read write<读写>
、read only<只读>
)的作用,以及如何改变表空间状态 - 了解移动数据文件的原因,以及使用
alter tablespace
和alter datatable
命令移动数据文件的方法
其他表空间
- 除了最常用的数据表空间外,还有其他类型表空间
- 索引表空间
- undo表空间
- 临时表空间
- 非标准块的表空间