zoukankan      html  css  js  c++  java
  • 混合框架中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:appAdministratororadatawhcdbwin.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脚本处理也是一种很好的选择之一。

  • 相关阅读:
    C# 特性(Attribute)学习
    ASP.NET Request.MapPath() 与 Server.MapPath()
    Asp.net对http request 处理的全过程!
    保存网址
    寻找silverlight高手帮忙解决问题,谢谢,
    基于.Net Framework的N层分布式应用开发
    VB.NET 代码转为C#
    刚刚开通博客噢 。欢迎大家光临啊
    配置本地服务器的几种方式
    前端必备工具 (记录)
  • 原文地址:https://www.cnblogs.com/wuhuacong/p/5983744.html
Copyright © 2011-2022 走看看