免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5130 | 回复: 3
打印 上一主题 下一主题

请教怎么样把ORACLE的存储过程导出来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-12 15:42 |只看该作者 |倒序浏览

论坛徽章:
0
2 [报告]
发表于 2004-04-12 17:07 |只看该作者

请教怎么样把ORACLE的存储过程导出来?

用toad,可以做这件事。

论坛徽章:
0
3 [报告]
发表于 2004-04-12 18:02 |只看该作者

请教怎么样把ORACLE的存储过程导出来?

写个脚本吧!
  1. set feedback off heading off verify off trimspool off
  2. set pagesize 0 linesize 200
  3. spool e:\admin_procedures.sql
  4. select
  5.    DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)
  6. from
  7.    user_objects u
  8. where
  9.    u.object_type = 'PROCEDURE';
  10. spool off;
复制代码

把以上脚本存为bakprocedure.sql,在sqlplus中登陆要导出存储过程的用户中执行,则该用户下的存储过程被导出到文件e:\admin_procedures.sql中.

论坛徽章:
0
4 [报告]
发表于 2004-04-13 08:38 |只看该作者

请教怎么样把ORACLE的存储过程导出来?

以下是小弟写(ftp脚本是抄D)的备份脚本,在LINUX7.2+ORACLE8.1.6下运行正常,每天crontab备份,一周轮换覆盖备份文件。请指教!

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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP