导出多个用户会导致 CPU 和 I/O 使用率过高。我可以使用资源管理器减轻 CPU 使用率的影响并将导出会话设置为低优先级组,但如何限制磁盘 I/O?我没有并行运行该操作,并且已经阅读了 Oracle 的Datapump Performance文档。还有什么我可以做的吗?
有没有办法在数据泵导出参数文件中添加注释?
我获得了一个 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!
导出多个用户会导致 CPU 和 I/O 使用率过高。我可以使用资源管理器减轻 CPU 使用率的影响并将导出会话设置为低优先级组,但是如何限制磁盘 I/O?我没有并行运行该操作,并且已经阅读了 Oracle 的 Datapump Performance 文档。还有什么我可以做的吗?
这是在 Windows 2008 R2 x64 上。
我想将数据库中的所有现有对象,而不仅仅是表,替换到我当前的数据库中。
我使用参数full=yes作为系统用户运行 expdp ,我datapump_imp_full_database在以 sysdba 登录时授予了系统用户,从我从中导入的实例。我使用参数在目标数据库上运行了impdp table_exists_action=replace,但是(可以理解)只替换了现有表,而没有替换过程、函数、视图。
是否有table_exists_action所有对象的等价物?如果没有,我怎样才能做到这一点?
这两个数据库都是 Windows 10 上的 Oracle 12c。
我的工作失败,因为转储文件已经存在。现在它停留在 DEFINING 状态。
我该如何阻止/杀死它?
declare
h1 number;
BEGIN
h1 := DBMS_DATAPUMP.ATTACH('EXPORT_TABLE_2017_1205_1402',user);
--DBMS_DATAPUMP.STOP_JOB (h1,1,0);
DBMS_DATAPUMP.stop_job (h1, 1);
DBMS_DATAPUMP.detach (h1);
END;
/
2 3 4 5 6 7 8 9 declare
*
ERROR at line 1:
ORA-31626: job does not exist
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 1137
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3873
ORA-06512: at line 4
Run Code Online (Sandbox Code Playgroud)
使用 expdp 获取分段错误:
expdp stgdata@ORADB1S attach=EXPORT_TABLE_2017_1205_1402
Export: Release 11.2.0.3.0 - Production on Tue Dec 5 14:56:11 2017
Copyright (c) 1982, 2011, Oracle …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个过程(在包内),该过程调用DBMS_DATAPUMP将现有模式复制到不同的模式中。该代码在从匿名块执行时有效,但从过程中我收到以下错误。
[Error] Execution (1: 1): ORA-31626: job does not exist
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 1137
ORA-06512: at "SYS.DBMS_DATAPUMP", line 5285
ORA-06512: at "UTILITY.MANAGE_SCHEMA", line 71
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)
此错误是从DBMS_DATAPUMP.OPEN调用中生成的。由于它在匿名块中工作,我假设这实际上是一个权限问题(即需要通过角色授予的一个或多个权限)。但是,我找不到有关使用数据泵所需的权限的任何文档。
这个问题归结为:需要明确授予用户/模式哪些权限才能使该模式中的包能够调用DBMS_DATAPUMP?
包的主人既有IMP_FULL_DATABASE和EXP_FULL_DATABASE角色,以及该DBA角色。
程序代码如下。
PROCEDURE copy_schema (p_source_schema VARCHAR2,
p_target_schema VARCHAR2,
p_asynchronous BOOLEAN := FALSE,
p_link_name VARCHAR2 := 'prddb') IS
dph NUMBER;
v_source_schema VARCHAR2 (30)
:= UPPER (DBMS_ASSERT.simple_sql_name (p_source_schema));
v_target_schema VARCHAR2 (30)
:= UPPER (DBMS_ASSERT.simple_sql_name …Run Code Online (Sandbox Code Playgroud) 概括:
我正在使用 expdp / impdp 从测试/演示数据库 (Oracle 11.2) 导出数据库,并将其导入到我自己机器上的 Oracle Express (11g) 实例中。
导入失败,因为它尝试在源服务器的位置创建导入的数据库文件。从字面上看,我的源 temo / test 数据库位于带有 E:\ 驱动器的机器上。但是我的电脑只有一个 C:\ 驱动器。我收到错误,因为它在 E:\ 驱动器上找不到东西。
这个错误感觉就像一条红鲱鱼。要么我误用了我的工具,要么我收到了一条稍微虚假的错误消息。
问题:
非常感谢。
完整说明
我在演示服务器上运行这个命令:
expdp name/password@localhost:1521/demo full=y directory=DATA_PUMP_DIR dumpfile=demo.dmp logfile=exportDemo.log
Run Code Online (Sandbox Code Playgroud)
我已将该文件复制到我的笔记本中,复制到 Oracle 中的相应文件夹 (C:\oraclex\app\oracle\admin\XE\dpdump)。然后我运行这个命令:
impdp SYSTEM/password@localhost:1521/XE directory=DATA_PUMP_DIR dumpfile=demo.dmp logfile=impdpDemo.log full=y
Run Code Online (Sandbox Code Playgroud)
该命令运行了一段时间,但出现错误:
;;;
Import: Release 11.2.0.2.0 - Production on Sat Jun 11 10:32:21 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
;;;
Connected …Run Code Online (Sandbox Code Playgroud) 我在架构 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 表的索引)置于 …
我已经使用EXPDPprocess创建了一个转储文件。
我正在尝试使用上述转储文件创建一个外部表。
我正在使用以下语句来创建外部表:
CREATE TABLE HR.DATA_LOAD
(
"EMP_NO" NUMBER(10,0) NOT NULL ENABLE,
"EMP_NAME" VARCHAR2(20 BYTE),
"DEPT_ID" NUMBER(10,0),
"DEPT_NM" VARCHAR2(20 BYTE),
"DOJ" VARCHAR2(20 BYTE),
"LOCATION" VARCHAR2(20 BYTE),
"PHN_NUM" NUMBER(20,0),
"EMAIL" VARCHAR2(20 BYTE),
"COL1" VARCHAR2(20 BYTE),
"COL2" VARCHAR2(20 BYTE)
)
ORGANIZATIONAL EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY DATA_PUMP_DIR
LOCATION ('exp_dumpfile.dmp')
);
Run Code Online (Sandbox Code Playgroud)
执行上述语句后,表已创建,但是当我发出SELECT语句查看数据时,出现以下错误:
Run Code Online (Sandbox Code Playgroud)CREATE TABLE HR.DATA_LOAD ( "EMP_NO" NUMBER(10,0) NOT NULL ENABLE, "EMP_NAME" VARCHAR2(20 BYTE), "DEPT_ID" NUMBER(10,0), "DEPT_NM" VARCHAR2(20 BYTE), "DOJ" VARCHAR2(20 BYTE), "LOCATION" VARCHAR2(20 BYTE), "PHN_NUM" NUMBER(20,0), "EMAIL" …
我的数据库大小为 1TB,其完整导出大小为 300GB。
将数据库导入新环境后,数据库大小减少到 700GB。这可能是什么原因?