使用“expdp”在 Oracle 中导出序列
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/33741889/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Export sequence in Oracle using "expdp"
提问by user3400060
I am using the following command to export my sequence to a dump file in Oracle:
我正在使用以下命令将我的序列导出到 Oracle 中的转储文件:
expdp user/pwd DIRECTORY=user_exp DUMPFILE=morder.dmp include=sequence:HR.EMPLOYEES
where EMPLOYEES is my sequence name. However, I get this error:
其中 EMPLOYEES 是我的序列名称。但是,我收到此错误:
ORA-39001 invalid argument value
ORA-39071 Value for INCLUDE is badly formed
ORA-00920 invalid relational operator
Can someone please guide about this? What am I doing wrong?
有人可以指导一下吗?我究竟做错了什么?
采纳答案by Alex Poole
The object name clause has to be enclosed in double-quotes, and has to have a relational operator:
对象名称子句必须用双引号括起来,并且必须有一个关系运算符:
The name_clause is optional. It allows fine-grained selection of specific objects within an object type. It is a SQL expression used as a filter on the object names of the type. It consists of a SQL operator and the values against which the object names of the specified type are to be compared. The name_clause applies only to object types whose instances have names (for example, it is applicable to TABLE, but not to GRANT). It must be separated from the object type with a colon and enclosed in double quotation marks, because single quotation marks are required to delimit the name strings.
name_clause 是可选的。它允许在对象类型中细粒度选择特定对象。它是一个 SQL 表达式,用作该类型的对象名称的过滤器。它由一个 SQL 运算符和要与指定类型的对象名称进行比较的值组成。name_clause 仅适用于实例具有名称的对象类型(例如,它适用于 TABLE,但不适用于 GRANT)。它必须用冒号与对象类型分开并用双引号括起来,因为需要用单引号来分隔名称字符串。
But it also can't include a schema name; it just has to be an object name. If you are connecting to expdp
as the HR user then that's the default anyway and you can do:
但它也不能包含模式名称;它只需要是一个对象名称。如果您以expdp
HR 用户身份连接,那么无论如何这是默认设置,您可以执行以下操作:
expdp hr/pwd DIRECTORY=user_exp DUMPFILE=morder.dmp include=sequence:"= 'EMPLOYEES'"
If you're connecting as a different, privileged, user you need to include the schemas
clause, or it won't be able to find the object:
如果您以不同的特权用户身份连接,则需要包含该schemas
子句,否则将无法找到该对象:
expdp system/pwd DIRECTORY=user_exp DUMPFILE=morder.dmp schemas=hr include=sequence:"= 'EMPLOYEES'"
Depending on your operating system you may need to escape various things:
根据您的操作系统,您可能需要逃避各种事情:
Depending on your operating system, the use of quotation marks when you specify a value for this parameter may also require that you use escape characters. Oracle recommends that you place this parameter in a parameter file, which can reduce the number of escape characters that might otherwise be needed on the command line. See "Use of Quotation Marks On the Data Pump Command Line".
根据您的操作系统,在为此参数指定值时使用引号可能还要求您使用转义字符。Oracle 建议您将此参数放在参数文件中,这样可以减少命令行中可能需要的转义字符数。请参阅“在数据泵命令行上使用引号”。
On Linux/bash the include clause ends up as:
在 Linux/bash 上,include 子句最终为:
... include=sequence:\"= \'EMPLOYEES\'\"
with both the double-quotes and single-quotes escaped. From a previous question you may be on Windows, where I only the double-quotes need to be escaped:
双引号和单引号都转义了。从上一个问题您可能在 Windows 上,我只需要转义双引号:
... include=sequence:\"= 'EMPLOYEES'\"
Finally, EMPLOYEES
looks like a table name; you probably really want EMPLOYEES_SEQ
:
最后,EMPLOYEES
看起来像一个表名;你可能真的想要EMPLOYEES_SEQ
:
... include=sequence:\"= 'EMPLOYEES_SEQ'\"
回答by Sergiu Velescu
Here is the copy/paste from my environment:
这是我的环境中的复制/粘贴:
[oracle@testsrv ~]$ expdp uuu/uuu schemas=uuu DIRECTORY=dir1 DUMPFILE=morder3.dmp include=sequence
Export: Release 12.1.0.2.0 - Production on Mon Nov 16 22:16:59 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Starting "UUU"."SYS_EXPORT_SCHEMA_01": uuu/******** schemas=uuu DIRECTORY=dir1 DUMPFILE=morder3.dmp include=sequence
Estimate in progress using BLOCKS method...
Total estimation using BLOCKS method: 0 KB
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Master table "UUU"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for UUU.SYS_EXPORT_SCHEMA_01 is:
/home/oracle/morder3.dmp
Job "UUU"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Nov 16 22:17:03 2015 elapsed 0 00:00:03
[oracle@testsrv ~]$
回答by Sergiu Velescu
In case you want to export sequence from specific SCHEMA use this:
如果您想从特定 SCHEMA 导出序列,请使用以下命令:
expdp user/pwd SCHEMAS=HR DIRECTORY=user_exp DUMPFILE=morder.dmp include=sequence:EMPLOYEES
expdp user/pwd SCHEMAS=HR DIRECTORY=user_exp DUMPFILE=morder.dmp include=sequence:EMPLOYEES
(add SCHEMAS and remove the owner od the sequence)
(添加 SCHEMAS 并删除序列的所有者)