把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
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
相关文章推荐
- Oracle数据清理存储过程
- 将数据库的存储过程及其参数导出来的方法
- oracle 在存储过程自定义异常的处理方法
- oracle 存储过程和函数例子
- 一个Oracle存储过程编译死锁的奇怪现象
- Oracle 存储过程 定义 和 优点 与 函数 区别
- C#中使用Oracle 存储过程笔记
- oracle 存储过程的基本语法
- oracle 存储过程和函数例子
- oracle 存储过程的基本语法
- oracle查找库存储过程
- Oracle 数据库存储过程学习笔记
- oracle存储过程基本语法
- Oracle 10g新特性——代码混淆,存储过程加密
- 在网上找到的sql2000/2005/oracle分页控件存储过程,记下以备后用
- oracle 存储过程插入数据不成功
- ASP 调用 Oracle 存储过程返回结果集
- 【Oracle】存储过程在字符串单引号'内拼接单引号'
- oracle 存储过程的基本语法(1)
- Oracle 存储过程创建和执行入门实例