Oracle表空间操作详解(备份)

建立表空间
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k

删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

修改表空间大小
alter database datafile '/path/NADDate05.dbf' resize 100M

移动表至另一表空间
alter table move tablespace room1;

一、建立表空间
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k

二、建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M

#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:

ALTER SYSTEM SET undo_tablespace=UNDOTBS02;

三、建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M

四、改变表空间状态

1.使表空间脱机
ALTER TABLESPACE game OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE game OFFLINE FOR RECOVER;

2.使表空间联机
ALTER TABLESPACE game ONLINE;

3.使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;

4.使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;

5.使表空间只读
ALTER TABLESPACE game READ ONLY;

6.使表空间可读写
ALTER TABLESPACE game READ WRITE;

五、删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

六、扩展表空间

首先查看表空间的名字和所属文件
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

1.增加数据文件
ALTER TABLESPACE game
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;

2.手动增加数据文件尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
RESIZE 4000M;

3.设定数据文件自动扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;

4.设定后查看表空间信息
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

 

2)修改表空间

          需要注意的是:不能将本地管理的永久性表空间转换为本地管理的临时表空间,也不能修改本地管理表空间中段的管理方式。

           1)  扩展表空间

                   a) 为表空间添加数据文件

                     通过ALTERTABLESPACE…ADD DATAFILE语句为永久表空间添加数据文件,通过ALTER TABLESPACE… ADD TEMPFILE语句为临时表空间添加临时数据文件。

                     举例:

                     为ORCL数据库的ORCLTBS1表空间添加一个大小为10 MB的新数据文件。

                     SQL>ALTER TABLESPACE ORCLTBS1ADD DATAFILE

                                'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'SIZE 10M;

                     为ORCL数据库的ORCLTEMP1表空间添加一个大小为10 MB的临时数据文件。

                     SQL>ALTER TABLESPACE ORCLTEMP1ADD TEMPFILE

                               'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP1_2.DBF'SIZE 20M;

                  b)  改变数据文件的大小

                        可以通过改变表空间已有数据文件的大小,达到扩展表空间的目的。

                        举例:

                        将ORCL数据库的ORCLTBS1表空间的数据文件ORCLTBS1_2.DBF大小增加到20 MB。

                       SQL>ALTER DATABASE DATAFILE

                                  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'RESIZE 20M;

                 c) 改变数据文件的扩展方式

                     如果在创建表空间或为表空间增加数据文件时没有指定AUTOEXTENDON选项,则该文件的大小是固定的。如果为数据文件指定了AUTOEXTENDON选项,当数据文件被填满时,数据文件会自动扩展,即表空间被扩展了。

                 举例:

                 将ORCL数据库的ORCLTBS1表空间的数据文件ORCLTBS1_2.DBF设置为自动扩展,每次扩展5 MB空间,文件最大为100 MB。

                 SQL>ALTER DATABASE DATAFILE

                           'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_2.DBF'

                           AUTOEXTEND ON NEXT 5M MAXSIZE100M;

           2)  修改表空间可用性

                   离线状态的表空间是不能进行数据访问的,所对应的所有数据文件也都处于脱机状态。

                  一些表空间必须是在线状态:SYSTEM表空间,存放在线回退信息的撤销表空间,临时表空间。

                  语法:

                  ALTER TABLESPACE tablespace_nameONLINE|OFFLINE

                 举例:

                 在归档模式下,将USERS表空间中所有的数据文件脱机,但USERS表空间不脱机。然后再将USERS表空间中的所有数据文件联机。

                 SQL>ALTER TABLESPACE USERS DATAFILEOFFLINE;

                 SQL>RECOVER TABLESPACE USERS;

                 SQL>ALTER TABLESPACE USERS DATAFILEONLINE;

           3)  修改表空间的读写性

                   语法:

                   ALTER TABLESPACE tablespace_nameREAD ONLY|READ WRITE

                   表空间只有满足下列要求才可以转换为只读状态:

                   a)      表空间处于联机状态;

                   b)      表空间中不能包含任何活动的回退段;

                   c)      如果表空间正在进行联机数据库备份,不能将它设置为只读状态。因为联机备份结束时,Oracle更新表空间数据文件的头部信息。

                  示例:

                  SQL>ALTER TABLESPACE ORCLTBS1 READ ONLY;

                  SQL>ALTER TABLESPACE ORCLTBS1 READ WRITE

           4)  设置默认表空间

                   在Oracle10g数据库中,默认表空间为USERS表空间,默认临时表空间为TEMP表空间。

                   设置数据库的默认表空间:

                     ALTER DATABASE DEFAULT TABLESPACE

                   设置数据库的默认临时表空间:

                     ALTER DATABASE DEFAULT TEMPORARY TABLESPACE 

                   示例:

                    SQL>ALTERDATABASE DEFAULT TABLESPACE ORCLTBS1;

                    SQL>ALTERDATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

            5)  表空间重命名

                    语法:

                     ALTER TABLESPACE…RENAME TO

                   当重命名一个表空间时数据库会自动更新数据字典、控制文件以及数据文件头部中对该表空间的引用。在重命名表空间时,该表空间ID号并没有修改,如果该表空间是数据库默认表空间,那么重命名后仍然是数据库的默认表空间。

                   注意:

                    不能重命名SYSTEM表空间和SYSAUX表空间

                    不能重命名处于脱机状态或部分数据文件处于脱机状态的表空间。

 

(3)表空间的备份

          语法:

            ALTER TABLESPACE tablespace_name BEGIN|ENDBACKUP

          在数据库进行热备份(联机备份)时,需要分别对表空间进行备份。

          基本步骤为:

           1)使用ALTERTABLESPACE…BEGIN BACKUP语句将表空间设置为备份模式。

           2)在操作系统中备份表空间所对应的数据文件

           3)使用ALTERTABLESPACE…END BACKUP语句结束表空间的备份模式。

          示例:备份ORCL数据库的ORCLTBS1表空间。

           SQL>ALTER TABLESPACE ORCLTBS1 BEGINBACKUP;

           复制ORCLTBS1表空间的数据文件ORCLTBS1_1.DBF和ORCLTBS1_2.DBF到目标位置。

           SQL>ALTER TABLESPACE ORCLTBS1 END BACKUP;


(4)删除表空间

          语法:

           DROP TABLESPACE tablespace_name

           如果表空间非空,应带有子句INCLUDING CONTENTS

           若要删除操作系统下的数据文件,应带有子句AND DATAFILES

           删除参照完整性约束,应带有子句CASCADE CONSTRAINTS

           示例:

           1)删除ORCL数据库的ORCLTBS1表空间及其所有内容。

                 SQL>DROP TABLESPACE ORCLTBS1 INCLUDINGCONTENTS;

           2)删除ORCL数据库的ORCLUNDO1表空间及其所有内容,同时删除其所对应的数据文件。

                 SQL>DROP TABLESPACE ORCLUNDO1 INCLUDINGCONTENTS AND DATAFILES;

           3)删除ORCL数据库的ORCLUNDO1表空间及其所有内容,同时删除其所对应的数据文件,以及其他表空间中与ORCLUNDO1表空间相关的参照完整性约束。

                 SQL>DROP TABLESPACE ORCLUNDO1 INCLUDINGCONTENTS AND DATAFILES CASCADE CONSTRAINTS;


(5)大文件表空间的管理

          大文件表空间只包含一个数据文件,减少数据库中数据文件的数量,减少SGA中用于存放数据文件信息的内存需求,同时减小控制文件。

          通过对大文件表空间的操作可以实现对数据文件的透明操作,简化了对数据文件的管理。

          大文件表空间只能采用本地管理方式,其段采用自动管理方式。

          如果在数据库创建时设置系统默认的表空间类型为BIGFILE,则使用CREATETABLESPACE语句默认创建的就是大文件表空间。如果要创建传统的小文件表空间,则需要使用CREATE SMALLFILE TABLESPACE语句。

          1)  创建大文件表空间

                  语句:CREATE BIGFILE TABLESPACE

                  示例:创建一个大文件表空间ORCLTBS5。

                   SQL>CREATE BIGFILE TABLESPACEORCLTBS5 DATAFILE

                             'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS5_1.DBF'SIZE 20M;

         2)大文件表空间的操作

               将大文件表空间ORCLTBS5的数据文件D:\ORACLE\PRODUCT\10.2.0\ORADATA\ ORCL\ORCLTBS5_1.DBF 大小修改为30 MB。

                  SQL>ALTER TABLESPACE ORCLTBS5RESIZE 30M;

              将大文件表空间ORCLTBS5的数据文件D:\ORACLE\PRODUCT\10.2.0\ORADATA\ ORCL\ORCLTBS5_1.DBF修改为可以自动扩展。

                 SQL>ALTER TABLESPACE ORCLTBS5AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;


(6)表空间信息查询

           V$TABLESPACE:从控制文件中获取的表空间名称和编号信息。

           DBA_TABLESPACES:数据库中所有表空间的信息。

           DBA_TABLESPACE_GROUPS:表空间组及其包含的表空间信息。

           DBA_SEGMENTS:所有表空间中段的信息。

           DBA_EXTENTS:所有表空间中区的信息。

           DBA_FREE_SPACE:所有表空间中空闲区的信息。

           V$DATAFILE:所有数据文件信息,包括所属表空间的名称和编号。

           V$TEMPFILE:所有临时文件信息,包括所属表空间的名称和编号。

           DBA_DATA_FILES:数据文件及其所属表空间信息。

           DBA_TEMP_FILES:临时文件及其所属表空间信息。

           DBA_USERS:所有用户的默认表空间和临时表空间信息。

           DBA_TS_QUOTAS:所有用户的表空间配额信息。

           V$SORT_SEGMENT:数据库实例的每个排序段信息。

           V$SORT_USER:用户使用临时排序段信息。

          示例:

           查询表空间基本信息

           SQL>SELECT TABLESPACE_NAME,EXTENT_MANAGEMENT,ALLOCATION_TYPE,

                     SEGMENT_SPACE_MANAGEMENT, CONTENTS,NEXT_EXTENT FROM DBA_TABLESPACES;

          查询表空间数据文件信息

           SQL>SELECTFILE_NAME,BLOCKS,TABLESPACE_NAME FROM DBA_DATA_FILES;

          查询表空间空闲空间大小

          SQL>SELECT TABLESPACE_NAME,SUM(BYTES),FREE_SPACESFROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;

         统计表空间空闲空间信息

          SQL>SELECT TABLESPACE_NAME "TABLESPACE",FILE_ID,COUNT(*) "PIECES", MAX(blocks) "MAXIMUM",MIN(blocks) "MINIMUM",

                     AVG(blocks) "AVERAGE",SUM(blocks) "TOTAL"

                     FROM DBA_FREE_SPACE

                     GROUP BY TABLESPACE_NAME, FILE_ID;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值