我需要在Oracle中为expdp和impdp使用bash脚本

时间:2019-01-22 14:34:37

标签: bash oracle sh impdp expdp

我需要创建一个bash文件,在执行该文件时,它应该导出和导入oracle数据库。

按如下所示执行时,脚本必须检查架构在数据库中是否可用,如果是,则使用包含架构名称和随机ID的新转储文件导出单个架构。使用架构名称和随机ID创建新的表空间,索引和架构,然后重新映射表空间,索引和架构。 如果没有架构,则通过错误“模式不存在”

bashfile.sh clone (schema names separated by commas)
bashfile.sh clone test1,test2,test3

按如下所示执行时,它应清除所有克隆的架构,表空间并立即删除转储文件。

bashfile.sh clean

我从下面的脚本开始尝试,但是我无法走得更远。如何使用架构名称和随机ID创建新的表空间,索引和架构,然后重新映射表空间,索引和架构。

#!/bin/sh  

if [ $1 == "clone" ] && [ $2 == "test3" ]
then
    ID=$RANDOM
    ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/db_1  
    export O_HOME  
    export PATH=$ORACLE_HOME/bin:$PATH  
    ORACLE_SID=GBDEVDB1; export ORACLE_SID

    expdp SYSTEM/XXXXXXXXX schemas=test6 DIRECTORY=DUMP DUMPFILE=test7-$ID.dmp LOGFILE=test7-$ID.log
fi 

if [ $1 == "clean" ]
then
    rm -rf /opt/oracle/Dump/test*
fi


if [ $1 == "clone" ] && [ $2 != "test3" ]
then
    echo "Please enter 'clone' for creating new db or enter 'clean' to delete db"
fi


if [ $1 != "clone" ] && [ $2 = "test3" ]
then
    echo "Please enter 'clone' for creating new db or enter 'clean' to delete db"
fi

exit

0 个答案:

没有答案