您的位置:首页 > 数据库 > Oracle

Oracle 12C 新特性之在线重命名、迁移活跃的数据文件

2017-05-12 20:39 621 查看
Oracle 数据库 12c 版本中对数据文件的迁移或重命名不再需要太多繁琐的步骤,可以使用 ALTER DATABASE MOVE DATAFILE 这样的 SQL 语句对数据文件进行在线重命名和移动。而当此数据文件正在传输时,终端用户可以执行查询,DML以及 DDL 方面的任务。另外,数据文件可以在存储设备间迁移,如从非 ASM 迁移至 ASM,反之亦然。

一、 重命名数据文件:

-- 注意,我这里是在名为 PDB01 的 pdb 容器内演示的。 

SQL> show con_name

CON_NAME

------------------------------

PDB01

-- 查看原数据文件名

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf

6 rows selected.

-- 重命名

SQL> ALTER DATABASE MOVE DATAFILE '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf' TO 

'/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb01.dbf';

Database altered.

-- 检查重命名结果

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf

6 rows selected.

二、迁移数据文件到其他路径

-- 注意,我这里是在名为 PDB01 的 pdb 容器内演示的。 

SQL> show con_name

CON_NAME

------------------------------

PDB01

-- 查看数据文件原路径

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb01.dbf

/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf

6 rows selected.

-- 检查数据文件的确存在原路径下

[oracle@12c ~]$ cd /home/oracle/app/oracle/oradata/andycdb/pdb01/

[oracle@12c pdb01]$ ll  bbb*

total 769412

-rw-r-----. 1 oracle oinstall   2105344 May 13 04:22 bbb01.dbf

-rw-r-----. 1 oracle oinstall   2105344 May 13 04:22 bbb02.dbf

-- 迁移数据文件到新路径

SQL>ALTER  DATABASE  MOVE  DATAFILE  '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf'  TO '/home/oracle/app/oracle/oradata/andycdb/pdb01/new/bbb02.dbf';

Database altered.

-- 核实数据文件是否存在迁移路径下 

[oracle@12c pdb01]$ ll

total 769412

-rw-r-----. 1 oracle oinstall   2105344 May 13 04:22 bbb01.dbf

drwxr-x---. 2 oracle oinstall      4096 May 13 04:31 new

-rw-r-----. 1 oracle oinstall 387981312 May 13 04:15 sysaux01.dbf

-rw-r-----. 1 oracle oinstall 272637952 May 13 04:30 system01.dbf

-rw-r-----. 1 oracle oinstall  67117056 May 12 07:02 temp01.dbf

-rw-r-----. 1 oracle oinstall 104865792 May 13 04:30 undotbs01.dbf

-rw-r-----. 1 oracle oinstall  14426112 May 13 04:10 users01.dbf

-rw-r-----. 1 oracle oinstall   5251072 May 12 06:42 users01.dbf.bak

[oracle@12c pdb01]$ cd /home/oracle/app/oracle/oradata/andycdb/pdb01/new

[oracle@12c new]$ ll

total 2056

-rw-r-----. 1 oracle oinstall 2105344 May 13 04:31 bbb02.dbf

说明:迁移数据文件到新路径,自动完成了操作系统层面数据文件的移动。

补充(其他几种迁移类型):

1. 从非 ASM 迁移数据文件至 ASM:

SQL>ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '+DG_DATA';

2. 将数据文件从一个 ASM 磁盘群组迁移至另一个 ASM 磁盘群组:

SQL>ALTER DATABASE MOVE DATAFILE '+DG_DATA/DBNAME/DATAFILE/users_01.dbf ' TO '+DG_DATA_02';

3. 在数据文件已存在于新路径的情况下,以相同的命名将其覆盖:

SQL>ALTER  DATABASE  MOVE  DATAFILE  '/u00/data/users_01.dbf'  TO '/u00/data_new/users_01.dbf' REUSE;

4. 复制文件到一个新路径,同时在原路径下保留其拷贝:

SQL>ALTER  DATABASE  MOVE  DATAFILE  '/u00/data/users_01.dbf'  TO '/u00/data_new/users_01.dbf' KEEP;

当通过查询 v$session_longops 动态视图来移动文件时,你可以监控这一过程。另外,

你也可以引用 alert.log,Oracle 会在其中记录具体的行为。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: