我想把公司的环境在自己的电脑上搭建一个,可是数据库里面有很多存储过程和function,数据库的表我知道怎么备份,可是里面的存储过程和function怎么备份啊?有人说粘贴到记事本中,可是存储过程和function很多,一个个粘贴太麻烦了吧?不知道大家有什么方法没?小弟先谢了

解决方案 »

  1.   

    exp
    或者
    select text from user_source
    order by name,line
      

  2.   

    exp表、procedure、function都能导下来啊。
      

  3.   

    使用exp,如果只要结构不要数据,在参数中加入好像是 rows=N 的样子。记不清了,使用 exp help=y看看
      

  4.   

    呵呵,如果过程函数很多,这个方法不行了。
    你是想导出这些过程的创建语句吗?
    方法很多,:
    1.用lL说的exp,加个rows=n就不导出数据了。不过这个根据你的需要,还要加别的参数,然后导入时加indexfile,就可以看到存储过程的DDL了。
    2.用工具比如TOAD可以导出。
    3.写个过程:
    比如导出oper用户下的所有存储过程到指定文件中:
    spool /u01/getddl.txtdeclare
    v_sql clob;
    cursor aaa is select owner,object_name
    from dba_objects
    where object_type='PROCEDURE'
    and owner='OPER';
    begin
    for rec in aaa loop
    select dbms_metadata.get_ddl('PROCEDURE',rec.object_name,'OPER')
    into v_sql from dual;
    dbms_output.put_line(v_sql);
    dbms_output.put_line('---------------------------------');
    end loop;
    end;
    /spool off
    可以修改这个过程,做成传参数的类型,然后传入用户名,对象类型,比如过程、函数、触发器等等。
      

  5.   

    直接把公司的数据库导出来
    exp system/neusoft321@ahsimis file=e:\ahlb20080718.dmp log=e:\ahlb20080718.log owner=ahlbimp ahsimis/ahsimis@orcl file=e:\ahsimis20081010,dmp fromuser=ahsimis touser=ahsimis
    去网上查下语句就OK了,EXP/IMP
      

  6.   

    哦 原来exp也可以导出存储过程  我以为只能导出表呢 谢谢各位了!
      

  7.   

    直接用pl/sql developer里面“tools导出object"功能不就行了?有工具为什么不用呢?
      

  8.   

    先exp导出,再imp导入到你的数据库里就行了
      

  9.   

    --全库备份
    exp user/user@sid full=y file=d:\backup.dmp --方案备份
    exp user/user@sid owner=username file=d:\backup.dmp 
      

  10.   

    1、cmd->exp->username/passwd@sid-->.....一路回车--->输入导出库得名字 就把所有的表、存储过程、函数乱七八糟的都导出来了;
    2、pl/sql-->工具---〉导出用户对象 可以找到你要导的东东。
    两者都可以的很方便!
      

  11.   

    数据库可以停下来的话,直接冷备份最近简单。
    不能停的话,数据量大的化,搬移表空间,小的话直接exp,当然也可以用RMAN估计你不懂。