oracle对表空间的操作

本文介绍Oracle数据库中的表空间管理,包括表空间的概念、创建、使用、状态变更、扩展及数据文件移动等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态性能视图

oracle数据库在启动的时候就会建立动态性能视图,当关闭的时候就会删除动态性能视图。

Oracle数据库的动态视图都是以v_$开始的,并且oracle为每个动态性能视图提供相应的同义词,并且同义词是以v$开始。例如:v_$datafile的同义词为v$datafile;动态视图所有者为 sys 一般情况有dba或者特权用户来查询动态性能视图。用到的不多。

 

 

管理表空间和数据文件

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

 

数据库的逻辑结构

Oracle中逻辑结构包括表空间、段、区和块。

说明一下数据库由表空间构成,而表空间由段构成,段有事由区构成,区有是由oracle块构成的这样的一种结构。可以提高数据库的效率。

表空间是没有限制的,使用数据文件构成。

表空间用于从逻辑上组织数据库的数据,数据库逻辑上是由一个或者多个表空间组成。通常表空间可以达到作用:

1. 控制数据库占用的磁盘空间。

2. dba可以将不同数据类型部署到不同的位置,这样有利于提高i/o性能,有利于备份和恢复等管理操作。

 

创建表空间

Create tablespace 命令,需要注意的是,一般情况下,建立表空间的特权用户或者是dba来执行。如果用其他用户来建立,则需要具备 create tablespace的系统权限。

创建数据表空间

建立数据库后为方便管理表,最好建立自己的表空间。

Create tablespace 表空间名 datafile d:\文件夹名\xxx.dbf(文件名)size 20m (空间大小,不能超500m)uniform size 128k(区大小)

 

Create tablespace hfc datafile 'd:\hfc\hfc.dbf'size 20m uniform size 128k;

使用表空间

Create table hfc (id number(4),name varchar(10))tablespace hfc;

改变表空间的状态

建立表空间的时候,他是处于联机(online)状态。此时可以访问。并且表空间是可读可写的,查询数据库,表空间执行各种语句,但是在进行系统维护的时候,可能需要改变表空间的状态。有特权用户和 dba来进行操作。

表空间脱机/联机

Alter tablespace 空间名 offline/online;

只读表空间

建立表空间的时候,表空间可以读写,如果只不希望表空间执行。Update,delete, insert操作。就可把表修改为只读。

Alter tablespace 空间名 read only/read write;

 

 

知道表空间名,显示该表空间的所有表

Select *from all_tables where tablespace_name=空间名

知道表查询表空间

Select tablespace_name,table_name from user_tables where table_name=HFC;

SYSTEM 表空间是不能进行读写的,因为这个是系统表空间,一般情况下,普通表空间是可以读写限制的。

删除表空间

特权用户和dba用户来操作,具备drop tablespace的系统权限。

Drop tablespace 表空间名字including contents(数据库对象) and datafiles(数据库文件也删除);

 

 

扩展表空间

表空间是有数据文件组成,空间大些实际是数据库文件相加后的大小,如果空间满了再向里面存放数据就会出现空间不足的错误

 

例子:

1.创建一个表空间 hfc

2.建立一个表hfc,结构和emp一样。

像表中加数据 insert into  hfc select *from emp;

3. 出现无法扩展的问题。

4. 扩展表空间,为其增加存储空间 3种方法:

 

第一种:增加数据文件

Alter tablespace  hfc  add datafile ‘d:\hfc.dbf’size 20m;

 

 

第二种 手动增加数据文件的大小

Alter database datafile 'd:\hfc.dbf' (把原来的扩充到80)Resize 80m;

第三种 自动增长

Alter tablespace hfc ‘d:\hfc.dbf’autoextend on next 10m maxsize 500m;

alter database datafile 'd:\hfc\hfc.dbf' autoextend on next 50m maxsize 500m;

 

/*分为四步 */

/*第1步:创建临时表空间  */

create temporary tablespace user_temp  

tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

 

/*第2步:创建数据表空间  */

create tablespace user_data  

logging  

datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

 

/*第3步:创建用户并指定表空间  */

create user username identified by password  

default tablespace user_data  

temporary tablespace user_temp;  

 

/*第4步:给用户授予权限  */

grant connect,resource,dba to username;

 

 

移动数据文件

数据文件所在的磁盘坏掉,该文件就不能使用,这样就需要将这些文件的副本移动到其他磁盘然后恢复。

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

 Select tablespace_name from dba_data_files where file_name=d:\hfc.dbf;

2.使表空间脱机

确保数据文件的一致性,将表空间转换成offline

Alter tablespace hfc offline ;

1. 数据迁移

 Host move d:\hfc.dbf c:\hfc.dbf;

2. 物理修改完后执行alter tablespace hfc rename datafile d:\hfc.dbf c:\hfc.dbf; 对数据库文件进行逻辑修改

3. 表空间联机

移动数据后联机数据库

Alter tablespace hfc online ;

 

 

 

显示表空间的信息

查询数据字典视图 dba_tablespace 显示表空间信息

Select tablespace_name from dba_tablespaces;

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

查询数据字典视图 dba_data_files 可显示表空间所包含的数据文件

Select file_name, bytes from dba-data_files where  tablespace _name=hfc;

总结

1. 数据文件和表空间的作用

2. 常用表空间(索引表空间,undo表空间,临时表空间,非标准块表空间)。

3. 表空间的状态(online ,offline ,read write ,read only)状态方法,以及改变表空间的方法。

4. 移动数据的原因

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值