在远程服务器上从本地服务器执行 IMPDP 命令时出现问题

在远程服务器上从本地服务器执行 IMPDP 命令时出现问题

我有两个 Linux 服务器 A(本地)和 B(远程),它们之间设置了 SSH 密钥。我尝试在我的 shell 脚本(.sh 文件)中执行以下操作

  1. 在本地服务器A上执行EXPDP,生成.dmp文件。
  2. 通过 SSH 将该文件从本地服务器 A 传输到远程服务器 B
  3. 然后将该文件移动到远程服务器 B 上的另一个文件夹。
  4. 从本地服务器 A 在远程服务器 B 上执行 IMPDP,以将转储文件(在步骤 2 和 3 中已经存在)加载到远程服务器 B 的数据库中。

有效的方法:将 dmp 文件从本地服务器 A 的一个文件夹移动到远程服务器 B 上的另一个文件夹。

ssh user@remoteServerB /bin/bash <<EOF
mv /path1/file /path2/file
EOF

什么不起作用-- 从本地服务器 A 调用 impdp 在远程服务器 B 上运行

ssh user@remoteServerB /bin/bash <<EOF1
impdp userid=${DBUSERNAME}/${DBPASSWORD}@${ORACLE_SID} tables=${TBL_LIST} directory=dir_name dumpfile=dbdump_${PRCSSDT}.dmp logfile=data_pump_dir:dblog_${PRCSSDT}.log table_exists_action=replace
EOF1

我也尝试将 impdp 命令放入远程服务器 B 上的 .sh 文件中,并从本地服务器 A 运行如下操作,但没有成功。

ssh user@remoteServerB /path/load_dmp.sh

我得到的错误是 impdp: command not found

如果您找到任何解决方法,请告诉我,我尝试了很多方法但无法解决这个问题。

答案1

您没有提供第一个失败命令的错误消息,但我认为它是相同的。

表示command not found该命令不在您的标准中PATH。因此,请以交互方式登录并找出命令的位置,然后使用完整路径调用它。

您可能还需要其他环境变量。要么找出需要哪些环境变量,要么使用bash选项调用-login。该选项会导致bash读取登录时读取的文件,这应该会设置您期望的环境,包括PATH

无关注释:
而不是

ssh user@remoteServerB /bin/bash <<EOF
mv /path1/file /path2/file
EOF

您可以使用

ssh user@remoteServerB mv /path1/file /path2/file

相关内容