shell脚本操作oracle删除表空间、创建表空间、删除⽤户
oracle下表空间的导出,⽤户的删除,表空间删除,⽤户新建,表空间新建,数据导⼊的shell使⽤⾮oracle⽤户执⾏该脚本参数说名
$1:base表空间的⽤户名$2:同步表空间的⽤户名使⽤场景
测试⽤,base表空间⽤于升级建⽴⼀些固化数据。同步表空间⽤于测试⽤,每次去和base表空间拉平数据复制代码 代码如下:
#!/bin/sh
oraclehome=$ORACLE_HOMEecho $oraclehomelocaldir=\"/oracle/data\"echo $localdir
#删除已经存在的临时dmp⽂件rm -rf $localdir/$2temp.dmprmresult=$?
echo \"rm $2temp.dmp result:$rmresult\"#将⽤户$1的表空间导出
su - oracle -c \"exp dba/dba file=$localdir/$2temp.dmp owner=$1\"expresult=$?
if [ \"$expresult\" != \"0\" ];then
echo \"exp $1 tablespace failure\"fi
#先删除⽤户$2及其表空间,然后再新建该⽤户及表空间
su - oracle -c \"${ORACLE_HOME}/bin/sqlplus /nolog\" <drop tablespace $2 including contents and datafiles;create tablespace $2 datafile '/oracle/product/10.2.0/oradata/$2.dbf' size 5M autoextend on;
create user $2 identified by \"$2\" default tablespace $2 temporary tablespace TEMP profile DEFAULT;grant connect to $2;grant resource to $2;
grant create any table to $2;grant create any trigger to $2;grant create any type to $2;grant create any view to $2;
grant unlimited tablespace to $2;exitEOF
crdrresult=$?
if [ \"$crdrresult\" != \"0\" ];then
echo \"drop user and tablespace failure\" echo \"create user and tablespace failure\"else
#刚建完的⽤户不能马上使⽤,等候10秒 sleep 10s
#更换dmp⽂件中的表空间名
sed -i 's/TABLESPACE \"$1\"/TABLESPACE \"$2\"/g' $localdir/$2temp.dmp#使⽤imp命令导出表空间数据到⽤户$2的表空间
su - oracle -c \"imp dba/dba file=$localdir/$2temp.dmp fromuser=$1 touser=$2\" impresult=$?
if [ \"$impresult\" != \"0\" ];then echo \"imp failure\" else
echo \"imp success\" fi
fi