1.查看磁盘使用情况
可以使用df命令查看磁盘使用情况再来决定需要迁移多少数据。
上面例子中可以看到/opt下可用空间已经是0,需要释放很多空间出来。
2.查看数据库表空间情况
下面就是查看数据库表空间的大小了,找到适合的表空间去迁移
用ls- hl 来查看所有表空间文件(后接的管道到grep G是为了显示过G的空间,对M级别的不太感兴趣,可以不加)
上图中tgwl1201201和tgwl1202两个表空间容量很大,并且是相对旧的数据,可以做迁移,对应的文件是dgwl20120101.dbf、dgwl20120102.dbf和dgwl20120201.dbf、dgwl20120202.dbf。
3.查看数据库表空间
1.dba_tablespaces这个视图可以查看表空间的基本信息.
select * from dba_tablespaces;
2.dba_data_files这个视图可以查看表空间对应的文件大小.
select * from dba_data_files;
3.显示各个表空间数据文件占据的磁盘空间大小.
select t1.FILE_NAME, t1.BYTES/1024/1024 MB, t2.tablespace_name from dba_data_files t1, dba_tablespaces t2 where t1.TABLESPACE_NAME = t2.tablespace_name order by MB desc
4.复制数据文件
(1)首先要将表空间离线,比如复制tgwl201201这个表空间,那么将它离线
alter tablespace TGWL201201 offline;
(2)复制数据文件
复制TGWL201201表空间对应的文件到新的目录,如/home/oradata下,这里由于要复制的文件比较大,最好在后台运行
nohup cp /opt/oracle9i/oradata/dgwl20120101.dbf /home/oradata &nohup cp /opt/oracle9i/oradata/dgwl20120102.dbf /home/oradata &
(3)删除原文件
rm /opt/oracle9i/oradata/dgwl20120101.dbf
rm /opt/oracle9i/oradata/dgwl20120102.dbf
(4)修改表空间的数据文件位置
alter tablespace TGWL201201 rename datafile '/opt/oracle9i/oradata/NBDB/dgwl20120101.dbf' to '/home/oradata/dgwl20120101.dbf';
alter tablespace TGWL201201 rename datafile
'/opt/oracle9i/oradata/NBDB/dgwl20120102.dbf' to '/home/oradata/dgwl20120102.dbf';
(5)将表空间置为在线
alter tablespace TGWL201201 online;
如果要移动其他的表空间也是重复上面的动作,最后要重启oracle实例让修改生效,不然不会释放磁盘空间。