oracle exchange partition 测试

Exchange partition提供了一种方式,让你在表与表或分区与分区之间迁移数据,注意不是将表转换成分区或非分区的形式,而仅只是迁移表中数

据(互相迁移),由于其号称是采用了更改数据字典的方式,因此效率最高( 几乎不涉及io操作)。Exchange partition适用于所有分区格式,你可以将数据从分区表迁移到非分区表,也可以从非分区表迁移至分区表。

这就给批量更新分区表的数据提供了一个很不错的思路,这里我便做一次普通表与分区表数据交换的实验。

注意:分区表不能直接与分区表交换所以

如果对换分区表,用普通表过渡

如果对换普通表,用分区表过渡

索引必须是LOCAL INDEX,不能是GLOBAL INDEX

1.创建测试表空间

create tablespace tbs1 datafile ‘/oracle_data/szdb/tbs1_01.dbf‘ size 10m autoextend on;

create tablespace tbs2 datafile  ‘/oracle_data/szdb/tbs2_01.dbf‘ size 10m autoextend on;

2.创建测试表

drop table t_temp purge;

drop table t_part_list purge;

create table t_temp as select 1 id, t.owner,t.OBJECT_NAME,t.OBJECT_ID,t.OBJECT_TYPE from dba_objects t;

create table t_part_list (id number,owner varchar2(20),object_name varchar2(40),object_id number,object_type varchar2(20))

partition by list (id)

(partition p1 values(1) tablespace tbs1,

partition p2 values(2) tablespace tbs2

);

3.查看表数据

SQL> select count(*) from t_part_list;

COUNT(*)

---------

0

SQL> select count(*) from t_temp;

COUNT(*)

----------

80905

4.交换数据

alter table t_part_list exchange partition p1 with table  t_temp;

alter table t_part_list exchange partition p1 with table  t_temp without validation;--不再验证数据有效性

5.查看表数据

SQL> select count(*) from t_part_list;

COUNT(*)

----------

80905

SQL> select count(*) from t_part_list partition(p1);

COUNT(*)

----------

80905

SQL> select count(*) from t_temp;

COUNT(*)

----------

0

6.注意

在将未分区表的数据迁移到分区表中时,可能出现ora-14099的错误,虽然可以用without validation去解决,但是此时进入分区表的数据可能不符合分区规则。

所以without validation一定要慎用。

   涉及交换的两表之间表结构必须一致,除非附加with validation子句;

   如果是从非分区表向分区表做交换,非分区表中的数据必须符合分区表中指定分区的规则,除非附加without validation子句;

   如果从分区表向分区表做交换,被交换的分区的数据必须符合分区规则,除非附加without validation子句;

      Global索引或涉及到数据改动了的global索引分区会被置为unusable,除非附加update indexes子句。

  提示:一旦附加了without validation子句,则表示不再验证数据有效性,因此指定该子句时务必慎重。

oracle exchange partition 测试

时间: 2024-12-07 12:51:58

oracle exchange partition 测试的相关文章

oracle exchange partition 測试

Exchange partition提供了一种方式,让你在表与表或分区与分区之间迁移数据.注意不是将表转换成分区或非分区的形式,而仅仅仅是迁移表中数 据(互相迁移),因为其号称是採用了更改数据字典的方式,因此效率最高( 差点儿不涉及io操作). Exchange partition适用于全部分区格式,你能够将数据从分区表迁移到非分区表.也能够从非分区表迁移至分区表. 这就给批量更新分区表的数据提供了一个非常不错的思路,这里我便做一次普通表与分区表数据交换的实验. 注意:分区表不能直接与分区表交换

Oracle Net Manager 测试监听服务

前几天因为工作需要,安装了Oracle 11g,但怎么都监听不了本机.打开 PL/SQL Devloper 也登陆不了.随删除之. 今天有时间,又把Oracle 安装上了,想着怎么才能监听.经过操作,现在成功,下面是 过程: 1. 安装完ORACLE 后,进入 配置与移植工具,选择 Net Manager 2. 配置监听程序和服务命名. 我使用的协议为 TCP/IP. 主机 :127.0.0.1 .端口 : 1521. 3. 打开 CMD,输入 sqlplus.exe sys/manager a

mysql分区交换exchange partition

在表和分区间交换数据 mysql5.6开始支持alter table..exchange partition语法,该语句允许分区或子分区中的数据与另一个非分区的表中的数据进行交换,如果非分区表中的数据为空,那么相当于将分区中的数据移动到非分区表中,若分区表中的数据为空,则相当于将外部表中的数据导入到分区中,即,哪边不为空,哪边就是被移出的,哪边为空,哪边就是装数据的.   要使用alter table…exchange partition语句,必须满足下面的条件: A:要交换的表需要和分区表有着

删除Oracle Online Redo 测试

删除Oracle Online Redo 测试 SQL> select * from v$log; ?   GROUP#   THREAD# SEQUENCE#     BYTES BLOCKSIZE   MEMBERS ARC STATUS ---------- ---------- ---------- ---------- ---------- ---------- --- --------         1          1          4   52428800      

Linux平台 Oracle 11g DG测试环境快速搭建参考

环境现状: 两台虚拟主机A和B: 1. A机器已安装ASM存储的Oracle 11g 实例 参考:http://www.cnblogs.com/jyzhao/p/4332410.html 2. B机器已安装系统,配置以及目录结构均和A机器保持一致 /u01 + 3块ASM盘 DG部署规划:   primary standby 主机 JY-DB JY-DBS db_name jyzhao jyzhao db_unique_name jyzhao jyzhao_s instance_name jyz

如何使用swingbench进行oracle数据库压力测试

swingbench是一款网络上开源的oracle压力测试工具,支持oracle 11g版本,还能对rac进行测试.从官方页面http://dominicgiles.com/downloads.html上可以下载最新的软件版本. swingbench可以运行在windows和linux平台,本次测试采用linux平台,具体测试过程如下: 1.首先使用VMVARE10搭建一个redhat6.5的虚拟机. 2.在虚拟redhat6.5上安装ORACLE11G的数据库. 3.使用oewizard导入测

ORACLE 数据库简单测试

操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库  非同一个用户的情况,用户是否可以登录 数据库 二.环境介绍 操作系统:Windows 7 ORACLE:oracle database 10.2.0.4 三.测试步骤 1.1          创建用户(权限 管理员) 1.1.1.1    检查当前所有用户 1.1.1.2    新建测试用户 1.1.1.3    确认当前用户 1.1.1.4    给测试用

ESQL查询之简单的Oracle数据库查询测试

操作Oracle数据库跟前边例子中操作其他数据库一样,同样是非常轻松的,略有不同的是SQL语法上的微小区别 查询 <ESql module=test id=datas><![CDATA[ Select STTP,STNM,STCD,PHCD from ST_STBPRP_B where rownum<=30 ]]></ESql> 定制显示字段名 <tr> <for end=0 [email protected]{datas:getWidth}&g

Oracle 直方图实例测试

--创建表 SQL> create table tab (a number, b number); Table created. --插入数据 SQL> begin 2 for i in 1..10000 loop 3 insert into tab values (i, i); 4 end loop; 5 commit; 6 end; 7 / PL/SQL procedure successfully completed. --更新部分数据 SQL> update tab set b=