oracle 12c R1 在线迁移数据文件、在线迁移表分区或者子分区例子

在线重定义数据文件:
在oracle 12c R1之前的版本中,如果在线移动数据文件需要将表空间或者数据文件离线,然后操作系统mv,recover后online数据文件或者表空间,在oracle 12c R1后可以直接在线重定义数据文件,这个过程用户可以进行查询、DML以及DDL的任务,另外数据文件也可以直接在存储设备间迁移,比如ASM到文件系统的相互迁移。

SQL> select name from v$datafile;

NAME
-----------------------------------------------------------------------------------------------------------------------------------------
/oracle12c/app/oracle12/oradata/oracle12c/system01.dbf
/oracle12c/app/oracle12/oradata/oracle12c/sysaux01.dbf
/oracle12c/app/oracle12/oradata/oracle12c/undotbs01.dbf
/oracle12c/app/oracle12/oradata/oracle12c/undotbs02.dbf
/oracle12c/app/oracle12/oradata/oracle12c/users01.dbf
在线移动数据文件

SQL> alter database move datafile '/oracle12c/app/oracle12/oradata/oracle12c/users01.dbf' to '/oracle12c/app/oracle12/oradata/oracle12c/users02.dbf';

Database altered.

SQL> !ls -l /oracle12c/app/oracle12/oradata/oracle12c/
total 2258588
-rw-r-----. 1 oracle12 oinstall   10141696 Dec 16 23:31 control01.ctl
-rw-r-----. 1 oracle12 oinstall   52429312 Dec 16 23:30 redo01.log
-rw-r-----. 1 oracle12 oinstall   52429312 Dec 16 22:00 redo02.log
-rw-r-----. 1 oracle12 oinstall   52429312 Dec 16 23:13 redo03.log
-rw-r-----. 1 oracle12 oinstall  880812032 Dec 16 23:28 sysaux01.dbf
-rw-r-----. 1 oracle12 oinstall 1006641152 Dec 16 23:30 system01.dbf
-rw-r-----. 1 oracle12 oinstall   62922752 Dec 16 23:23 temp01.dbf
-rw-r-----. 1 oracle12 oinstall   68165632 Dec 16 23:28 undotbs01.dbf
-rw-r-----. 1 oracle12 oinstall    1056768 Dec 16 23:18 undotbs02.dbf
-rw-r-----. 1 oracle12 oinstall  149430272 Dec 16 23:22 users02.dbf

在线移动数据文件并且保留之前的数据文件位置
SQL> alter database move datafile '/oracle12c/app/oracle12/oradata/oracle12c/users02.dbf' to '/oracle12c/app/oracle12/oradata/oracle12c/users01.dbf' keep;

Database altered.

SQL> !ls -l /oracle12c/app/oracle12/oradata/oracle12c/
total 3185324
-rw-r-----. 1 oracle12 oinstall   10141696 Dec 16 23:40 control01.ctl
-rw-r-----. 1 oracle12 oinstall   52429312 Dec 16 23:40 redo01.log
-rw-r-----. 1 oracle12 oinstall   52429312 Dec 16 23:40 redo02.log
-rw-r-----. 1 oracle12 oinstall   52429312 Dec 16 23:40 redo03.log
-rw-r-----. 1 oracle12 oinstall  880812032 Dec 16 23:40 sysaux01.dbf
-rw-r-----. 1 oracle12 oinstall 1006641152 Dec 16 23:40 system01.dbf
-rw-r-----. 1 oracle12 oinstall   62922752 Dec 16 23:23 temp01.dbf
-rw-r-----. 1 oracle12 oinstall   68165632 Dec 16 23:40 undotbs01.dbf
-rw-r-----. 1 oracle12 oinstall    1056768 Dec 16 23:40 undotbs02.dbf
-rw-r-----. 1 oracle12 oinstall  549199872 Dec 16 23:40 users01.dbf
-rw-r-----. 1 oracle12 oinstall  549199872 Dec 16 23:40 users02.dbf
在线迁移表分区或者子分区:

SQL> CREATE TABLE t_part
  (
    id   NUMBER,
    name VARCHAR2(100)
  )
  partition BY range
  (
    id
  )
  (
    partition p1 VALUES less than(1000) TABLESPACE users,
    partition pmax VALUES less than(maxvalue) TABLESPACE test
  )

SQL> show user;
USER is "SYS"
SQL>  alter table t_part move partition p1 tablespace test;

Table altered.
SQL> alter table t_part move partition p1 tablespace test online;
alter table t_part move partition p1 tablespace test online
            *
ERROR at line 1:
ORA-14809: ONLINE MOVE PARTITION not supported for this schem

这里需要注意在线迁移表分区或者子分区的特性只对非SYS用户使用,SYS用户不支持这个特性
SQL> conn xiaoyu/xiaoyu
Connected.
SQL>  alter table t_part move partition p1 tablespace test  update indexes online;

Table altered.
这里的在线迁移并不会影响该表的DML操作,为了满足在线迁移的特性,oracle需要引入锁机制,这个会导致下降并且产生大量的redo,影响程度取决于表分区或者子分区的大小,当然oracle推出的新特性可能也会存在一定的隐患,这个需要dba多去关注mos上的文章。

时间: 2024-10-28 13:42:42

oracle 12c R1 在线迁移数据文件、在线迁移表分区或者子分区例子的相关文章

9i迁移数据文件 过程

过程|数据 --9i迁移数据文件 过程 1.查看视图 select * from dba_data_files 确定要移动的数据文件 "位置" 和 "名称" 源位置和名称 : '/home/oracle/product/92/oradata/adp/users02.dbf' 目标位置和名称: '/home/oracle/oradata/adp/users02.dbf' 2.停掉数据库 shutdown  immediate; 3.拷贝源数据文件到制定位置 cd /h

oracle 12c R1执行计划新特性-table access by index rowid batched和INMOMEORY OPTION

oracle 12c R1执行计划在索引回表阶段oracle推出了batched特性,类似于oracle 11g中在nested loop中被驱动表回表时的向量IO,也是为了有效的解决表中数据无序性(索引的聚簇因子),下面看实际测试用例: 数据库版本:12.1.0.2版本 sys@CRMDB2> explain plan for SELECT offering_inst_id,        offering_id,        owner_party_role_type,        ow

dataguard备库的数据文件的迁移实战

在前几天也花了一点时间测试了一下关于备库数据文件的迁移,这部分的工作看起来还是比较常规的,当然方法也很多.但是在实际工作中就更不能掉以轻心,所有的操作都要有理有据.都要经过一些严格的测试,如果测试不当,很可能在后期就会出现一些看似奇怪的问题,造成一些不必要的麻烦和影响. 所以在开始之前,做了下面的准备工作. 1.在zabbix中设定了维护窗口,这样在维护操作中就不会报警. 2.检查目前的备库参数设置,是否开启了闪回区,目前的文件路径设置情况和归档情况 3.检查目标文件路径的情况,涉及权限,文件夹

迁移数据文件到ASM【转】

1.迁移数据文件到ASM 1)数据库一致性情况下迁移: 将数据库启动到mount状态,生成rman copy 语句,然后在rman中执行: SQL> startup mount SQL> select q'(copy datafile ')'||name||q'(' to '+oradata';)' from v$datafile; Q'(COPYDATAFILE')'||NAME||Q'('TO'+ORADATA';)' -----------------------------------

oracle物理结构(二)数据文件

数据文件(数据文件的详细信息记载在控制文件中) ·每个oracle数据库必须至少有一个数据文件,用于存放数据库数据 ·多个数据文件应分放在不同的disk上以提高存取速度 1.主要分类: system01.dbf:记录系统运行信息,包含所有数据库字典,PL/SQL程序代码及其他系统信息 undotbs01.dbf:存放回退信息,即DML操作后的旧数据信息 sysaux01.dbf:system文件的辅助文件,存放支持oracle系统活动的多种工具如logminer users01.dbf:新建用户

数据文件-学生顺序表的处理,看清楚是 顺序表,只求代码和相关注释,明日要上交,急~~~

问题描述 学生顺序表的处理,看清楚是 顺序表,只求代码和相关注释,明日要上交,急~~~ 在一个数据文件中存放若干学生数据记录,每条记录都有如下数据项:学号,姓名,性别,成绩. 编一个程序,采用 顺序存储结构 存储这批数据,并对该数据进行排序.要求:数组前部为男同学,后部为女同学,并且男女同学都按成绩递减排序,分别计算男生合格率.女生合格率.全班的成绩平均分,并把排序后的学生数据记录及计算结果存入另一个数据文件中. 解决方案 这个很多语言很多方法都可以实现 简单点的用html做前台 php从数据库

oracle数据库最近两小时数据文件及io统计信息

select e.tsname, substr(e.filename, 1, 52) filename, e.phyrds - nvl(b.phyrds, 0) reads, (e.phyrds - nvl(b.phyrds, 0)) / (SELECT EXTRACT(DAY FROM E.END_INTERVAL_TIME - B.END_INTERVAL_TIME) * 86400 + EXTRACT(HOUR FROM E.END_INTERVAL_TIME - B.END_INTERV

批量迁移Oracle数据文件,日志文件及控制文件

   有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当然备份恢复也是其中的方式之一.本文主要描述如何使用批量方式来迁移数据文件,日志文件.如需要也可以将整个数据库迁移到新的位置以及重命名数据库. 1.环境及需求 robin@SZDB:~> cat /etc/issue Welcome to SUSE Linux Enterprise Server

修改oracle的数据文件

oracle|数据 修改数据文件   重要提示: 调整的工作前一定要对数据进行备份,切记 1,基本概念 oracle系统内部给出一个叫作"表空间"的逻辑磁盘空间.早期的系统主要用于存放表的数据,所以叫作表空间.表空间是一个逻辑空间,每个空间至少与一个或者多个数据文件相对应.看下图 . ................................ 也就是说: 一个数据库的数据共同存储在数据文件里,数据文件建立在数据库的表空间里.   system /manager是管理员用的.  2