基本语法:
-
ALTER DATABASE MOVE DATAFILE ( 'filename' | 'ASM_filename' | file_number )
-
[ TO ( 'filename' | 'ASM_filename' ) ]
-
[ REUSE ] [ KEEP ]
reuse移动数据文件不保留原始数据文件
keep移动数据文件保留原始数据文件
默认是reuse
1、查看当前数据文件位置
-
[oracle@test ~]$ sqlplus / as sysdba
-
-
SQL*Plus: Release 12.1.0.2.0 Production on Sun Nov 8 03:45:56 2015
-
-
Copyright (c) 1982, 2014, Oracle. All rights reserved.
-
-
-
Connected to:
-
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
-
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
-
-
SQL> show con_name
-
-
CON_NAME
-
------------------------------
-
CDB$ROOT
-
SQL> col name for a45
-
SQL> select file#,name from v$datafile order by file#;
-
-
FILE# NAME
-
---------- ---------------------------------------------
-
1 /oradata/cdb/system01.dbf
-
3 /oradata/cdb/sysaux01.dbf
-
4 /oradata/cdb/undotbs01.dbf
-
5 /oradata/cdb/pdbseed/system01.dbf
-
6 /oradata/cdb/users01.dbf
-
7 /oradata/cdb/pdbseed/sysaux01.dbf
-
8 /oradata/cdb/pdb1/system01.dbf
-
9 /oradata/cdb/pdb1/sysaux01.dbf
-
10 /oradata/cdb/pdb1/pdb1_users01.dbf
-
11 /oradata/cdb/pdbseed/users01.dbf
-
12 /oradata/cdb/pdb2/system01.dbf
-
-
FILE# NAME
-
---------- ---------------------------------------------
-
13 /oradata/cdb/pdb2/sysaux01.dbf
-
14 /oradata/cdb/pdb2/users01.dbf
-
-
13 rows selected.
-
-
SQL> show pdbs
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
2 PDB$SEED READ ONLY NO
-
3 PDB1 READ WRITE NO
-
4 PDB2 READ WRITE NO
-
SQL> col file_name for a45
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdb/users01.dbf
-
4 /oradata/cdb/undotbs01.dbf
-
1 /oradata/cdb/system01.dbf
-
3 /oradata/cdb/sysaux01.dbf
2、开始移动数据文件,使用了reuse参数
-
SQL> alter database move datafile 1 to '/oradata/cdbbak/system01.dbf' reuse;
-
-
Database altered.
-
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdb/users01.dbf
-
4 /oradata/cdb/undotbs01.dbf
-
3 /oradata/cdb/sysaux01.dbf
-
1 /oradata/cdbbak/system01.dbf
查看存放数据目录是否有原始数据文件
-
SQL> host ls -al /oradata/cdb/system01.dbf
-
ls: cannot access /oradata/cdb/system01.dbf: No such file or directory
-
-
SQL> host ls -al /oradata/cdbbak/system01.dbf
-
-rw-r----- 1 oracle oinstall 838868992 Nov 8 04:00 /oradata/cdbbak/system01.dbf
后台alert日志
-
alter database move datafile 1 to '/oradata/cdbbak/system01.dbf' reuse
-
Sun Nov 08 03:50:02 2015
-
Moving datafile /oradata/cdb/system01.dbf (1) to /oradata/cdbbak/system01.dbf
-
Sun Nov 08 03:51:24 2015
-
Move operation committed for file /oradata/cdbbak/system01.dbf
-
Completed: alter database move datafile 1 to '/oradata/cdbbak/system01.dbf' reuse
下面是没有使用reuse参数,从实验结果看和使用reuse参数是一致的,即原始数据文件目录已被移到新目录中
-
SQL> alter database move datafile 3 to '/oradata/cdbbak/sysaux01.dbf';
-
-
Database altered.
-
-
-
SQL> select file_id,file_name from dba_data_files where file_id=3;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
3 /oradata/cdbbak/sysaux01.dbf
-
-
SQL> host ls -al /oradata/cdb/sysaux01.dbf
-
ls: cannot access /oradata/cdb/sysaux01.dbf: No such file or directory
-
-
SQL> host ls -al /oradata/cdbbak/sysaux01.dbf
-
-rw-r----- 1 oracle oinstall 744497152 Nov 8 04:05 /oradata/cdbbak/sysaux01.dbf
使用keep参数移动数据文件
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdb/users01.dbf
-
4 /oradata/cdb/undotbs01.dbf
-
3 /oradata/cdbbak/sysaux01.dbf
-
1 /oradata/cdbbak/system01.dbf
-
-
SQL> alter database move datafile 4 to '/oradata/cdbbak/undotbs01.dbf' keep;
-
-
Database altered.
-
-
SQL> select file_id,file_name from dba_data_files where file_id=4;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
4 /oradata/cdbbak/undotbs01.dbf
-
-
SQL> host ls -al /oradata/cdb/undotbs01.dbf
-
-rw-r----- 1 oracle oinstall 225452032 Nov 8 04:08 /oradata/cdb/undotbs01.dbf
-
-
SQL> host ls -al /oradata/cdbbak/undotbs01.dbf
-
-rw-r----- 1 oracle oinstall 225452032 Nov 8 04:08 /oradata/cdbbak/undotbs01.dbf
从上面的实验结果可以看出,使用了keep参数之后,则保留了原文件
下面演示使用OMF参数移动数据文件
-
SQL> alter system set db_create_file_dest='/oradata/cdbbak/' scope=both;
-
-
System altered.
-
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdb/users01.dbf
-
3 /oradata/cdbbak/sysaux01.dbf
-
4 /oradata/cdbbak/undotbs01.dbf
-
1 /oradata/cdbbak/system01.dbf
-
-
SQL> alter database move datafile '/oradata/cdb/users01.dbf';
-
-
Database altered.
-
-
SQL> select file_id,file_name from dba_data_files where file_id=6;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdbbak/CDB/datafile/o1_mf_users_c3wp
-
vsnj_.dbf
这个实验是在数据文件使用了OMF,移动数据文件使用了keep参数,但会被忽略。
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdbbak/CDB/datafile/o1_mf_users_c3wp
-
vsnj_.dbf
-
-
3 /oradata/cdbbak/sysaux01.dbf
-
4 /oradata/cdbbak/undotbs01.dbf
-
1 /oradata/cdbbak/system01.dbf
-
-
SQL> alter database move datafile '/oradata/cdbbak/CDB/datafile/o1_mf_users_c3wpvsnj_.dbf' to '/oradata/cdb/users01.dbf' keep;
-
-
Database altered.
-
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
6 /oradata/cdb/users01.dbf
-
3 /oradata/cdbbak/sysaux01.dbf
-
4 /oradata/cdbbak/undotbs01.dbf
-
1 /oradata/cdbbak/system01.dbf
-
-
SQL> host ls -al /oradata/cdbbak/o1_mf_users_c3wpvsnj_.dbf
-
ls: cannot access /oradata/cdbbak/o1_mf_users_c3wpvsnj_.dbf: No such file or directory
-
-
SQL> host ls -al /oradata/cdb/users01.dbf
-
-rw-r----- 1 oracle oinstall 5251072 Nov 8 04:16 /oradata/cdb/users01.dbf
不能在CDG容器库环境中移动PDB,下面是实验结果
-
SQL> select file#,name from v$datafile;
-
-
FILE# NAME
-
---------- ---------------------------------------------
-
1 /oradata/cdbbak/system01.dbf
-
3 /oradata/cdbbak/sysaux01.dbf
-
4 /oradata/cdbbak/undotbs01.dbf
-
5 /oradata/cdb/pdbseed/system01.dbf
-
6 /oradata/cdb/users01.dbf
-
7 /oradata/cdb/pdbseed/sysaux01.dbf
-
8 /oradata/cdb/pdb1/system01.dbf
-
9 /oradata/cdb/pdb1/sysaux01.dbf
-
10 /oradata/cdb/pdb1/pdb1_users01.dbf
-
11 /oradata/cdb/pdbseed/users01.dbf
-
12 /oradata/cdb/pdb2/system01.dbf
-
-
FILE# NAME
-
---------- ---------------------------------------------
-
13 /oradata/cdb/pdb2/sysaux01.dbf
-
14 /oradata/cdb/pdb2/users01.dbf
-
-
13 rows selected.
-
-
SQL> alter database move datafile 14 to '/oradata/pdbbak/users01.dbf' reuse;
-
alter database move datafile 14 to '/oradata/pdbbak/users01.dbf' reuse
-
*
-
ERROR at line 1:
-
ORA-01516: nonexistent log file, data file, or temporary file "14"
移动pdb库数据文件
-
SQL> show pdbs
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
2 PDB$SEED READ ONLY NO
-
3 PDB1 READ WRITE NO
-
4 PDB2 READ WRITE NO
-
SQL> alter session set container=pdb2;
-
-
Session altered.
-
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
12 /oradata/cdb/pdb2/system01.dbf
-
13 /oradata/cdb/pdb2/sysaux01.dbf
-
14 /oradata/cdb/pdb2/users01.dbf
-
-
SQL> alter database move datafile 14 to '/oradata/pdbbak/users01.dbf' reuse;
-
-
Database altered.
-
-
SQL> select file_id,file_name from dba_data_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
12 /oradata/cdb/pdb2/system01.dbf
-
13 /oradata/cdb/pdb2/sysaux01.dbf
-
14 /oradata/pdbbak/users01.dbf
-
-
SQL> alter session set container=cdb$root;
-
-
Session altered.
-
-
SQL> show pdbs
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
2 PDB$SEED READ ONLY NO
-
3 PDB1 READ WRITE NO
-
4 PDB2 READ WRITE NO
在线移动数文件功能,并不适合移动tempfile
-
SQL> show pdbs
-
-
CON_ID CON_NAME OPEN MODE RESTRICTED
-
---------- ------------------------------ ---------- ----------
-
2 PDB$SEED READ ONLY NO
-
3 PDB1 READ WRITE NO
-
4 PDB2 READ WRITE NO
-
SQL> select file_id,file_name from dba_temp_files;
-
-
FILE_ID FILE_NAME
-
---------- ---------------------------------------------
-
1 /oradata/cdb/temp01.dbf
-
-
SQL> alter database move datafile '/oradata/cdb/temp01.dbf' to '/oradata/cdbbak/temp01.dbf';
-
alter database move datafile '/oradata/cdb/temp01.dbf' to '/oradata/cdbbak/temp01.dbf'
-
*
-
ERROR at line 1:
-
ORA-01516: nonexistent log file, data file, or temporary file
-
"/oradata/cdb/temp01.dbf"
阅读(316) | 评论(0) | 转发(0) |