码迷,mamicode.com
首页 > 数据库 > 详细

混合框架中Oracle数据库的还原处理操作

时间:2016-10-25 13:52:32      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:color   导入   创建   用户   password   ace   数据库   html   建表   

在较早期的随笔《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数据库的还原处理操作

标签:color   导入   创建   用户   password   ace   数据库   html   建表   

原文地址:http://www.cnblogs.com/wuhuacong/p/5983744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!