您的位置:首页 > 数据库 > Oracle

20_Oracle_Admin_移动表空间的数据文件以及删除表空间

2014-10-01 00:50 441 查看
一、使用ALTER TABLESPACE来移动数据文件




移动数据文件在调整表空间大小时有可能会用到,使用的是ALTERTABLESPACE命令。但是要注意的是,在进行此项操作之前,首先应将tablespace 设为offline,第二,需要确定目标数据文件是存在的

======查询当前表空间信息=======

SQL> select file_name, tablespace_name,bytes from dba_data_files;

FILE_NAME                               TABLESPACE_NAME           BYTES
------------------------------------------------------------ ----------
/oracle/oradata/orcl/users01.dbf        USERS                   5242880
/oracle/oradata/orcl/undotbs01.dbf      UNDOTBS1               57671680
/oracle/oradata/orcl/sysaux01.dbf       SYSAUX                671088640
/oracle/oradata/orcl/system01.dbf       SYSTEM                723517440
/oracle/oradata/orcl/example01.dbf      EXAMPLE               104857600
/oracle/oradata/orcl/wiley.dbf          WILEY                  20971520
/oracle/oradata/orcl/wiley2.dbf         WILEY                  10485760

7 rows selected.

=======将表空间设定为offline========

SQL> alter tablespace wiley offline;

Tablespace altered.

SQL> select file_name, tablespace_name,bytes from dba_data_files;

FILE_NAME                               TABLESPACE_NAME           BYTES
------------------------------------------------------------ ----------
/oracle/oradata/orcl/users01.dbf        USERS                   5242880
/oracle/oradata/orcl/undotbs01.dbf      UNDOTBS1               57671680
/oracle/oradata/orcl/sysaux01.dbf       SYSAUX                671088640
/oracle/oradata/orcl/system01.dbf       SYSTEM                723517440
/oracle/oradata/orcl/example01.dbf      EXAMPLE               104857600
/oracle/oradata/orcl/wiley.dbf          WILEY
/oracle/oradata/orcl/wiley2.dbf         WILEY
-- 设为离线的tablespace将不会显示体积

7 rows selected.

=======移动数据文件到上一级目录=======

[oracle@localhost~]$ cd /oracle/oradata
[oracle@localhostoradata]$ mv orcl/wiley2.dbf ./

[oracle@localhostoradata]$ ls
orcl  smn  wiley2.dbf

==============更改tablespace的datafile路径============
SQL> alter tablespace wiley rename datafile
2 '/oracle/oradata/orcl/wiley2.dbf'
3 to'/oracle/oradata/wiley2.dbf';
Tablespace altered.

上述操作执行速度非常快,因为它仅仅改变的是文件的指针,而不是实际移动文件

SQL> alter tablespace wiley online;

Tablespace altered.

SQL> select file_name, tablespace_name,bytes from dba_data_files;

FILE_NAME                               TABLESPACE_NAME           BYTES
------------------------------------------------------------ ----------
/oracle/oradata/orcl/users01.dbf        USERS                   5242880
/oracle/oradata/orcl/undotbs01.dbf      UNDOTBS1               57671680
/oracle/oradata/orcl/sysaux01.dbf       SYSAUX                587202560
/oracle/oradata/orcl/system01.dbf       SYSTEM                713031680
/oracle/oradata/orcl/example01.dbf      EXAMPLE               104857600
/oracle/oradata/orcl/mickey01.dbf       MICKEY                 20971520
/oracle/oradata/orcl/wiley.dbf          WILEY                  20971520
/oracle/oradata/wiley2.dbf              WILEY                  10485760
-- 表空间移动成功

8 rows selected.

二、使用ALTERDATABASE来移动数据文件





使用ALTERDATABASE来移动数据文件的方式和ALTER TABLESPACE基本相似,值得注意的是,这里不是将tablespace设为offline,而是先要确保数据库处于mount状态,然后保证目标数据文件存在

======首先关闭数据库=====
SQL> shutdownimmediate
Database closed.
Database dismounted.
ORACLE instance shut down.


===========移动数据文件=========
[oracle@localhost ~]$ cd /oracle/oradata
[oracle@localhost oradata]$ ls
orcl  redo03.log  smn wiley2.dbf
[oracle@localhost oradata]$ mv wiley2.dbf orcl

=========以mount的模式启动数据库========
SQL> startupmount;
ORACLE instance started.

Total System Global Area 422670336 bytes
Fixed Size                 1336960 bytes
Variable Size            318769536 bytes
Database Buffers          96468992 bytes
Redo Buffers               6094848 bytes
Database mounted.

==============更改database的data file路径============

SQL> alterdatabase rename file
2 '/oracle/oradata/wiley2.dbf' to
3 '/oracle/oradata/orcl/wiley2.dbf';

Database altered.

=====将数据库设为open状态=====
SQL> alterdatabase open;
Database altered.

SQL> selectfile_name, tablespace_name, bytes from dba_data_files;
FILE_NAME                               TABLESPACE_NAME           BYTES
------------------------------------------------------------ ----------
/oracle/oradata/orcl/users01.dbf        USERS                   5242880
/oracle/oradata/orcl/undotbs01.dbf      UNDOTBS1               57671680
/oracle/oradata/orcl/sysaux01.dbf       SYSAUX                587202560
/oracle/oradata/orcl/system01.dbf       SYSTEM                713031680
/oracle/oradata/orcl/example01.dbf      EXAMPLE               104857600
/oracle/oradata/orcl/mickey01.dbf       MICKEY                 20971520
/oracle/oradata/orcl/wiley.dbf          WILEY                  20971520
/oracle/oradata/orcl/wiley2.dbf         WILEY                  10485760
-- data file 的路径已经改变了

8 rows selected.

综合起来,ALTERTABLESPACE的方式优于ALTERDATABASE的方式,因为不会影响到整个数据库的正常使用。当然具体情况还需要具体分析。

三、删除表空间




Drop tablespace需要注意如下几点:
1.SYSTEM database不能drop;2.有activesegment时,不能drop。
在删除tablespace时,如果包括了INCLUDING CONTENTS ANDDATAFILES,则意味着tablespace和data file会被同时删除;如果只包括了INCLUDING CONTENTS,则只删除segments;CASCADECONSTRAINTS表示同时删除约束条件。

=======执行drop命令删除表空间======

SQL> drop tablespace wiley including contents anddatafiles;
Tablespace dropped.

SQL> select file_name, tablespace_name, bytes fromdba_data_files;
FILE_NAME                               TABLESPACE_NAME           BYTES
------------------------------------------------------------ ----------
/oracle/oradata/orcl/users01.dbf        USERS                   5242880
/oracle/oradata/orcl/undotbs01.dbf      UNDOTBS1               57671680
/oracle/oradata/orcl/sysaux01.dbf       SYSAUX                587202560
/oracle/oradata/orcl/system01.dbf       SYSTEM                713031680
/oracle/oradata/orcl/example01.dbf      EXAMPLE               104857600
/oracle/oradata/orcl/mickey01.dbf       MICKEY                 20971520
-- 表空间wiley已经被删除了

6 rows selected.


======查询磁盘信息=====
[oracle@localhost oradata]$ ll /oracle/oradata/orcl
total 1642152
-rw-r-----. 1 oracle oinstall   9748480 Sep 10 14:02 control01.ctl
-rw-r-----. 1 oracle oinstall   9748480 Sep 10 14:02 control03.ctl
-rw-r-----. 1 oracle oinstall   9748480 Sep 10 00:37 control04.ctl
-rw-r-----. 1 oracle oinstall 104865792 Sep 10 13:51example01.dbf
-rw-r-----. 1 oracle oinstall  20979712 Sep 10 13:51 mickey01.dbf
-rw-r-----. 1 oracle oinstall  10493952 Sep 10 13:34 mytemp01.dbf
drwxr-xr-x. 2 oracle oinstall      4096 Sep 10 00:57 old
-rw-r-----. 1 oracle oinstall  52429312 Sep 10 14:01 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Sep 10 13:51 redo02.log
-rw-r-----. 1 oracle oinstall  52429312 Sep 10 05:38 redo03.log
-rw-r-----. 1 oracle oinstall 587210752 Sep 10 14:01sysaux01.dbf
-rw-r-----. 1 oracle oinstall 713039872 Sep 10 13:56system01.dbf
-rw-r-----. 1 oracle oinstall  20979712 Sep 10 07:34 temp01.dbf
-rw-r-----. 1 oracle oinstall  57679872 Sep 10 13:57 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Sep 10 13:51 users01.dbf
# wiley表空间使用的两个数据文件wiley.dbf和wiley2.dbf已经被删除了






四、获取表空间的信息



更多表空间的查询信息,可以参考联机文档REFERENCE获取。

本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1560221
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: