Oracle表空间和数据文件详解(一)

来源:互联网 发布:淘宝装修设计教程 编辑:程序博客网 时间:2024/05/27 10:44

管理表空间和数据文件

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

数据库的逻辑结构

表空间-段-区-块

表空间用于从逻辑上组织数据库的数据。数据库逻辑上是由一个或多个表空间组成的。通过表空间可以控制数据库占用的磁盘空间;dba可以将不同数据类型部署到不同的位置,这样有利于提高i/o性能,同时有利于备份和恢复等管理操作。

建立表空间,特权用户或者dba执行,具有create tablespace的系统权限

create tablespace data01

datafile ‘d:\test\data01.dbf’ size 20muniform size 128k

建立名为data01的表空间,为该表空间建立data01.dbf的数据文件,区大小为128k

create table mytest(deptno number(4),dnamevarchar2(20),loc varchar2(20))

tablespace data01;

改变表空间的状态

建立表空间时,表空间是联机状态,此时该表空间可以访问,可读写,可查询该表空间的数据,而且还可以在表空间执行各种语句,但是进行系统维护时,需要改变表空间的状态,一般是特权用户或dba操作。

使表空间脱机

alter tablespace 表空间名 offline;

使表空间联机

alter tablespace 表空间名 online;

只读表空间

如果不希望表空间进行update|delete|insert,可将其修改为只读

alter tablespace表空间名read only;

可读表空间

alter tablespace表空间名read write;

显示表空间下所有表

select * from all_table wheretablespace_name=’ 表空间名’

显示表所属表空间

select tablespace,table_name fromuser_tables where table_name=’ 表名’

删除表空间特权用户或dba操作或具有drop tablespace系统权限

drop tablespace 表空间名 including contents anddatafiles;

including contents 删除表空间时,删除该空间的所有数据库对象

datafiles表示将数据库文件也删除

扩展表空间

表空间由数据文件组成,表空间大小实际就是数据文件大小的总和。

假设表emp建立在表空间data01上,初始大小为2m,当2m空间满后,再插入数据会提示空间不足的错误

案例:

建立表空间 sp01

在该表空间建立与dept表结构一样的表mydept

向表中插入数据 insertinto mydept select * from dept;

当一定时候出现无法扩展的问题,怎么解决?

扩展表空间三种方法:

增加数据文件

alter tablespace表空间名add datafile ‘d:\test\sp01.dbf’size 20m

增加数据文件大小

alter database datafile ‘d:\test\sp01.dbf’resize 20m;

数据文件大小不要超过500m

设置文件自动增长

alter database datafile ‘d:\test\sp01.dbf’autoextend on next 10m maxsize 500m;

移动数据文件

当数据文件所在磁盘损坏时,数据文件不能使用,为了能够重新使用,需要将这些文件的副本移动到其它磁盘,然后恢复

移动sp01.dbf

确定数据文件所在的表空间

select tablespace_name from dba_data_fileswhere file_name=’d:\test\sp01.dbf’;

使表空间脱机

确保文件一致性,将表空间转变为offline

alter tablespace sp01 offline;

使用命令移动数据文件到指定目标位置

host move d:\test\sp01.dbf c:\test\sp01.dbf

alter tablespace命令执行

物理移动数据后,altertablespace命令对数据库文件进行逻辑修改

alter tablespace sp01 rename datafile ‘d:\test\sp01.dbf’to ‘c:\test\sp01.dbf’

使表空间联机

移动数据文件后,为了使用户可以访问该表空间,必须将其转换为online状态

alter tablespace sp01 online;

显示表空间信息

dba_tablespace

select tablespace_name fromdba_tablespaces;

显示表空间所包含的数据文件

dba_data_files

select file_name,bytes from dba_data_fileswhere tablespace_name=’表空间名’;

 

0 0