问题描述
你好,问一下汤姆团队。
我们正在设计一个新的数据库,并且有很多带有标识列的表。每个表使用的序列是一个命名序列 (我们没有使用系统生成的序列)。这些表的默认值类似于 “SEQUENCE_NAME.NEXTVAL”,所有这些表都由这些标识列在整个数据库中连接。根据这些信息:
1.如果我只对没有序列的表进行EXPDP并将其导入到另一个数据库,会发生什么?序列会按顺序继续吗?
2.如果我们决定将这些表 (因为它们太大) 移动到历史表中会发生什么?会有问题吗?
提前感谢。
问候,
我们正在设计一个新的数据库,并且有很多带有标识列的表。每个表使用的序列是一个命名序列 (我们没有使用系统生成的序列)。这些表的默认值类似于 “SEQUENCE_NAME.NEXTVAL”,所有这些表都由这些标识列在整个数据库中连接。根据这些信息:
1.如果我只对没有序列的表进行EXPDP并将其导入到另一个数据库,会发生什么?序列会按顺序继续吗?
2.如果我们决定将这些表 (因为它们太大) 移动到历史表中会发生什么?会有问题吗?
提前感谢。
问候,
专家解答
1.您是否使用标识列或默认序列?
如果它是一个标识列,那么当您 (数据泵) 导入它时,数据库将为您创建一个新的标识序列。这将在出口中断的地方继续。
首先创建表:
然后expdp/impdp (重新映射到一个新表,因为它返回相同的模式):
然后查看新表:
但是,如果您使用默认序列,则不会继续:
然后运行导出:
现在删除序列 (因为我导入回相同的模式; 需要清理它) 和:
看起来不起作用。
让我们检查一下:
:(
因此,如果您使用的是正常序列,则需要将其包含在导出中或在新数据库上手动创建它。
2.是的。
什么问题?
'\ _(ツ)_/''
这取决于你到底是怎么做的!
如果它是一个标识列,那么当您 (数据泵) 导入它时,数据库将为您创建一个新的标识序列。这将在出口中断的地方继续。
首先创建表:
create table t ( c1 int generated always as identity ); begin insert into t values ( default ); insert into t values ( default ); insert into t values ( default ); insert into t values ( default ); end; / commit; select max ( c1 ) from t; MAX(C1) 4复制
然后expdp/impdp (重新映射到一个新表,因为它返回相同的模式):
bash-4.2$ expdp userid=chris/chris tables=t dumpfile=chris_t.dmp Export: Release 12.2.0.1.0 - Production on Fri Nov 9 07:21:23 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Starting "CHRIS"."SYS_EXPORT_TABLE_01": userid=chris/******** tables=t dumpfile=chris_t.dmp Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/IDENTITY_COLUMN . . exported "CHRIS"."T" 5.093 KB 4 rows Master table "CHRIS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for CHRIS.SYS_EXPORT_TABLE_01 is: /ade/b/2757588126/oracle/rdbms/log/chris_t.dmp Job "CHRIS"."SYS_EXPORT_TABLE_01" successfully completed at Fri Nov 9 07:21:51 2018 elapsed 0 00:00:26 bash-4.2$ bash-4.2$ bash-4.2$ impdp userid=chris/chris dumpfile=chris_t.dmp remap_tables=t:t_new LRM-00101: unknown parameter name 'remap_tables' bash-4.2$ impdp userid=chris/chris dumpfile=chris_t.dmp remap_table=t:t_new Import: Release 12.2.0.1.0 - Production on Fri Nov 9 07:22:28 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Master table "CHRIS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "CHRIS"."SYS_IMPORT_FULL_01": userid=chris/******** dumpfile=chris_t.dmp remap_table=t:t_new Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "CHRIS"."T_NEW" 5.093 KB 4 rows Processing object type TABLE_EXPORT/TABLE/IDENTITY_COLUMN Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Job "CHRIS"."SYS_IMPORT_FULL_01" successfully completed at Fri Nov 9 07:22:52 2018 elapsed 0 00:00:22复制
然后查看新表:
select max ( c1 ) from t_new; MAX(C1) 4 insert into t_new values ( default ); select max ( c1 ) from t_new; MAX(C1) 5 select table_name, column_name, data_default from user_tab_cols where table_name in ( 'T', 'T_NEW' ); TABLE_NAME COLUMN_NAME DATA_DEFAULT T C1 "CHRIS"."ISEQ$$_145657".nextval T_NEW C1 "CHRIS"."ISEQ$$_145746".nextval复制
但是,如果您使用默认序列,则不会继续:
drop table t cascade constraints purge; drop table t_new cascade constraints purge; create sequence s; create table t ( c1 int default s.nextval ); begin insert into t values ( default ); insert into t values ( default ); insert into t values ( default ); insert into t values ( default ); end; / commit; select max ( c1 ) from t; MAX(C1) 4复制
然后运行导出:
bash-4.2$ expdp userid=chris/chris tables=t dumpfile=chris_t.dmp Export: Release 12.2.0.1.0 - Production on Fri Nov 9 07:39:39 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Starting "CHRIS"."SYS_EXPORT_TABLE_01": userid=chris/******** tables=t dumpfile=chris_t.dmp Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Processing object type TABLE_EXPORT/TABLE/TABLE . . exported "CHRIS"."T" 5.085 KB 4 rows Master table "CHRIS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for CHRIS.SYS_EXPORT_TABLE_01 is: /ade/b/2757588126/oracle/rdbms/log/chris_t.dmp Job "CHRIS"."SYS_EXPORT_TABLE_01" successfully completed at Fri Nov 9 07:40:04 2018 elapsed 0 00:00:24复制
现在删除序列 (因为我导入回相同的模式; 需要清理它) 和:
bash-4.2$ impdp userid=chris/chris dumpfile=chris_t.dmp remap_table=t:t_new Import: Release 12.2.0.1.0 - Production on Fri Nov 9 07:40:25 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Master table "CHRIS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "CHRIS"."SYS_IMPORT_FULL_01": userid=chris/******** dumpfile=chris_t.dmp remap_table=t:t_new Processing object type TABLE_EXPORT/TABLE/TABLE ORA-39083: Object type TABLE:"CHRIS"."T_NEW" failed to create with error: ORA-02289: sequence does not exist Failing sql is: CREATE TABLE "CHRIS"."T_NEW" ("C1" NUMBER(*,0) DEFAULT "CHRIS"."S"."NEXTVAL") SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER Job "CHRIS"."SYS_IMPORT_FULL_01" completed with 1 error(s) at Fri Nov 9 07:40:30 2018 elapsed 0 00:00:04复制
看起来不起作用。
让我们检查一下:
select max ( c1 ) from t_new; ORA-00942: table or view does not exist复制
:(
因此,如果您使用的是正常序列,则需要将其包含在导出中或在新数据库上手动创建它。
2.是的。
什么问题?
'\ _(ツ)_/''
这取决于你到底是怎么做的!
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
649次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
624次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
527次阅读
2025-04-20 10:07:02
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
521次阅读
2025-04-08 09:12:48
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
479次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
475次阅读
2025-04-17 17:02:24
Oracle 19c RAC更换IP实战,运维必看!
szrsu
455次阅读
2025-04-08 23:57:08
一页概览:Oracle GoldenGate
甲骨文云技术
454次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
449次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
400次阅读
2025-04-17 09:30:30