我是 Oracle 菜鸟,我的目的是将所有数据和元数据从一个架构传输到 Oracle 数据库中的另一个架构。我打算使用数据泵expdp
和impdp
命令。我对此有疑问:
expdp
和impdp
命令吗?这是首选方法吗?该语句是否从模式中获取所有对象(数据和元数据)并将它们移动到不同的模式中?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log
Run Code Online (Sandbox Code Playgroud)
那么目标模式是impdp
命令后源模式的精确副本吗?
我获得了一个 DMP 数据泵导出文件,可以导入到我的本地 Oracle 实例中。我试过运行这个命令行:
impdp full=Y 目录=DATA_PUMP_DIR dumpfile=MyDumpFile.dmp logfile=import.log
我收到错误:
ORA-31655: 没有为作业选择数据或元数据对象
ORA-39154: 来自外部模式的对象已从导入中删除
并且不会导入任何数据。
从我在谷歌上搜索到的,一个可能的原因是我需要指定remap_schama
. 但我不知道 dmp 文件中架构的名称是什么。有什么简单的方法可以查到吗?
编辑:我没有找到解决这个问题,但我没有找到一个解决办法......我就找到了谁做的DMP的家伙,并且拍了模式名出来了。remap_schema
根据他的定义指定,Hey Presto!
impdp 导入卡在:
处理对象类型 SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX
你怎么能调试这个?
我想将数据库中的所有现有对象,而不仅仅是表,替换到我当前的数据库中。
我使用参数full=yes
作为系统用户运行 expdp ,我datapump_imp_full_database
在以 sysdba 登录时授予了系统用户,从我从中导入的实例。我使用参数在目标数据库上运行了impdp table_exists_action=replace
,但是(可以理解)只替换了现有表,而没有替换过程、函数、视图。
是否有table_exists_action
所有对象的等价物?如果没有,我怎样才能做到这一点?
这两个数据库都是 Windows 10 上的 Oracle 12c。
我正在尝试使用 oracle 的 IMPDP 工具完整地复制 SCHEMA。我已经设置了一个指向自身的数据库链接,并且该链接工作正常。然后我运行这个:
impdp username/password@instancename schemas=TARGET_SCHEMA
network_link=LINK_BACK_TO_TARGET
directory=HOME_DIR logfile=IMPDP_COPY_BACKUP.log
remap_schema=TARGET_SCHEMA:SOURCE_SCHEMA
TRANSFORM=STORAGE:n:table;
Run Code Online (Sandbox Code Playgroud)
在我的两个测试系统中一切正常,但在 Oracle 11gR2 生产中,它开始移动表并产生以下结果:
Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39126: Worker unexpected fatal error in
KUPW$WORKER.UPDATE_TD_BASE_PO_INFO [UPDATE
"ADMIN"."SYS_IMPORT_SCHEMA_04" mtu SET
mtu.base_process_order = NVL((SELECT mts1.process_order
FROM "ADMIN"."SYS_IMPORT_SCHEMA_04" mts1 WHERE
mts1.process_order > 0 AND mts1.duplicate = 0
AND mts1.object_schema = mtu.base_object_schema
AND mts1.object_name = mtu.base_object_name AND
mts1.object_type = mtu.base_object_type AND
mts1.processing_state != :1 ),
(-1000 - (SELECT MIN(mts2.process_order) FROM
"ADMIN"."SYS_IMPORT_SCHEMA_04" mts2 WHERE
mts2.process_order > 0 AND mts2.duplicate = 0 …
Run Code Online (Sandbox Code Playgroud) Linux 的默认 Oracle 安装没有附带 expdp 和 impdp 命令行工具。我在 Oracle 的网站上找不到它们。我怎么能安装它们?
我目前有一个针对相当大的架构 (2TB) 运行的 impdp 作业,但遇到了错误。源数据库有一列比目标数据库大。这会导致 ORA-02374 和 ORA-12899 错误。这导致导入作业在这个表上爬行。
我正在尝试克服错误,我能想到的最佳解决方案是修复表定义,或告诉导入作业跳过当前表。我目前无法修复表定义,因为数据泵作业已锁定表。
有没有办法暂停作业,进行列修改,然后恢复导入?或者,有没有办法告诉工作跳过当前表,然后继续?这将允许在作业完成后返回,修复表定义,然后仅重新导入一个表。
ETA:这是导入中的最后几个表之一,我宁愿不杀死整个事情并重新开始。
我在架构 LARRY 中创建了一个表
create global temporary table TT1 (N number);
create index TT_IX1 on TT1 (N);
Run Code Online (Sandbox Code Playgroud)
然后导出它,并尝试在架构 LARRY2 中导入:
expdp LARRY/LARRY directory=DATA_PUMP_DIR dumpfile=01.dmp logfile=01.dmp.exp tables=TT1
impdp LARRY2/LARRY2 directory=DATA_PUMP_DIR dumpfile=01.dmp logfile=01.dmp.imp remap_schema=LARRY:LARRY2 transform=DISABLE_ARCHIVE_LOGGING:Y,oid:N
Run Code Online (Sandbox Code Playgroud)
但是我在 Oracle 12c 中遇到了一个错误:
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
ORA-39083: Object type INDEX:"LARRY2"."TT_IX1" failed to create with error:
ORA-14451: unsupported feature with temporary table
Failing sql is:
ALTER INDEX "LARRY2"."TT_IX1" LOGGING
Run Code Online (Sandbox Code Playgroud)
我也检查过
SELECT force_logging FROM v$database;
Run Code Online (Sandbox Code Playgroud)
它给NO
.
我试图在互联网上搜索这个问题,但没有找到答案。我很好奇为什么 Oracle 尝试将 INDEXES(以及 TEMPORARY 表的索引)置于 …
我想从一个模式 schema1 中获取数据并将其放入模式 2 这应该很容易做到,但我已经搜索了 oracle 文档,但找不到办法做到这一点。
我在创建 Oracle 10.2.0.4 实例和从其他环境导入转储时遇到问题。我在 AIX 下使用 Oracle。
我使用了 ksh 脚本,除了创建用户外,一切正常。
之后我创建了默认用户,用于连接到数据库和其他工作模块。尝试导入转储时出现问题。
export ORACLE_SID=HISTO;
sqlplus / as sysdba
CREATE USER ANC IDENTIFIED BY "xxxxxxx";
grant connect, create session, imp_full_database to ANC;
commit;
Run Code Online (Sandbox Code Playgroud)
尝试导入 de dump 时的错误如下。
用于加载转储的命令:nohup impdp ANC/xxxxxx DIRECTORY=MIG11G DUMPFILE=dump_histo.expdp LOGFILE=impdp_29102013.log schemas=HISTO &
nohup.out 文件的输出:
Import: Release 10.2.0.4.0 - 64bit Production on Lundi, 23 Décembre, 2013 18:51:22
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With …
Run Code Online (Sandbox Code Playgroud) impdp ×10
oracle ×9
expdp ×4
datapump ×3
oracle-10g ×2
oracle-12c ×2
export ×1
schema ×1
users ×1