Oracle

在 Shell 腳本中執行 Oracle 導出實用程序

  • September 16, 2020

我在這件事上浪費了很多時間。關於我在這裡做錯了什麼的任何想法?

bash 中的腳本

#!/usr/bin/bash
.
.
.  

/export/home/app/oracle/product/10.2.0/bin/exp $uname/$passw \
   FILE="$WORKSPACE"/"$EXP_FILE" \
   LOG="$EXP_LOG" \
   TABLES=SYSTEM_PARAMETERS\
   CONSISTENT=Y \
   ROWS=Y \
   INDEXES=Y \
   CONSTRAINTS=Y \
   GRANTS=Y ;

錯誤資訊

/export/home/app/oracle/admin/ukediuat/exp >./exp_syspar.sh
Username: USER
Enter DPDADMIN Password:

LRM-00116: syntax error at 'TABLES' following '='

EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
EXP-00000: Export terminated unsuccessfully

問題

問題在於導出命令中的美元符號。通過將使用美元符號的變數替換為腳本執行的完整路徑。

無論如何將shell變數解析為導出命令?

嘗試將表參數更改為此。當您有多個表時,您只需要括號。

TABLES='SYSTEM_PARAMETERS' \

$ exp tables=system.plan_table file=plan_table.dmp statistics=none

Export: Release 11.2.0.2.0 - Production on Tue Feb 17 08:59:05 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Username: system
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in UTF8 character set and AL16UTF16 NCHAR character set
server uses WE8MSWIN1252 character set (possible charset conversion)

About to export specified tables via Conventional Path ...
. . exporting table                     PLAN_TABLE          4 rows exported
Export terminated successfully without warnings.

錯誤消息說

LRM-00116: syntax error at 'TABLES' following '='

EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
EXP-00000: Export terminated unsuccessfully

TABLES跟隨也是如此=。腳本的相關部分是

LOG="$EXP_LOG" \
TABLES=SYSTEM_PARAMETERS\

OP說

通過將使用美元符號的變數替換為腳本執行的完整路徑。

因此,如果他用日誌文件的路徑替換“$EXP_LOG”,腳本就可以工作

這意味著變數 EXP_LOG 為空。如果是這種情況,那麼當執行腳本並發生變數替換時,我們有

LOG= \
TABLES=SYSTEM_PARAMETERS\

這相當於

LOG= TABLES=SYSTEM_PARAMETERS

這會引髮使用者得到的錯誤。

你可以插入一個

set -x

導出命令之前的語句,那麼 shell 將顯示它將實際執行的命令。

引用自:https://dba.stackexchange.com/questions/92078