Oracle rename数据文件

摘要

表空间

1
2
SQL> set pagesize 999;
SQL> set linesize 999;

查看表空间和表空间的文件

1
SQL> select tablespace_name,file_name from dba_data_files;

表空间离线

1
SQL> alter tablespace TMSCW_D_STAND offline;

把物理文件复制到新的位置

1
SQL> host cp /oracledata/tmscw/tmscw_d_stand01.ora /volumes/data/oradata/tmscw_d_stand01.ora

更换物理地址

1
SQL> alter tablespace TMSCW_D_STAND rename datafile '/oracledata/tmscw/tmscw_d_stand01.ora' to '/volumes/data/oradata/tmscw_d_stand01.ora';

表空间在线

1
SQL> alter tablespace TMSCW_D_STAND online;

删除原来的文件

1
SQL> host rm /oracledata/tmscw/tmscw_d_stand01.ora

如果报下面的错

1
2
3
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: '/volumes/data/oradata/tmscw_d_stand01.ora'

则需要执行下面的语句:

1
SQL> recover datafile '/volumes/data/oradata/tmscw_d_stand01.ora';

再查看磁盘空间,发现磁盘的使用率并没有变。

为什么呢?

虽然删除了文件,oracle没有关闭,oracle 并没有释放物理文件的句柄,空间并没真正的释放。

如果需要真正的释放空间,还需要oracle 重新启动。

临时表空间

临时表空间不能offline

1
2
3
4
5
6
7
8
9
SQL> shutdown immediate;

SQL> startup mount;

SQL> host cp /oracledata/tmscw/tmscw_t_stand01.ora /volumes/data/oradata/tmscw_t_stand01.ora

SQL> alter database rename tempfile '/oracledata/tmscw/tmscw_t_stand01.ora' to '/volumes/data/oradata/tmscw_t_stand01.ora';

SQL> alter database open;

DataGuard备库

关闭主库

修改备库参数

1
SQL> alter system set standby_file_management=manual;

取消备库应用,此时备库standby_file_managementmanual

1
SQL> alter database recover managed standby database cancel;

关闭数据库,移动文件到相应位置

1
2
SQL> shutdown immediate;
SQL> host cp /data/oracle/oradata/orcl/tt.ora /data2/oradata/orcl/tt.dbf

备库启动,rename file

1
2
SQL> startup mount;
SQL> alter database rename file '/data/oracle/oradata/orcl/tt.ora' to '/data2/oradata/orcl/tt.dbf';

备库修改参数

1
SQL> alter system set standby_file_management=auto;

重新启动备库

1
2
3
4
5
SQL> shutdown immediate;
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database open read only;
SQL> alter database recover managed standby database using current logfile disconnect from session;

启动主库