我有一个 oracle 转储文件。我想知道转储文件使用的 oracle db 的版本。例如,如果转储文件使用 oracle 11g 或 oracle 12c
我正在使用数据泵对 4 个 .dmp 文件执行导入并继续接收如下错误集:
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
Run Code Online (Sandbox Code Playgroud)
我是 oracle 的新手,找不到有用的解决方案。
尽管我使用的是 oracle 12c,但我正在执行此处的导入。
我在 windows 命令中运行的命令如下所示:
impdp user/pass@db_name directory=DUMP_DIR dimpfile="file_name.dmp" schemas=schema_name content=all parallel=4
Run Code Online (Sandbox Code Playgroud)
DUMP_DIR 在 oracle 中创建并授予适当的权限。
我也运行了这个命令
... logfile=file_name.log
Run Code Online (Sandbox Code Playgroud)
添加在最后,但我不确定日志文件是否已创建或保存在何处。
我发现了这一点- 它是关于完全相同的一组错误,但在导出和 linux 上。在答案的末尾有一句话“如果我们在 Windows 机器上,那么我们需要确保侦听器和数据库都已使用完全相同的用户名启动。” 这在导入的情况下有用吗?如果是 - 这究竟是什么意思?
最近,我们通过发出以下命令对我们的生产数据库进行了实时/在线备份:
expdp system/******@SID FULL=y DIRECTORY=data_pump_dir DUMPFILE=full_prod.dmp LOGFILE=full_prod_export.log JOB_NAME=prod_backup
Run Code Online (Sandbox Code Playgroud)
没有错误也没有警告.
然后,我们通过发出以下内容获取此转储并从中创建了许多开发人员数据库:
impdp system/******@SID SCHEMAS=MY_SCHEMA DIRECTORY=data_pump_dir DUMPFILE=full_prod.dmp LOGFILE=full_prod_import.log
Run Code Online (Sandbox Code Playgroud)
同样,没有错误也没有警告.
一旦设置了开发人员环境,开发人员就会启动他们的应用程序并尝试插入一些测试数据.前几次尝试因主键违规而失败.经过一些挖掘,结果证明缓存的序列(NOCACHE序列很好)通常落后于一个或两个值.
一个例子是我们的联系表的序列:
CREATE SEQUENCE REQ_CONTACT_SEQ
START WITH 213041
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
CACHE 20
NOORDER;
Run Code Online (Sandbox Code Playgroud)
Oracle 为此序列显示最后一个缓存值 213041.现在,当我运行以下查询时:
SELECT MAX(id) FROM REQ_CONTACT;
Run Code Online (Sandbox Code Playgroud)
Oracle返回213042.很明显,这个值比序列高1.
所以......我的问题是,我们是否只得到了这个结果,因为我们在生产过程中采用了数据导出 - 即数据库是否存在开放和活动的连接?或者数据泵是否有缓存序列的问题?我们使用的是Oracle 10.2.0.4.
谢谢,穆尔.
当我在Oracle 12c SE2中运行此命令时:
impdp system/Oracle_1@pdborcl directory=DATA_PUMP_DIR dumpfile=mydb.dmp nologfile=Y
Run Code Online (Sandbox Code Playgroud)
我得到这个:
ORA-39001:无效的参数值
ORA-39000:错误的转储文件规范
ORA-39088:目录名称DATA_PUMP_DIR无效
我们过去一直将其导入11g。
我该如何解决这些错误?
我有一个想要运行的数据泵导出脚本。数据库是 Oracle 11g。为了尝试一下,我一直在 SQLDeveloper 中执行它。该脚本如下所示:
DECLARE
JOBHANDLE NUMBER;
STATUS VARCHAR2(20);
LOGFILE UTL_FILE.FILE_TYPE;
LINE VARCHAR2(200);
ROW NUMBER := 1;
TYPE OUTPUT_TYPE IS TABLE OF VARCHAR2(128) INDEX BY PLS_INTEGER;
OUTPUT OUTPUT_TYPE;
BEGIN
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY "TESTDIR11" AS ''/home/achim/temp/0003759/T0987654321/'' ';
JOBHANDLE := DBMS_DATAPUMP.OPEN(
operation => 'EXPORT',
job_mode => 'TABLE',
job_name => 'TST TMF.ACHIMSTEST11');
DBMS_DATAPUMP.ADD_FILE(
HANDLE => JOBHANDLE,
filename => 'Q01DED3D.dmp',
directory => 'TESTDIR11',
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE
,reusefile => 1
);
DBMS_DATAPUMP.ADD_FILE(
HANDLE => JOBHANDLE,
filename => 'Q01DED3D.log',
directory => 'TESTDIR11', …Run Code Online (Sandbox Code Playgroud) 我想导入一个Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
使用命令:
impdp SOLVIA/SOLVIA900@IMMBO DUMPFILE=week_exp_immbo.dmp LOGFILE=week_exp_immbo.log REUSE_DATAFILES=YES exclude=tablespace:"IN ('IMMBO')"
Run Code Online (Sandbox Code Playgroud)
但我收到了这个错误:
Connected to: Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39145: directory object parameter must be specified and non-null
Run Code Online (Sandbox Code Playgroud)
我必须首先创建日志文件吗?
我正在使用Oracle 11g 11.2.0.1.0,我正在尝试使用数据泵来导出数据库中的所有模式.我知道您可以使用SCHEMAS参数指定多个模式,但我需要能够导出所有模式而无需显式命名它们,因为在任何给定时间我都不知道具有哪些模式(它是一个开发数据库和开发人员可以随时添加模式.有没有办法用数据泵做到这一点?还是有其他工具可以做到这一点?
谢谢!
我已经获得了一个 Oracle 数据库转储,我正在尝试使用以下方法导入它:
impdp myuser/myuser DUMPFILE=/u01/app/oracle/oradata/dumpfile.dmp FULL=y LOGFILE=/u01/app/oracle/oradata/dumplog.log
Run Code Online (Sandbox Code Playgroud)
输出是
Import: Release 12.1.0.1.0 - Production on Fri May 1 09:46:59 2015
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
UDI-00942: operation generated ORACLE error 942
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
无论如何我可以找出问题所在或获取更多信息吗?用户 myuser 拥有所有权限。