混合框架中Oracle数据库的还原处理操作
Posted wuhuacong(伍华聪)的专栏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合框架中Oracle数据库的还原处理操作相关的知识,希望对你有一定的参考价值。
在较早期的随笔《Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作》粗略介绍了Oracle数据库的备份还原操作,本文想从开发框架的基础上介绍Oracle数据库的脚本或者还原操作。
我们在Winform开发框架、混合式开发框架、Web开发框架等各种开发框架,底层都是支持多种数据库的,如MS SQLServer、Oracle、mysql、SQLite、PostgreSQL等等,如下图所示。
其中SQLServer支持最为常用,而且也是最为方便备份还原的操作,而Oracle数据库这是次之,也是较为常用的数据库,不过相对SQLServer来说,Oracle的数据库处理起来并不是那么方便,因此本文着重介绍一下,基于框架层面的数据库,如何实现数据库脚本的处理或者基于备份文件的还原操作。
1、框架中的数据库脚本处理
如果使用数据库脚本的方式,Oracle可以按照前面《Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作》的方式构建一个表空间,然后创建对应的数据库信息,如下所示。
create tablespace win_tbs datafile \'C:\\app\\Administrator\\oradata\\whcdb\\win.dbf\' size 100M; create user win identified by win default tablespace win_tbs; grant connect,resource to win; grant dba to win;
上面代码就是创建表空间文件,然后创建一个win用户,并附加在表空间里面。
有了这些信息,我们就可以通过用户win,密码为win的方式登录Oracle数据库了。
然后我们就可以利用这个用户,在PLSQL上进行表的创建和数据操作处理了。
如我们创建表的脚本如下所示。
/*==============================================================*/ /* Table: TB_CITY */ /*==============================================================*/ create table TB_CITY ( ID number not null, CITYNAME NVARCHAR2(50), ZIPCODE NVARCHAR2(50), PROVINCEID number, constraint PK_TB_CITY primary key (ID) ); comment on table TB_CITY is\'全国城市表\'; comment on column TB_CITY.CITYNAME is\'城市名称\'; comment on column TB_CITY.ZIPCODE is\'邮政编码\'; comment on column TB_CITY.PROVINCEID is\'省份ID\';
例如我们创建各类不同的数据库脚本,那么只需要按照顺序加入或者选择加入执行数据库脚本即可。
那么执行这些SQL,该如何操作呢,是不是直接拖动到PL-SQL上就可以了?
当然不是,否则长一点的数据库脚本,就可能导致非常迟缓的执行效率。
一般可以通过两种方式,一种是使用命令行的方式。
这种方式执行速度非常快,比起直接在PL-SQL的SQL窗口上执行更有效率。
另外一种方式,就是可以利用PL-SQL里面的另外一个地方进行执行数据库脚本,如下所示。
在【 工具】【导入表】的操作里面,弹出一个对话框,也是执行脚本高效的操作之一。
上面介绍的这些方式,就是在数据库没有的情况下,根据数据库脚本构建对应的数据对象和数据的。
2、使用imp和exp进行数据的导入和导出
另外一个种还原已有备份文件或者备份已有数据库的操作就是使用Oracle的命令imp和exp了。
imp使用的基本格式:imp[username[/password[@service]]]
一般也可以使用imp,然后一步步的操作即可。
我们先来了解下这两个命令的格式:
基本语法和实例:
1、EXP:
有三种主要的方式(完全、用户、表)
1、完全:
EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\\FULL.DMP FULL=Y
如果要执行完全导出,必须具有特殊的权限
2、用户模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\\SONIC.DMP OWNER=SONIC
这样用户SONIC的所有对象被输出到文件中。
3、表模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
这样用户SONIC的表SONIC就被导出
2、IMP:
具有三种模式(完全、用户、表)
1、完全:
IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\\FULL.DMP FULL=Y
2、用户模式:
IMP SONIC/SONIC BUFFER=64000 FILE=C:\\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
3、表模式:
EXP SONIC/SONIC BUFFER=64000 FILE=C:\\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
这样用户SONIC的表SONIC就被导入。
将一个用户所属的数据导入还有一个用户格式:
imp win/win file=c:\\win.dmp fromuser=win touser=win
如果有的表已经存在,执行的话它就报错,对该表就不进行导入。那么在后面加上 ignore=y 就可以了。
在框架的数据库目录里面,我们一般附带有对应的Oracle备份文件(.dmp文件)这样,用户可以在开发使用Oracle的时候,可以直接还原数据库即可,不过如果要详细化做好各个数据库脚本,使用Oracle脚本处理也是一种很好的选择之一。
以上是关于混合框架中Oracle数据库的还原处理操作的主要内容,如果未能解决你的问题,请参考以下文章
Python远程操作Oracle实现一键备份还原数据库演示,利用socket进行impexp一键导入导出oracle数据库dmp文件
Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段