暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

现场勘验遇到Oracle?不要慌

取证知道 2021-05-25
706

前言:最近给大家分享了两期关于Oracle数据库删除恢复的内容,有读者私信小知说:在现勘中如果遇到Oracle数据库怎么办?以前遇到Mysql的情况比较多,真遇到Oracle数据库,可能会现场一脸懵逼。

误删Oracle数据,别急着跑路

误删Oracle数据,别急着跑路2

说到现勘碰到数据库,大家可谓是谈Oracle色变,无从下手,总觉得Oracle太太太难了,连碰的欲望都没有。其实参照我们对其他数据库的处理方法:现场备份(导出)数据库的数据,然后将数据库在本地重现即可。

接下来就给大家介绍Oracle数据的导出方法。

Oracle数据库数据导出导入总结起来,可以有3种方法:

(1)传统导出/导入exp/imp

(2)数据泵方式expdp/impdp

(3)第三方工具,如SQL Developer

传统导出/导入exp/imp:

优点:代码书写简单易懂,从本地即可直接导入,不用在服务器中操作;

缺点:导入/导出速度慢,几个G的数据一般要4-5小时;

数据泵方式expdp/impdp:

优点:导入/导出速度快,几个G的数据一般只要1-2小时;

缺点:代码相对不易理解,要想实现导入导出的操作,必须在服务器上创建逻辑目录;

第三方工具,如SQL Developer

优点:封装了导入导出命令;

缺点:长时间应用会对其产生依赖,降低对代码执行原理的理解。

总结来说:

1、如果小批量导出/导入oracle数据,用第三方工具操作

2、如果数据量不大,导出/导入时间不紧急,使用EXP/IMP方式,

3、如果时间紧,数据库库数据量大的整库导出/导入,使用expdp/impdp方式。

传统方式和第三方工具方式比较简单,这边就不介绍了,接下来我们一起来详细了解下数据泵方式

Expdp/impdp语法:

最普遍语法:

Expdp(impdp) username/password@SERVICENAME dumpfile=file.dmp directory=dmp_dir;

较复杂语法:

expdp(impdp) username/password@SERVICENAME:1521 schemas=username  dumpfile=file.dmp logfile=file.log directory=dmp_dir FULL=y;

注解:红字部分可自定义

1)expdp(impdp):必写,expdp代表导出,impdp代表导入;

2) username/password:必写,数据库用户名和密码;

3) servicename: 必写,数据库名;sql查询语句(show parameter db_name);

4) Dumpfile:必写,dmp文件名,’=‘号后的dmp文件名可自定义;

5)Directory:必写,逻辑目录名,dmp文件所在目录的逻辑目录名;

-------------------其他选填参数------------------

6) 1521:如库为默认,端口可不写,如非默认端口需修改为其端口号;

7) Logfile:日志文件名,不写则将日志存于默认日志文件下;

8) schemas:用户名,如需导出/导入某一个或某几个用户数据可填,默认导出/导入所有用户数据;格式:schema=<用户名1>,<用户名2>;

9) tables: 按表名导入/导出,格式如下:tables=<用户名.表名1>,<用户名.表名2>;

10) tablespaces: 按表空间导入/导出,格式:tablespaces=<表空间名1>,<表空间名2>;

11) FULL=y:如果需要整库导出/导入,则加上这个参数;

12) remap_schema:用户名映射,选填,导入时如需将原用户名修改成新的用户名则填上,格式为:remap_schema=<原用户名>:<新用户名>;

接下来,我们来看现场经常遇到的几种常用导出语法:

(1)按用户名导出:

expdp 用户名/密码@orcl  schemas=<用户名>   dumpfile=expdp.dmp directory=testdata;

(2)按表名导出:

expdp 用户名/密码@orcl  tables=<用户名.表名1>,<用户名.表名2>   dumpfile=expdp.dmp directory=testdata;

(3)按表空间导出:

expdp 用户名/密码@orcl   dumpfile=expdp.dmp directory=testdata  tablespaces=<表空间名1>,<表空间名2>;

(4)整库导出:

expdp 用户名/密码@orcl  dumpfile=expdp.dmp directory=testdata FULL=y;

通过以上介绍,我们对数据泵语法有了一定了解,接下来,我们就数据泵的整库导出/导入过程做个操作:

已知数据库参数如下:

数据库名:test007   

数据库用户/密码:ccs/123456

原库存在的用户:sys,system等系统用户,ccs等生产用户

原库存在的表空间:system,users等系统表空间,ccs_data等生产表空间

原库存在的表:ccs.test,ccs.test1等

一、登录原库服务器,以管理员权限登陆

sqlplus as sysdba

二、创建虚拟目录,赋予“ccs”用户读写权限

create directory dmp_dir as 'C:\APP\FU\ORADATA\DMP';

grant read, write on directory dmp_dir to ccs;

 三、赋予“ccs”用户导出全库角色权限

grant exp_full_database to ccs;

四、执行expdp导出语句

expdp ccs/123456@test007 dumpfile=expdp.dmp directory=dir_db full=y

注:windows环境下EXPDP/IMPDP命令前要加 $ 符号

$expdp ccs/123456@test007 dumpfile=expdp.dmp directory=dmp_dir full=y

以上就是今天给大家介绍如何将现场Oracle数据库的数据进行导出,至于导出之后的数据如何在其他环境下进行重现,我们下期再见。

喜欢小知的话请不要忘了关注,点赞,转发!

文章转载自取证知道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论