`

批处理脚本(从映射盘符拷dmp文件,清库,导入)

阅读更多
今天跑去给客户升级oracle服务器数据库,从9i升级到10g,又一次被客户的懒惰给深深折服。。。

因为服务端装的是xp,所以,用ora自己的安装/卸载工具卸了以后,删注册表,删目录,重启,装10G(oracle有点太死板了,检查通过后就给你建立一个文件夹,如果这时候点上一步,再下一步,检查时就报指向一个非空目录,建议安装在一个空目录云云,不用理它,继续),一路到底。

搞好了刚想走,客户来个电话说(是通过远程桌面操作的),能不能写个批处理脚本,她把脚本加到windows的任务计划里,以后点这个脚本就搞定所有的事情。

汗,就是从生产机上拷dmp文件到备份机,然后用plsql导入dmp,这两步都不愿做,而且又不是每天都搞。这么两步都不愿意做。不过,写就写呗

首先在备份机上建了一个磁盘映射,映射到生产机放备份的文件夹(定为Y盘)。本地放备份文件的目录假定为d:\backup
然后生产机上有个bat脚本,大意就是导出到这个备份文件夹,文件名固定为aaa[YYYYMMDD].dmp

脚本如下:
copy Y:\aaa%date:~0,4%date:5,2%date:~8,2.dmp d:\backup
sqlplus system/不告诉你@orcl <DropObjects.sql
imp 还不告诉你/还不告诉你@orcl file=d:\backup\aaa%date:~0,4%date:5,2%date~8,2.dmp fromuser=就不告诉你 touser=还不告诉你

DropObjects.sql中的内容如下:
1.将不告诉你用户下的user_objects视图中的所有对象drop掉,可以这么生成
  select 'Drop '||object_type||' '||object_name||';' from user_objects;
2.因为新的数据库是10g,drop后会有一大堆可以恢复的垃圾表,所以
  purge recyclebin;
3.又因为,sqlplus system/不告诉你@orcl <DropObjects.sql 这条命令是在登陆sqlplus时直接将@DropObjects.sql这句给传进去,执行完了仍然停留在sqlplus可不行,bat脚本执行不下去,所以DropObjects.sql末尾应该加上
  exit;

完毕。测试通过。
%date%是windows的日期变量,格式为yyyy-mm-dd,下标从0开始。%date:~0,4 取出的是年。以此类推

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics