怎么用SQL语句而不用EXP/IMP对ORACLE数据库进行备份和恢复?请赐教!下面是个例子:
以下是oracle导出备份和导入恢复自动产生sql源代码各变量含义为:
EXP_BACK_DIR: 导出ORACLE数据库的DMP文件所放目录
SCRIPT_FILE: 此代码所生成的批处理文件路径及文件名称
LOG_FILE: 导出日志文件存放路径及文件名称
INT_USER:导出的ORACLE数据库的用户名
INT_PWD: 导出的ORACLE数据库的用户的口令
以下代码存成sql文件后
可以通过COMMAND :sqlplus internal/oracle@sqcdb @产生备份SQL代码的原文件名 <参数> 来运行。EXP导出备份SQL源文件
--You must have select privileges on the v$parameter
--v$logfile v$datafile and v$controlfile data
--dictionary views belonging to SYS to run this program define EXP_BACK_DIR = e:\oradb\expbackups
define SCRIPT_FILE = e:\back\expbackup.bat
define LOG_FILE= e:\back\expbackup.log
define INT_USER = gas
define INT_PWD = gas
set feedback off
set heading off
set pagesize 0
set linesize 128
set verify off
set echo off
col a new_value b
col c new_value d
select value a,to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') c from v$parameter where name ='db_name';spool &SCRIPT_FILE
prompt rem ***** EXP ORACLE DATABASE FOR &INT_USER USER of &b ON WINDOWS NT ON &d*****
prompt 
prompt rem ***** SET BACKUP FILES DIRECTORY *****
prompt md e:\oradb
prompt md e:\oradb\expbackups
prompt 
select 'del &EXP_BACK_DIR\exp&INT_USER'||'.dmp' from dual;
prompt
select 'exp Userid=&INT_USER/&INT_PWD file=&EXP_BACK_DIR\exp&INT_USER'||'.dmp Buffer=102400 log=&EXP_BACK_DIR\exp&INT_USER grants=y indexes=y' from dual;
prompt
select 'copy &EXP_BACK_DIR\exp&INT_USER'||'.dmp &EXP_BACK_DIR\exp&INT_USER'||to_char(sysdate, 'MMDDHH24MI')||'.dmp' from dual;
prompt
prompt set LogFile=&LOG_FILE
prompt echo COMPLETE EXP BACKUP FOR &INT_USER USER "&b" DATABASE STARTED ON &d ...> %logFile%
prompt exit spool off$&SCRIPT_FILE
$del &SCRIPT_FILE
exit执行后它生成批处理文件,严格说不是SQL语句进行备份,大家有什么好方法吗?

解决方案 »

  1.   

    jiezhi(風依舊) imp/exp是老板说不让用
    tonyyue0204(ypyue) 我不和你计较我现在还不知道能否用SQL操作,但领导说可以用API什么的,但具体的他也不知道,现在很困惑,望大家给个答案
      

  2.   

    http://211.99.196.144:8090/forum1/frontshow/dispbbs.jsp?boardid=105&id=8797
      

  3.   

    不可能,备份要使用操作系统命令
    数据库备份脚本
      冷备份脚本
      rem     script:coldbak.sql
      rem     creater:chenjiping
      rem     date:5.8.2003
      rem     desc:offline full backup database 
      
      --connect database
      connect internal/password;
      --shutdown database
      shutdown immediate;
      --Copy Data file
      !xcopy d:\oracle\oradata\test\*.dbf d:\database/H/R; 
      --Copy Control file
      !xcopy d:\oracle\oradata\test\*.ctl d:\database/H/R;
      --Copy Log file
      !xcopy d:\oracle\oradata\test\*.log d:\database/H/R;
      --startup database
      startup;