zoukankan      html  css  js  c++  java
  • Oracle 12C 新特性之在线重命名、迁移活跃的数据文件

    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 会在其中记录具体的行为。

  • 相关阅读:
    ajax异步上传图片&SpringMVC后台代码
    Jdk与Tomcat配置与安装
    Jpa常用注解@Test
    关于ssh和ajax小小总结
    关于EL表达式的大小写问题。谁来帮我解答?
    关于spring管理hibernate事物
    关于session更新的问题
    ssh使用ajax异步通讯. json与对象转换的几个小问题
    通过http Post XML文件的接口 (System.Web.IHttpHandler)
    HTTP Post方法
  • 原文地址:https://www.cnblogs.com/andy6/p/6847167.html
Copyright © 2011-2022 走看看