Oracle rename数据文件

警告
本文最后更新于 2022-07-01,文中内容可能已过时。

摘要

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

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

1
2
3
4
# 表空间
SQL> select tablespace_name,file_name from dba_data_files;
# 临时表空间
SQL> select tablespace_name,file_name from dba_temp_files;

表空间离线

1
SQL> alter tablespace TEST offline;

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

1
SQL> host cp /data/oracle/oradata/orcl/test.ora /data2/oradata/test.dbf

更换物理地址

1
SQL> alter tablespace TEST rename datafile '/data/oracle/oradata/orcl/test.ora' to '/data2/oradata/test.dbf';

表空间在线

1
SQL> alter tablespace TEST online;

删除原来的文件

1
SQL> host rm /data/oracle/oradata/orcl/test.ora

如果报下面的错

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

则需要执行下面的语句:

1
SQL> recover datafile '/data/oracle/oradata/orcl/test.ora';

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

为什么呢?

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

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

临时表空间不能offline

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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;

关闭主库

修改备库参数

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;

启动主库

相关内容