Oracle
在 Shell 腳本中執行 Oracle 導出實用程序
我在這件事上浪費了很多時間。關於我在這裡做錯了什麼的任何想法?
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 將顯示它將實際執行的命令。