Oracle rename数据文件
目录
0.1 表空间
SQL> set pagesize 999;
SQL> set linesize 999;
查看表空间和表空间的文件
# 表空间
SQL> select tablespace_name,file_name from dba_data_files;
# 临时表空间
SQL> select tablespace_name,file_name from dba_temp_files;
表空间离线
SQL> alter tablespace TEST offline;
把物理文件复制到新的位置
SQL> host cp /data/oracle/oradata/orcl/test.ora /data2/oradata/test.dbf
更换物理地址
SQL> alter tablespace TEST rename datafile '/data/oracle/oradata/orcl/test.ora' to '/data2/oradata/test.dbf';
表空间在线
SQL> alter tablespace TEST online;
删除原来的文件
SQL> host rm /data/oracle/oradata/orcl/test.ora
如果报下面的错
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: '/data/oracle/oradata/orcl/test.ora'
则需要执行下面的语句:
SQL> recover datafile '/data/oracle/oradata/orcl/test.ora';
再查看磁盘空间,发现磁盘的使用率并没有变。
为什么呢?
虽然删除了文件,oracle没有关闭,oracle 并没有释放物理文件的句柄,空间并没真正的释放。
如果需要真正的释放空间,还需要oracle 重新启动。
0.2 临时表空间
临时表空间不能offline
SQL> shutdown immediate;
SQL> startup mount;
SQL> host cp /data/oracle/oradata/orcl/test_t.ora /data2/oradata/test_t.dbf
# SQL> alter database rename tempfile '/data/oracle/oradata/orcl/test_t.ora' to '/data2/oradata/test_t.dbf';
SQL> alter database rename file '/data/oracle/oradata/orcl/test_t.ora' to '/data2/oradata/test_t.dbf';
SQL> host rm /data/oracle/oradata/orcl/test_t.ora
SQL> alter database open;
0.3 DataGuard备库
关闭主库
修改备库参数
SQL> alter system set standby_file_management=manual;
取消备库应用,此时备库standby_file_management
为manual
SQL> alter database recover managed standby database cancel;
关闭数据库,移动文件到相应位置
SQL> shutdown immediate;
SQL> host cp /data/oracle/oradata/orcl/tt.ora /data2/oradata/orcl/tt.dbf
备库启动,rename file
SQL> startup mount;
SQL> alter database rename file '/data/oracle/oradata/orcl/tt.ora' to '/data2/oradata/orcl/tt.dbf';
备库修改参数
SQL> alter system set standby_file_management=auto;
重新启动备库
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;
启动主库