zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

oracle 基础知识(二)-表空间

2023-09-27 14:25:36 时间

一,表空间

  01,表空间?

  Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,就可以创建表空间。表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。

  02,语法

创建表空间语法:

Create TableSpace 表空间名称  
DataFile          表空间数据文件路径  
Size              表空间初始大小  
Autoextend on

  03,表空间类型

Oracle 11g默认的表空间有六个:

表空间

说明

EXAMPLE

如果安装时选择"实例方案",则此表空间存放各样例的数据

SYSTEM

存放数据字典,包括表、视图、存储过程的定义等

SYSAUX

SYSTEM表空间的辅助空间。主要用于存储除数据字典外的其他的数据对象,这样可以减少SYSTEM表空间的负荷

TEMP

存放SQL语句处理的表和索引的信息,比如数据排序就占用此空间

UNDOTBLS1

存放撤销数据的表空间

USERS

通常用于存放应用系统所使用的数据对象

  04,表空间创建实例

      - 创建大小为50mb的永久表空间TEST01,禁止自动扩展数据文件

       

1 create tablespace TEST01
2     logging
3     datafile '/oradata/TEST01.dbf' size 50m
4     reuse autoextend off;
View Code

            -- 创建永久表空间TEST02,允许自动扩展数据文件,本地管理方式

        

1 create tablespace TEST02
2     logging
3     datafile '/oradata/TEST02.dbf'  size 50m
4     reuse autoextend on next 10m maxsize 200m
5     extent management local;
View Code

      当然想要查看也是没问题的  

1 SELECT tablespace_name,
2 file_id,
3 file_name,
4 round(bytes / (1024 * 1024), 0) total_space
5 FROM dba_data_files
6 ORDER BY tablespace_name;

      特定的:

select TABLESPACE_NAME,FILE_NAME from dba_data_files where TABLESPACE_NAME='TEST01';

      -- 创建永久表空间TEST03,允许自动扩展数据文件,本地管理方式,区分配方式为自动分配

      

1 create tablespace TEST03
2     logging
3     datafile'/oradata/TEST03.dbf' size 50m
4     reuse autoextend on next 10m maxsize 200m
5     extent management local autoallocate;
View Code

      -- 创建永久表空间TEST04,允许自动扩展数据文件,本地管理方式,区分配方式为定制分配

1 create tablespace TEST04
2     logging
3     datafile'/oradata/TEST04.dbf' size 50m
4     reuse autoextend on next 10m maxsize 200m
5     extent management local uniform size 10m;
View Code

                 -- 创建永久表空间TEST05,允许自动扩展数据文件,本地管理方式,区分配方式为自动分配,段管理方式为自动管理

      

1 create tablespace test05
2     logging
3     datafile'/oradata/TEST05.dbf' size 50m
4     reuse autoextend on next 10m maxsize 200M
5     extent management local autoallocate
6     segment space management auto;
View Code

      -- 创建永久表空间TEST06,允许自动扩展数据文件,本地管理方式,区分配方式为定制分配,段管理方式为手动管理

      

1 create tablespace test06
2     logging
3     datafile'/oradata/TEST06.dbf' size 50m
4     reuse autoextend on next 10m maxsize 200M
5     extent management local uniform size 10m
6     segment space management manual;
View Code

   

  05,临时表空间     

      --创建临时表空间,为了避免临时空间频繁分配与回收时产生大量碎片,临时表空间的区只能采用自动分配方式   

1 create temporary tablespace test07
2     tempfile '/oradata/TEST07.dbf' size 20M;
View Code

      

  06,创建undo表空间 

      

create undo tablespace test08
    datafile'/oradata/TEST08.dbf' size 20M;

  07,管理表空间

--首先把该表空间设置为脱机状态

alter tablespace TEST03 offline normal;

-- 手动创建TEST03文件夹,并且复制TEST03.dbf到TEST03文件夹,重命名为TEST03_1.dbf

alter tablespace TEST03 rename datafile

    '/oradata/TEST03.dbf'

    to

    '/oradata/TEST03/TEST03_1.dbf';

--最后把该表空间设置为联机状态

alter tablespace TEST03 online;

  08,删除表空间

    删除表空间及对应的 数据文件

1 drop tablespace test01 including contents and datafiles;
View Code

  

  查看表空间使用的情况:

1 select tablespace_name, count(*) AS extends,round(sum(bytes) / 1024 / 1024, 2) AS MB,sum(blocks) AS blocks from dba_free_space group BY tablespace_name;
View Code

  09,表空间扩容

第一种方式:表空间增加数据文件

alter tablespace test02 add datafile '/oradata/test02_2.DBF' size 30M; 

第二种方式:表空间增加数据文件,设置自增长,限制最大值 

alter tablespace test02 add datafile '/oradata/test02_3.DBF' size 50M autoextend on maxsize 3072M; 

第三种方式:已存在表空间数据文件设置自增长 

alter database  datafile  '/oradata/TEST02.dbf' autoextend on maxsize 3072M; 

第四种方式:已存在表空间数据文件重新设置大小 

alter database datafile '/oradata/test02_3.DBF' resize 80M;