oracle教程:移动所有数据文件,最近在一个开发库上存在硬盘空间紧张的问题,新添加了一块盘,准备把所有的数据文件挪到新盘上。
如题,,最近在一个开发库上存在硬盘空间紧张的问题,新添加了一块盘,准备把所有的数据文件挪到新盘上。
首先列出需要移动的数据文件,数据文件隶属于表空间,我们从表空间用途可以如下分门别类:
控制文件
system表空间
undo表空间
temporary表空间
redo日志文件
user_data表空间
sql> select tablespace_name from dba_tablespaces;
tablespace_name
------------------------------
system
undotbs1
sysaux
temp
users
gtlions
gtlionstmp
sql> select file_name,file_id,tablespace_name from dba_data_files;
file_name file_id tablespace_name
-------------------------------------------------- ---------- ------------------------------
/u01/oracle/10g/oradata/gt10g/users01.dbf 4 users
/u01/oracle/10g/oradata/gt10g/sysaux01.dbf 3 sysaux
/u01/oracle/10g/oradata/gt10g/undotbs01.dbf 2 undotbs1
/u01/oracle/10g/oradata/gt10g/system01.dbf 1 system
/u01/oracle/10g/oradata/gt10g/gtlions01.ora 5 gtlions
sql> select file_name,file_id,tablespace_name from dba_temp_files;
file_name file_id tablespace_name
-------------------------------------------------- ---------- ------------------------------
/u01/oracle/10g/oradata/gt10g/temp01.dbf 1 temp
/u01/oracle/10g/oradata/gt10g/gtlionstmp01.ora 2 gtlionstmp
sql> select name from v$controlfile;
name
------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/oracle/10g/oradata/gt10g/control01.ctl
/u01/oracle/10g/oradata/gt10g/control02.ctl
/u01/oracle/10g/oradata/gt10g/control03.ctl
sql> select member from v$logfile;
member
------------------------------------------------------------------------------------------------------------------------------------------------------
/u01/oracle/10g/oradata/gt10g/redo03.log
/u01/oracle/10g/oradata/gt10g/redo02.log
/u01/oracle/10g/oradata/gt10g/redo01.log
针对undo表空间,我们可以在打开数据的状态下直接操作:
sql> create undo tablespace undotbs2 datafile '/u01/oracle/10g/oradata/gt10gnew/undotbs01.dbf' size 20m autoextend on;
tablespace created.
sql> show parameter undo_tablespace;
name type value
------------------------------------ ----------- ------------------------------
undo_tablespace string undotbs1
sql> alter system set undo_tablespace='undotbs2';
system altered.
sql> show parameter undo_tablespace;
name type value
------------------------------------ ----------- ------------------------------
undo_tablespace string undotbs2
sql> drop tablespace undotbs1;
tablespace dropped.