开发者社区> walb呀> 正文

混合框架中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数据库的还原处理操作,如需转载请自行联系原博主。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
登录Oracle数据库遇到ORA-01017密码错误的解决办法
我们在登录Oracle数据库时可能会遇到ORA-01017错误,这里分析原因并提供解决办法。 点击试看博主的专著《MySQL 8.0运维与优化》(清华大学出版社)
11 0
连接Oracle数据库失败(ORA-12514)故障排除
ORA-12514的故障是很多新手在连接Oracle数据库时经常遇到故障,它通常表示无法连接到数据库实例,这里姚远老师告诉大家如何排除这类故障。
23 0
TKMappper框架oracle in超过1000问题处理
TKMappper框架oracle in超过1000问题处理
74 0
oracle数据库带或不带数据导入导出操作大全
oracle数据库带或不带数据导入导出操作大全
381 0
【MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)
  向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键。主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A、B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键。
588 0
+关注
walb呀
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
迁移 ORACLE 最佳实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多
相关镜像