oracle数据库移动数据文件

2023年 11月 27日 37.7k 0

可以重新命名永久表空间和临时表空间,但有一些限制。
★ 不能重新命名Systen和Sysaux表空间。
★ 被重命名的表空间必须使其所有数据文件联机。
★ 若表空间是只读的,则重新命名不改变其数据文件的文件头。

**************************************************
除了 SYSTEM、SYSAUX,联机撤销表空间以及临时表空间以外,
alter tablespace 可作用于其他所有表空间中的数据文件。
alter database 可作用于所有表空间中的数据文件,因为在进行移动操作时实例将被关闭。

11G and before

一、不停机移动数据文件
使用alter tablespace移动一个或多个数据文件的步骤如下:
(1) 使用具有ALTER TABLESPACE权限的账户,对表空间进行脱机处理。
(2) 使用操作系统命令移动数据文件。
(3) 使用alter tablespace改变对数据库中数据文件的引用。
(4) 将表空间返回到联机状态。

在alter database示例中,假设将XPORT表空间的数据文件移动到了错误的文件系统。在 本示例中,将数据文件从/u06/oradata移动到了/u05/oradata:
SQL> alter tablespace xport offline;
SQL> ! mv /u06/oradata/xport.dbf /u05/oradata/xport.dbf
SQL> alter tablespace xport rename datafile '/u06/oradata/xpozt.dbf' to '/u05/oradata/xport.dbf';
SQL> alter tablespace xport online;

完整步骤:
1、确认开启归档模式
2、offline数据文件
3、物理层移动数据文件(可重命名)
4、逻辑层rename数据文件路径及名称
5、recover恢复数据文件
6、online数据文件

--开启归档模式
archive log list
shutdown immediate
startup mount
alter database archivelog;
alter database open;

--offline数据文件
select file#,name,status from v$datafile;
alter database datafile 7 offline;

--物理层移动数据文件
!mv /oradata/ORCL11G/datafile/7k_.dbf /oradata/orcl11g/test02.dbf
!ls /oradata/orcl11g/test02.dbf

--逻辑层rename数据文件
alter database rename file '/oradata/ORCL11G/datafile/7k_.dbf' to '/oradata/orcl11g/test02.dbf';

--恢复数据文件
recover datafile 7;

--online数据文件
alter database datafile 7 online;
select file#,name,status from v$datafile;

二、停机移动数据文件
使用 alter database 移动一个或多个数据文件的步骤如下:
(1) 作为SYSDBA连接到数据库,并且关闭实例。
(2) 使用操作系统命令移动数据文件。
(3) 以MOUNT模式打开数据库。
(4) 使用 alter database 改变对数据库中数据文件的引用。
(5) 以OPEN模式打开数据库。
(6) 对包括控制文件的数据库执行增量备份或完整备份。

完整步骤:
1、关闭数据库
2、物理层移动数据文件(可重命名)
3、开启数据库到mount
4、逻辑层rename数据文件路径及名称
5、开启数据库

--创建一个TEST表空间,发现建在了/oradata/ORCL11G/下,希望移动到/oradata/orcl11g/下
create tablespace TEST;
select name from v$datafile;

--关闭数据库
--操作系统层面移动数据文件,并且重命名
mv 0c_.dbf /oradata/orcl11g/test01.dbf

--开启数据库到mount
startup mount
alter database rename file '/oradata/ORCL11G/datafile/0c_.dbf' to '/oradata/orcl11g/test01.dbf';
select name from v$datafile;
alter database open;

12C and later

支持在线移动数据文件:

可参考:Online Move Datafile in Oracle Database 12c Release 1 (12.1)
https://oracle-base.com/articles/12c/online-move-datafile-12cr1

语法如下:

ALTER DATABASE MOVE DATAFILE ( 'filename' | 'ASM_filename' | file_number )
[ TO ( 'filename' | 'ASM_filename' ) ]
[ REUSE ] [ KEEP ]

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论