如何在没有tnsnames.ora文件的情况下使用Data Pump实用程序

Shr*_*van 7 oracle command-line tnsnames datapump

我希望能够运行expdpimpdp直接指定连接参数而不是驻留的TNS名称tnsnames.ora.这可能吗?

Dav*_*ann 9

您可以使用连接字符串而不是TNSName在命令行上指定所有内容.从您用来连接的TNS条目中删除空格,这是一个与SQLPLUS一起使用的示例...

以下是如何在Windows上连接到本地OracleXE安装:

sqlplus scott/tiger@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=xe)))
Run Code Online (Sandbox Code Playgroud)

在*Nix上,您可能需要引用条目,以便不会错误地解释parens:

sqlplus 'scott/tiger@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=xe)))'
Run Code Online (Sandbox Code Playgroud)

  • 尽管这对于`sqlplus`来说是有效的,但对于`expdp`似乎不起作用-我在使用Oracle 12.1.0.2.0的'('之后,在'ADDRESS_LIST'上收到了LRM-00116:语法错误。 (2认同)

DCo*_*kie 5

您可以尝试EZCONNECT 字符串

expdp userid=user/pw@//host:port/service-name
Run Code Online (Sandbox Code Playgroud)

您将需要在客户端包含 EZCONNECT 的 sqlnet.ora 参数,例如:

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
Run Code Online (Sandbox Code Playgroud)