怎么用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语句进行备份,大家有什么好方法吗?
以下是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语句进行备份,大家有什么好方法吗?
解决方案 »
- ORACLE 9I 升级到11.2G后,DMP全备份导入到新的数据库后,发现多数据表格都没有导进来
- 请教如何将excel数据(xls文件类型)加到oracle数据库中间呀?
- 求一个oracle函数:返回两个时间点之间的有效工作时间
- Oracle 能否实现自动修改数据?
- a字段里有值为null的还有为空字符串的,为何用where取不出来?
- 用变量年岁=20 检索不到数据时就用3变量年岁=30 来检索
- 又要签名了。各位来签名!
- 刚入门,问一个简单的sql
- 问个简单的问题!
- 如何在linux9下自动关闭启动oracle8.17?急!
- 有谁知道如何让我的TOAD找到oci.dll
- oracle database express怎么样?
tonyyue0204(ypyue) 我不和你计较我现在还不知道能否用SQL操作,但领导说可以用API什么的,但具体的他也不知道,现在很困惑,望大家给个答案
数据库备份脚本
冷备份脚本
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;