Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25198
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-02 14:00
文章分类

全部博文(18)

文章存档

2016年(4)

2015年(14)

我的朋友

分类: Oracle

2015-11-08 17:46:59

基本语法:

点击(此处)折叠或打开

  1. ALTER DATABASE MOVE DATAFILE ( 'filename' | 'ASM_filename' | file_number )
  2.  [ TO ( 'filename' | 'ASM_filename' ) ]
  3.  [ REUSE ] [ KEEP ]
reuse移动数据文件不保留原始数据文件
keep移动数据文件保留原始数据文件
默认是reuse


1、查看当前数据文件位置

点击(此处)折叠或打开

  1. [oracle@test ~]$ sqlplus / as sysdba

  2. SQL*Plus: Release 12.1.0.2.0 Production on Sun Nov 8 03:45:56 2015

  3. Copyright (c) 1982, 2014, Oracle. All rights reserved.


  4. Connected to:
  5. Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
  6. With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

  7. SQL> show con_name

  8. CON_NAME
  9. ------------------------------
  10. CDB$ROOT
  11. SQL> col name for a45
  12. SQL> select file#,name from v$datafile order by file#;

  13.      FILE# NAME
  14. ---------- ---------------------------------------------
  15.      1 /oradata/cdb/system01.dbf
  16.      3 /oradata/cdb/sysaux01.dbf
  17.      4 /oradata/cdb/undotbs01.dbf
  18.      5 /oradata/cdb/pdbseed/system01.dbf
  19.      6 /oradata/cdb/users01.dbf
  20.      7 /oradata/cdb/pdbseed/sysaux01.dbf
  21.      8 /oradata/cdb/pdb1/system01.dbf
  22.      9 /oradata/cdb/pdb1/sysaux01.dbf
  23.     10 /oradata/cdb/pdb1/pdb1_users01.dbf
  24.     11 /oradata/cdb/pdbseed/users01.dbf
  25.     12 /oradata/cdb/pdb2/system01.dbf

  26.      FILE# NAME
  27. ---------- ---------------------------------------------
  28.     13 /oradata/cdb/pdb2/sysaux01.dbf
  29.     14 /oradata/cdb/pdb2/users01.dbf

  30. 13 rows selected.

  31. SQL> show pdbs

  32.     CON_ID CON_NAME             OPEN MODE RESTRICTED
  33. ---------- ------------------------------ ---------- ----------
  34.      2 PDB$SEED             READ ONLY NO
  35.      3 PDB1              READ WRITE NO
  36.      4 PDB2              READ WRITE NO
  37. SQL> col file_name for a45
  38. SQL> select file_id,file_name from dba_data_files;

  39.    FILE_ID FILE_NAME
  40. ---------- ---------------------------------------------
  41.      6 /oradata/cdb/users01.dbf
  42.      4 /oradata/cdb/undotbs01.dbf
  43.      1 /oradata/cdb/system01.dbf
  44.      3 /oradata/cdb/sysaux01.dbf
2、开始移动数据文件,使用了reuse参数

点击(此处)折叠或打开

  1. SQL> alter database move datafile 1 to '/oradata/cdbbak/system01.dbf' reuse;

  2. Database altered.

  3. SQL> select file_id,file_name from dba_data_files;

  4.    FILE_ID FILE_NAME
  5. ---------- ---------------------------------------------
  6.      6 /oradata/cdb/users01.dbf
  7.      4 /oradata/cdb/undotbs01.dbf
  8.      3 /oradata/cdb/sysaux01.dbf
  9.      1 /oradata/cdbbak/system01.dbf
查看存放数据目录是否有原始数据文件

点击(此处)折叠或打开

  1. SQL> host ls -al /oradata/cdb/system01.dbf
  2. ls: cannot access /oradata/cdb/system01.dbf: No such file or directory

  3. SQL> host ls -al /oradata/cdbbak/system01.dbf
  4. -rw-r----- 1 oracle oinstall 838868992 Nov 8 04:00 /oradata/cdbbak/system01.dbf
后台alert日志

点击(此处)折叠或打开

  1. alter database move datafile 1 to '/oradata/cdbbak/system01.dbf' reuse
  2. Sun Nov 08 03:50:02 2015
  3. Moving datafile /oradata/cdb/system01.dbf (1) to /oradata/cdbbak/system01.dbf
  4. Sun Nov 08 03:51:24 2015
  5. Move operation committed for file /oradata/cdbbak/system01.dbf
  6. Completed: alter database move datafile 1 to '/oradata/cdbbak/system01.dbf' reuse

下面是没有使用reuse参数,从实验结果看和使用reuse参数是一致的,即原始数据文件目录已被移到新目录中

点击(此处)折叠或打开

  1. SQL> alter database move datafile 3 to '/oradata/cdbbak/sysaux01.dbf';

  2. Database altered.


  3. SQL> select file_id,file_name from dba_data_files where file_id=3;

  4.    FILE_ID FILE_NAME
  5. ---------- ---------------------------------------------
  6.      3 /oradata/cdbbak/sysaux01.dbf

  7. SQL> host ls -al /oradata/cdb/sysaux01.dbf
  8. ls: cannot access /oradata/cdb/sysaux01.dbf: No such file or directory

  9. SQL> host ls -al /oradata/cdbbak/sysaux01.dbf
  10. -rw-r----- 1 oracle oinstall 744497152 Nov 8 04:05 /oradata/cdbbak/sysaux01.dbf

使用keep参数移动数据文件

点击(此处)折叠或打开

  1. SQL> select file_id,file_name from dba_data_files;

  2.    FILE_ID FILE_NAME
  3. ---------- ---------------------------------------------
  4.      6 /oradata/cdb/users01.dbf
  5.      4 /oradata/cdb/undotbs01.dbf
  6.      3 /oradata/cdbbak/sysaux01.dbf
  7.      1 /oradata/cdbbak/system01.dbf

  8. SQL> alter database move datafile 4 to '/oradata/cdbbak/undotbs01.dbf' keep;

  9. Database altered.

  10. SQL> select file_id,file_name from dba_data_files where file_id=4;

  11.    FILE_ID FILE_NAME
  12. ---------- ---------------------------------------------
  13.      4 /oradata/cdbbak/undotbs01.dbf

  14. SQL> host ls -al /oradata/cdb/undotbs01.dbf
  15. -rw-r----- 1 oracle oinstall 225452032 Nov 8 04:08 /oradata/cdb/undotbs01.dbf

  16. SQL> host ls -al /oradata/cdbbak/undotbs01.dbf
  17. -rw-r----- 1 oracle oinstall 225452032 Nov 8 04:08 /oradata/cdbbak/undotbs01.dbf
从上面的实验结果可以看出,使用了keep参数之后,则保留了原文件

下面演示使用OMF参数移动数据文件

点击(此处)折叠或打开

  1. SQL> alter system set db_create_file_dest='/oradata/cdbbak/' scope=both;

  2. System altered.

  3. SQL> select file_id,file_name from dba_data_files;

  4.    FILE_ID FILE_NAME
  5. ---------- ---------------------------------------------
  6.      6 /oradata/cdb/users01.dbf
  7.      3 /oradata/cdbbak/sysaux01.dbf
  8.      4 /oradata/cdbbak/undotbs01.dbf
  9.      1 /oradata/cdbbak/system01.dbf

  10. SQL> alter database move datafile '/oradata/cdb/users01.dbf';

  11. Database altered.

  12. SQL> select file_id,file_name from dba_data_files where file_id=6;

  13.    FILE_ID FILE_NAME
  14. ---------- ---------------------------------------------
  15.      6 /oradata/cdbbak/CDB/datafile/o1_mf_users_c3wp
  16.      vsnj_.dbf

这个实验是在数据文件使用了OMF,移动数据文件使用了keep参数,但会被忽略。

点击(此处)折叠或打开

  1. SQL> select file_id,file_name from dba_data_files;

  2.    FILE_ID FILE_NAME
  3. ---------- ---------------------------------------------
  4.      6 /oradata/cdbbak/CDB/datafile/o1_mf_users_c3wp
  5.      vsnj_.dbf

  6.      3 /oradata/cdbbak/sysaux01.dbf
  7.      4 /oradata/cdbbak/undotbs01.dbf
  8.      1 /oradata/cdbbak/system01.dbf

  9. SQL> alter database move datafile '/oradata/cdbbak/CDB/datafile/o1_mf_users_c3wpvsnj_.dbf' to '/oradata/cdb/users01.dbf' keep;

  10. Database altered.

  11. SQL> select file_id,file_name from dba_data_files;

  12.    FILE_ID FILE_NAME
  13. ---------- ---------------------------------------------
  14.      6 /oradata/cdb/users01.dbf
  15.      3 /oradata/cdbbak/sysaux01.dbf
  16.      4 /oradata/cdbbak/undotbs01.dbf
  17.      1 /oradata/cdbbak/system01.dbf

  18. SQL> host ls -al /oradata/cdbbak/o1_mf_users_c3wpvsnj_.dbf
  19. ls: cannot access /oradata/cdbbak/o1_mf_users_c3wpvsnj_.dbf: No such file or directory

  20. SQL> host ls -al /oradata/cdb/users01.dbf
  21. -rw-r----- 1 oracle oinstall 5251072 Nov 8 04:16 /oradata/cdb/users01.dbf

不能在CDG容器库环境中移动PDB,下面是实验结果

点击(此处)折叠或打开

  1. SQL> select file#,name from v$datafile;

  2.      FILE# NAME
  3. ---------- ---------------------------------------------
  4.      1 /oradata/cdbbak/system01.dbf
  5.      3 /oradata/cdbbak/sysaux01.dbf
  6.      4 /oradata/cdbbak/undotbs01.dbf
  7.      5 /oradata/cdb/pdbseed/system01.dbf
  8.      6 /oradata/cdb/users01.dbf
  9.      7 /oradata/cdb/pdbseed/sysaux01.dbf
  10.      8 /oradata/cdb/pdb1/system01.dbf
  11.      9 /oradata/cdb/pdb1/sysaux01.dbf
  12.     10 /oradata/cdb/pdb1/pdb1_users01.dbf
  13.     11 /oradata/cdb/pdbseed/users01.dbf
  14.     12 /oradata/cdb/pdb2/system01.dbf

  15.      FILE# NAME
  16. ---------- ---------------------------------------------
  17.     13 /oradata/cdb/pdb2/sysaux01.dbf
  18.     14 /oradata/cdb/pdb2/users01.dbf

  19. 13 rows selected.

  20. SQL> alter database move datafile 14 to '/oradata/pdbbak/users01.dbf' reuse;
  21. alter database move datafile 14 to '/oradata/pdbbak/users01.dbf' reuse
  22. *
  23. ERROR at line 1:
  24. ORA-01516: nonexistent log file, data file, or temporary file "14"

移动pdb库数据文件

点击(此处)折叠或打开

  1. SQL> show pdbs

  2.     CON_ID CON_NAME             OPEN MODE RESTRICTED
  3. ---------- ------------------------------ ---------- ----------
  4.      2 PDB$SEED             READ ONLY NO
  5.      3 PDB1              READ WRITE NO
  6.      4 PDB2              READ WRITE NO
  7. SQL> alter session set container=pdb2;

  8. Session altered.

  9. SQL> select file_id,file_name from dba_data_files;

  10.    FILE_ID FILE_NAME
  11. ---------- ---------------------------------------------
  12.     12 /oradata/cdb/pdb2/system01.dbf
  13.     13 /oradata/cdb/pdb2/sysaux01.dbf
  14.         14 /oradata/cdb/pdb2/users01.dbf

  15. SQL> alter database move datafile 14 to '/oradata/pdbbak/users01.dbf' reuse;

  16. Database altered.

  17. SQL> select file_id,file_name from dba_data_files;

  18.    FILE_ID FILE_NAME
  19. ---------- ---------------------------------------------
  20.     12 /oradata/cdb/pdb2/system01.dbf
  21.     13 /oradata/cdb/pdb2/sysaux01.dbf
  22.     14 /oradata/pdbbak/users01.dbf

  23. SQL> alter session set container=cdb$root;

  24. Session altered.

  25. SQL> show pdbs

  26.     CON_ID CON_NAME             OPEN MODE RESTRICTED
  27. ---------- ------------------------------ ---------- ----------
  28.      2 PDB$SEED             READ ONLY NO
  29.      3 PDB1              READ WRITE NO
  30.      4 PDB2              READ WRITE NO

在线移动数文件功能,并不适合移动tempfile

点击(此处)折叠或打开

  1. SQL> show pdbs

  2.     CON_ID CON_NAME             OPEN MODE RESTRICTED
  3. ---------- ------------------------------ ---------- ----------
  4.      2 PDB$SEED             READ ONLY NO
  5.      3 PDB1              READ WRITE NO
  6.      4 PDB2              READ WRITE NO
  7. SQL> select file_id,file_name from dba_temp_files;

  8.    FILE_ID FILE_NAME
  9. ---------- ---------------------------------------------
  10.      1 /oradata/cdb/temp01.dbf

  11. SQL> alter database move datafile '/oradata/cdb/temp01.dbf' to '/oradata/cdbbak/temp01.dbf';
  12. alter database move datafile '/oradata/cdb/temp01.dbf' to '/oradata/cdbbak/temp01.dbf'
  13. *
  14. ERROR at line 1:
  15. ORA-01516: nonexistent log file, data file, or temporary file
  16. "/oradata/cdb/temp01.dbf"







阅读(316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~