Oracle Data Pump含特殊字符Schema导出与Bash变量替换问题
问题:含特殊字符的Schema无法通过Bash函数执行expdp导出?
我编写了一个使用expdp执行Schema导出的Bash函数,多数场景下运行正常,但当Schema名称包含减号(-)这类特殊字符时,会触发Oracle错误ORA-39001与ORA-39170。根据文档,需采用'"abc-def"'格式转义特殊字符,但该方式无法配合Bash变量替换使用。我尝试多种转义方式均无效,且sqlplus可正常连接该Schema,但expdp无法识别。
我的Bash函数代码
# ------------------------------------------------------------------------------ # execute a datapump export # ------------------------------------------------------------------------------ function exportSchema { local schema oracleHost oraclePort dumpFile schema="$1" oracleHost="localhost" oraclePort=1521 dumpFile="$schema"-$(date '+%Y-%m-%d.%Hh.%Mm.%Ss') printf "\nexporting to a dump file...\n" printf " database host: %s\n" "$oracleHost" printf " database port: %s\n" "$oraclePort" printf " pluggable database: %s\n" "$ORACLE_PDB" printf " datapump user: %s\n" "$DATAPUMP_USER" printf " datapump password: %s\n" "$DATAPUMP_PASSWORD" printf " schema to be exported: %s\n" "$schema" printf " dump file name: %s.dmp\n" "$dumpFile" expdp "$DATAPUMP_USER"/"$DATAPUMP_PASSWORD"@"$oracleHost":"$oraclePort"/"$ORACLE_PDB" schemas="$schema" directory=DATAPUMP_WORKSPACE dumpfile="$dumpFile.dmp" logfile="$dumpFile.log" exitCode=$? if [ $exitCode -ne 0 ]; then printf "ERROR: An unexpected error has occurred while exporting the '%s' schema.\n" "$schema" else printf "OK: The '%s' schema has been successfully exported.\n" "$schema" fi }
尝试过的无效转义方式
schemas="$schema"schemas= '"$schema"'schemas= "\"$schema\"'schemas="abc-def"schemas="abc\-def"schemas='"abc-def"'schemas='"abc\-def"'schemas="'abc-def'"schemas="'abc\-def'"
补充信息
sqlplus abc-def/password@10.178.146.33:1521/ORCLPDB1可正常连接该Schema,但expdp无法识别。- 更新:通过
exportSchema "xxx_yyy"等方式调用函数时,仅不含特殊字符的调用成功,带特殊字符的调用均触发ORA错误。
内容的提问来源于stack exchange,提问作者zappee
相关产品推荐
相关产品推荐

