数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
实用的备份PL/SQL程序工具

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

/*[email protected]*/

 

功能: 用于备份当前用户所拥有的所有PL/SQL objects (包括

TYPE,TYPE BODY, PROCEDURE , FUNCTION, PACKAGE, PACKAGE BODY or JAVA SOURCE )

 

原理: 对USER_SOURCE数据字典的调用,得到所有的

PL/SQL 代码.

 

使用方法举例:

1.     C盘建立目录C:\EXPORT

2.     EXPORT_SOURCE.SQL和EXTRACT_SOURCE.SQL拷贝到C盘根目录.

3.     登陆SQLPLUS , CONNECT SCOTT/TIGER

4.     运行@C:\EXPORT_SOURCE.SQL

5.     执行结束,所有的SCOTT拥有的PL/SQL object的代码文件建立在C:\EXPORT目录里.

后缀名.PKS 表示PACKAGE

后缀名.PKB 表示PACKAGE BODY

后缀名.SQL 表示其他OBJECTS

 

 

备注:

如果想得到数据库中各个SCHEMAPL/SQL objects ,只需把工具代码中的USER_SOURCE改成DBA_SOURCE,SYSTEM

运行即可.

 

 

 

 

工具代码:

export_source.sql

 

SET SERVEROUTPUT ON SIZE 1000000

SET ECHO OFF VERIFY OFF FEEDBACK OFF TRIMSPOOL ON PAGES 0 LINES 512

SET TERMOUT OFF

SET TERMOUT ON

 

PROMPT

PROMPT PL/SQL export utility

PROMPT

PROMPT This utilty exports all of the current schema's PL/SQL source code into

PROMPT a subdirectory called export.

PROMPT

PROMPT Exporting current user's source to folder ./export

 

SET TERMOUT OFF

SPOOL temp_source_extract.sql

PROMPT SET ECHO OFF VERIFY OFF FEEDBACK OFF TRIMSPOOL ON TERMOUT OFF PAGES 0 LINES 512

 

DECLARE

    /*

    || This cursor extracts each PL/SQL stored procedure's name and procedure type

    */

    CURSOR cur_source_programs

    IS

        SELECT    distinct us.name, us.type,

                  us.name || decode(us.type, 'PACKAGE',      '.PKS',

                                             'PACKAGE BODY', '.PKB',

                                             '.SQL') spool_file

        FROM      user_source us

        ORDER BY  us.name, us.type;

 

BEGIN

    FOR cur_source_programs_row IN cur_source_programs

    LOOP

        dbms_output.put_line('spool export\' || user || '_' || cur_source_programs_row.spool_file);

        dbms_output.put_line('@extract_source ' || cur_source_programs_row.name || ' "' || cur_source_programs_row.type || '"');

        dbms_output.put_line('spool off');

    END LOOP;

 

END;

/

 

SPOOL OFF

@temp_source_extract

 

SET FEEDBACK ON VERIFY ON TERMOUT ON

 

PROMPT Export complete!

PROMPT 

  

 

Extract_source.sql:

 

SET HEAD OFF VERIFY OFF

prompt --************************************************************************************--;

prompt --*;

prompt --*  SCRIPT:        &2 &1;

prompt --*;

prompt --*  AUTHOR:;

prompt --*;                

prompt --*;

prompt --*  PURPOSE:;

prompt --*;                

prompt --*;

prompt --*;                

prompt --*;               

prompt --*;

prompt --*  PARAMETERS:;

prompt --*;               

prompt --*;

prompt --*  DEPENDENCIES:  none;

prompt --*;

prompt --*  REVISIONS:;

prompt --*  Ver        Date        Author              Description;

prompt --*  ---------  ----------  ------------------  ------------------------------------;

prompt --* ;        

prompt --*;

prompt --*************************************************************************************--;

 

 

SELECT    DECODE(ROWNUM, 1, 'CREATE OR REPLACE '|| RTRIM(RTRIM(us.text, CHR(10) )),

                            RTRIM(RTRIM(us.text, CHR(10) ))) text

FROM      user_source us

WHERE     us.name = '&1'

AND       us.type = '&2'

ORDER BY  us.line;

 

PROMPT /

PROMPT

 

 

 

 




相关文章

相关软件