[20190503]12C R2 分区交换.txt --//12C之前分区交换,如果表存在UNUSED COLUMN时,如果通过ctas建立的表进行交换会报错. --//12c R2 建立表时指定FOR EXCHANGE WITH TABLE参数可以将隐含列一起建立过来. --//通过例子说明: 1. 环境: SCOTT@test01p> @ ver1 PORT_STRING VERSION BANNER CON_ID ------------------------------ -------------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 --//直接参考链接测试:https://oracle-base.com/articles/12c/create-table-for-exchange-with-table-12cr2 CREATE TABLE t1 ( id NUMBER, code VARCHAR2(10), description VARCHAR2(50), created_date DATE, data_1 VARCHAR2(1000), data_2 VARCHAR2(1000), CONSTRAINT t1_pk PRIMARY KEY (id) ) PARTITION BY RANGE (created_date) ( PARTITION t1_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY')), PARTITION t1_2018 VALUES LESS THAN (TO_DATE('01-JAN-2019','DD-MON-YYYY')) ); ALTER TABLE t1 SET UNUSED (data_1); ALTER TABLE t1 MODIFY data_2 INVISIBLE; SCOTT@test01p> @ desc t1 Name Null? Type ------------- -------- ------------- ID NOT NULL NUMBER CODE VARCHAR2(10) DESCRIPTION VARCHAR2(50) CREATED_DATE DATE --//DROP TABLE t1_temp PURGE; SCOTT@test01p> CREATE TABLE t1_temp AS SELECT * FROM t1 WHERE 1=2; Table created. SCOTT@test01p> ALTER TABLE t1_temp ADD CONSTRAINT t1_temp_pk PRIMARY KEY (id); Table altered. INSERT INTO t1_temp VALUES ( 1, 'ONE', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); INSERT INTO t1_temp VALUES ( 2, 'TWO', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); INSERT INTO t1_temp VALUES ( 3, 'THREE', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); INSERT INTO t1_temp VALUES ( 4, 'FOUR', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); COMMIT; SCOTT@test01p> ALTER TABLE t1 EXCHANGE PARTITION t1_2017 WITH TABLE t1_temp WITHOUT VALIDATION UPDATE GLOBAL INDEXES; ALTER TABLE t1 EXCHANGE PARTITION t1_2017 WITH TABLE t1_temp WITHOUT VALIDATION UPDATE GLOBAL INDEXES * ERROR at line 1: ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION --//主要问题在于2个表结构实际上内部不一致. SCOTT@test01p> SELECT column_id, column_name, hidden_column FROM user_tab_cols WHERE table_name = 'T1' ORDER BY internal_column_id; COLUMN_ID COLUMN_NAME HID ---------- ------------------------------ --- 1 ID NO 2 CODE NO 3 DESCRIPTION NO 4 CREATED_DATE NO SYS_C00005_19050321:47:40$ YES DATA_2 YES 6 rows selected. --//实际表T1存在2个隐含列. --//重复: DROP TABLE t1_temp PURGE; CREATE TABLE t1_temp TABLESPACE users FOR EXCHANGE WITH TABLE t1; ALTER TABLE t1_temp ADD CONSTRAINT t1_temp_pk PRIMARY KEY (id); INSERT INTO t1_temp VALUES ( 1, 'ONE', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); INSERT INTO t1_temp VALUES ( 2, 'TWO', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); INSERT INTO t1_temp VALUES ( 3, 'THREE', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); INSERT INTO t1_temp VALUES ( 4, 'FOUR', 'Description for ONE', TO_DATE('02-SEP-2017','DD-MON-YYYY')); COMMIT; SCOTT@test01p> SELECT column_id, column_name, hidden_column FROM user_tab_cols WHERE table_name = 'T1_TEMP' ORDER BY internal_column_id; COLUMN_ID COLUMN_NAME HID ---------- ------------------------------ --- 1 ID NO 2 CODE NO 3 DESCRIPTION NO 4 CREATED_DATE NO SYS_C00005_19050321:47:40$ YES DATA_2 YES 6 rows selected. --//你可以发现现在T1_temp表结构与T1一致. SCOTT@test01p> ALTER TABLE t1 EXCHANGE PARTITION t1_2017 WITH TABLE t1_temp WITHOUT VALIDATION UPDATE GLOBAL INDEXES; Table altered. --//OK现在成功了. SCOTT@test01p> select count(*) from t1 partition(t1_2017) ; COUNT(*) ---------- 4 SCOTT@test01p> select count(*) from t1_temp ; COUNT(*) ---------- 0
[20190503]12C R2 分区交换.txt
来源:这里教程网
时间:2026-03-03 13:28:05
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 13-oracle_数据库存储过程和包的开发
13-oracle_数据库存储过程和包的开发
26-03-03 - 12-oracle_分区
12-oracle_分区
26-03-03 - Debian Zabbix:企业级监控(手把手教你从零搭建开源监控系统)
Debian Zabbix:企业级监控(手把手教你从零搭建开源监控系统)
26-03-03 - 万字详解Oracle架构、原理、进程,学会世间再无复杂架构
万字详解Oracle架构、原理、进程,学会世间再无复杂架构
26-03-03 - oracle数据库exp
oracle数据库exp
26-03-03 - Debian Partclone 教程(手把手教你使用 Partclone 在 Debian 系统中进行分区克隆与备份)
- Oracle数据库常用十一大操作指令
Oracle数据库常用十一大操作指令
26-03-03 - Debian OpenStack命令行操作(新手入门指南:从安装到基础管理)
- 数据安全不再是可选项
数据安全不再是可选项
26-03-03 - 数据库基础原理1:Oracle数据库体系结构
数据库基础原理1:Oracle数据库体系结构
26-03-03
