您的位置:首页 > 数据库 > Oracle

把ORACLE的存储过程导出来到txt

2009-10-09 16:07 260 查看
把ORACLE的存储过程导出来到txt

oracle@server /arch/down_fp $ ls -al
total 56
drwxrwx--- 7 oracle dba 4096 Apr 8 08:25 .
drwxr-xr-x 5 oracle dba 4096 Apr 8 08:23 ..
drwxrwx--- 2 oracle dba 4096 Apr 8 08:19 bak
drwxrwx--- 2 oracle dba 4096 Apr 13 00:10 dat
-rwxrwx--- 1 oracle dba 1727 Apr 8 08:18 down_fp.sh
-rwxrwx--- 1 oracle dba 968 Apr 8 08:02 down_fp.sql
-rwxrwx--- 1 oracle dba 96 Apr 8 08:16 kk_ftp.sh
drwxrwx--- 2 oracle dba 4096 Apr 13 00:10 sql
drwxrwx--- 2 oracle dba 4096 Apr 13 00:10 tmp
-rwxrwx--- 1 oracle dba 281 Apr 8 08:25 user.txt
oracle@server /arch/down_fp $ ls -al bak
total 8228
drwxrwx--- 2 oracle dba 4096 Apr 8 08:19 .
drwxrwx--- 7 oracle dba 4096 Apr 8 08:25 ..
-rw-r--r-- 1 oracle dba 1214585 Apr 11 00:10 fp_0.tgz
-rw-r--r-- 1 oracle dba 1214142 Apr 12 00:11 fp_1.tgz
-rwxrwx--- 1 oracle dba 1183109 Apr 6 23:30 fp_2.tgz
-rwxrwx--- 1 oracle dba 1148231 Mar 31 23:30 fp_3.tgz
-rwxrwx--- 1 oracle dba 1188417 Apr 8 08:20 fp_4.tgz
-rw-r--r-- 1 oracle dba 1211826 Apr 9 00:11 fp_5.tgz
-rw-r--r-- 1 oracle dba 1212880 Apr 10 00:11 fp_6.tgz

##########################################
#down_fp.sh的内容
#读取user.txt中指定要备份的用户,依次备份代码为文本,并打包FTP到远程主机
##########################################
#! /bin/sh
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/oracle/bin:/oracle/app/oracle/product/8.1.6/bin
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
TNS_ADMIN=/oracle/app/oracle/product/8.1.6/network/admin
ORACLE_SID=数据库的SID
LD_LIBRARY_PATH=:/oracle/app/oracle/product/8.1.6/lib
USER=oracle
LOGNAME=oracle
LANG=en_US
ORACLE_BASE=/oracle/app/oracle
ORACLE_HOME=/oracle/app/oracle/product/8.1.6
ORACLE_BIN=/oracle/app/oracle/product/8.1.6/bin
SHELL=/bin/sh
TERM=vt100
export PATH NLS_LANG TNS_ADMIN ORACLE_SID LD_LIBRARY_PATH USER LOGNAME LANG ORACLE_BASE ORACLE_HOME SHELL TERM
cd /arch/down_fp ##程序所在目录
rm -rf sql/*

for cStr in `cat user.txt`
do
#echo 'Down '$cStr' ...'
echo $cStr >; tmp/a.txt
sed -e 's/,/ /g' < tmp/a.txt >; tmp/b.txt
awk '{print $1;}' tmp/b.txt >; tmp/c.txt
read cDb < tmp/c.txt
awk '{print $2;}' tmp/b.txt >; tmp/c.txt
read cUser < tmp/c.txt
cUserLong=$cDb'_'$cUser
echo 'Down program of '$cUser@$cDb' ...'

##登录密码
cLoginStr='SYSTEM/MANAGER@'$cDb
##登录密码

sed -e 's/KIKI_CREATE/'$cUserLong'/g' < down_fp.sql >; tmp/c.txt
sed -e 's/KIKI_USER/'$cUser'/g' < tmp/c.txt >; down_fp_tmp.sql

echo '#' >; down_fp_tmp.sh
echo 'sqlplus '$cLoginStr' << EOF' >;>; down_fp_tmp.sh
echo '@down_fp_tmp.sql' >;>; down_fp_tmp.sh
echo 'exit' >;>; down_fp_tmp.sh
echo 'EOF' >;>; down_fp_tmp.sh

./down_fp_tmp.sh >; /dev/null
done

>; down_fp_tmp.sh
rm -rf tmp/?.txt

echo 'Tar ...'
mv dat/*.tgz bak
cDate=`date +'%w'`
cTarFile='dat/fp_'$cDate'.tgz'
tar cvfz $cTarFile sql/*.*

echo 'OK! Program backuped!'

echo 'Ftp to remote server...'
./kk_ftp.sh 10.10.10.10 /arch/down_fp/dat /bak/down_fp/dat_remote
echo 'Ftp OK!'

##########################################
#down_fp.sql
#取过程、包等代码
##########################################
set head off;
column text format a4000;

spool ./sql/KIKI_CREATE_procdure.sql;
select decode(substr(ltrim(text),1,9),'PROCEDURE','create or replace ','procedure','create or replace ','')||text text from all_source WHERE OWNER='KIKI_USER' and TYPE='PROCEDURE';
spool off;

spool ./sql/KIKI_CREATE_function.sql;
select decode(substr(ltrim(text),1,8),'FUNCTION','create or replace ','function','create or replace ','')||text text from all_source WHERE OWNER='KIKI_USER' and TYPE='FUNCTION';
spool off;

spool ./sql/KIKI_CREATE_package.sql;
select decode(substr(ltrim(text),1,7),'PACKAGE','create or replace ','package','create or replace ','')||text text from all_source WHERE OWNER='KIKI_USER' and TYPE='PACKAGE';
spool off;

spool ./sql/KIKI_CREATE_package_body.sql;
select decode(substr(ltrim(text),1,12),'PACKAGE BODY','create or replace ','package body','create or replace ','')||text text from all_source WHERE OWNER='KIKI_USER' and TYPE='PACKAGE BODY';
spool off;

##########################################
#kk_ftp.sh
#把备份文件FTP到远程主机
##########################################
ftp -i -n <<EOF
open $1
user USERNAME PASSWORD
bin
lcd $2
cd $3
prompt
mput *.tgz
quit
EOF

##########################################
#user.txt
#用逗号隔开要备份的主机名和用户名
##########################################
SERVER1,USER1
SERVER2,USER2
SERVER3,USER3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: