本节总结oracle数据库表空间的相关内容如下:
表空间:
表空间用于从逻辑上组织数据库的数据,数据库逻辑上由一个或是多个表空间组成的,通过表空间可以达到以下的作用:
1.控制数据库占用的磁盘空间
2.dba可以将不同的数据类型部署到不同的位置,这样有利于提高i/o的性能,同时有益于备份和恢复
3.尤其在海量数据时索引表空间会加快io的速度;
表空间 段 区 块
表空间有多个段组成,每一个段又由区组成,区又由块组成,表空间其实是有数据文件组成而,数据文件其实就是一个磁盘上的空间。
《1》查看ORACLE中自带的EMP表所属的表空间:
第一种查看方式:
SQL> select tablespace_name,table_name from user_tables where table_name='EMP';
TABLESPACE_NAME TABLE_NAME
------------------------------ ------------------------------
USERS EMP
注释:user_tables:属于静态数据字典中的其中记录中该用户可用的表的信息,例如表名、所属的表空间、表的大小等一些列信息。我们可以通过命令:desc user_tables;进行查看;
可见其归属于users这个表空间:
第二种查看方式:直接在emp表上查看编辑就可以:
《2》建立自己的表空间:
首先:该用户需要具有dba或者create tablespace的权限;
sql>>create tablespace tab_space datafile 'e:\space001.dbf' size 10m autoextend on next 5m maxsize 25m uniform size 128k;
result>>Tablespace created
可以看到如下:
《3》删除表空间;
注意including后面的信息;
sql>>drop tablespace tab_space including contents and datafiles;
《4》创建用户并指向表空间:
sql>>create user QIAN identified by qian default tablespace tab_space;
resutl>>User created
《5》使用表空间:
5.1把创建的表放到指定的表空间下:
sql(scott)>>create table stuinfo(id number(5),name varchar2(20),age number(3)) tablespace tab_space;
result:
sql(system)>>create table stuinfo(id varchar2(10),name varchar2(20)) tablespace tab_space;```
result:
5.2:使表空间脱机(连机):
alter tablespace tab_space offline[online];
5.3:改变表空间只读属性,不能执行update delete insert语句
alter tablespace tab_space read only;
alter tablespace tab_space read write;
《6》扩展表空间:
当我我们的表空间满了时候。就需要扩容:比如出现如下信息、就需要扩容
sql>>insert into stuinfo select * from stuinfo;
error>>insert into stuinfo select * from stuinfo
ORA-01653: unable to extend table SCOTT.STUINFO by 16 in tablespace TAB_SPACE
6.1:增加数据文件
sql(system)>>alter tablespace tab_space add datafile 'e:\space002.dbf' size 20m;
result>>Tablespace altered
注释:可以看到在e盘下多了个space002.dbf数据文件,并且在插入数据时就可以了;
6.2:增加文件的大小
alter tablespace tab_space 'e:\space001.dbf' resize 50M;
6.3:设置文件的自动增加
alter tablespace tab_space 'e:\space001.dbf' autoextend on next 10M maxsize 100M
《7》移动数据文件:
比如当磁盘出现损坏或者我们需要备份时,可以移动数据文件
1:确定你想要移动数据文件所在的表空间:
sql>>select tablespace_name from dba_data_files where file_name='e:\space001.dbf';
2:使表空间脱机:
sql>>alter tablespace tab_space offline;
3.使用命令移动数据文件到指定的目标位置
sql>>host move e:\space001.dbf f:\space001.dbf;
4.移动数据文件:
在物理上移动了数据后,还必须对数据库文件进行逻辑修改
sql>>alter tablespace tab_space rename datafile 'e:\space001.dbf' to 'f:\space001.dbf'
5.使得表空间联机
sql>>alter tablespace spaceName online;
“`