关于IMP EXP逻辑备份oracle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于IMP EXP逻辑备份oracle相关的知识,希望对你有一定的参考价值。

最近搞EXP/IMP几个概念有点乱

1.如果说我要做全库的备份,我是不是先要把这个实例的全库导出来 expdp后面跟的账号密码是sysdba的还是任意一个用户的?

2.如果恢复的话,相当于就是把导出来的内容用IMP重新导入回去?导出来到导入回去中间这段时间的数据是不能恢复的吧?所以EXP/IMP逻辑备份相当于是不完全的备份?

暂时就想到这2点,不知道我理解的有没有什么地方是错的?
还有就是大家分享下IMP/EXP平时遇到要注意的问题吧。
现在日常工作中是用EXP/IMP多还是EXPDP/IMPDP多呢?

1\\全库备份,可以使用SYSDBA用户导出,但是建议使用RMAN进行全库备份。使用SYSDBA导出后再导入的过程中会遇到各种问题。建议使用RMAN管理数据备份和恢复;
2\\IMP恢复的时候是不可能恢复中间段的数据的,这些数据需要使用日志恢复才能解决;如果生产库一直在跑,无论那一种备份,都是不完整的备份。
关于上面的问题,我说说我知道的,希望对你有帮助。
数据库备份和恢复最安全的做法是冷备份+做定期全库备份+活动日志备份,恢复的时候使用全库备份+活动日志可以进行任意的恢复,只需要掌握几条命令,有可靠的和足够的存储空间即可实现,非常靠谱。
IMP/EXP适合的场合时迁移数据,对某一个时刻的数据或者某一个用户的数据进行迁移或者某些不再使用的数据或者表删除之前备份使用比较靠谱。对于频繁操作的用户或者数据,建议使用RMAN+archivelog搞定吧,Oracle的FlashBack也打开了,这样基本上想怎么恢复都可以了!
参考技术A 我个人感觉首先按照数据库容量,业务数据重要性以及备份空间的容量等来确定备份策略,比较重要的系统至少有rman备份、逻辑备份,来保证数据的完整性。
exp和imp是oracle的导出导入的命令,完成数据的导出导入工作,我个人比较喜欢用expdp和impdp,原因是在数据量稍微大的情况下,impdp要比imp效率高很多,也就是导入速度快很多,再说下恢复的情况,如果对恢复后的数据要求与原数据库数据完全一致,可以使用逻辑备份恢复或rman恢复,这种恢复工作需要停原数据库,如果系统不重要数据量不大,可以使用逻辑备份恢复的方式,如果系统很重要数据量大,超过500G,建议使用rman恢复,用rman追到一个时间点,最后利用归档来完成与原数据库数据同步的任务,这样原数据库停止的时间会很短。
以上,希望能帮助你!

oracle使用exp与imp对数据迁移备份的方法

使用exp和imp命令是oracle对数据进行迁移备份的一种最简单最常用的一种方式。在此记录下使用的方法步骤,以备后用。

首先,在老库上使用命令:

exp userid=username/password@database OWNER=xxx file=xxx.dmp log=xxx.log

其中@后面的database是数据库连接字符串。可以是ip:port/servicename的形式。例如192.168.1.10:1521/orcl 如果配置了tnsname,那么@后面可以直接写配置的tnsname。例如ORCL。

这里顺便说一下使用PL/SQL登录时,Database文本框中需要填写的连接字符串的含义。如图


里面可以直接填写在tnsnames.ora中配置的tnsname。例如ORCL。这样就可以直接根据tnsname来获取ip、端口号、servicename等值,然后就可以得到连接字符串。

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
但是如果没有在tnsnames.ora中配置的话,而是直接使用PL/SQL来进行连接。那么这时候就需要在PL/SQL的Database中直接填写连接字符串了。例如填写:192.168.1.10:1521/orcl。这两种方式都是可以的。


这样经过第一步,dmp文件就已经导出成功了。下面需要的是建立新库的表空间和owner。

对于表空间,一般情况下在老库上可以看到。但是如果现在只有一个dmp文件,不知道里面的表空间是什么,怎么办呢。这里有一个简单的方法来获取相关的信息。

就是在新库上随便找一个管理员账户来执行imp命令导入dmp文件。但是由于OWNER不正确,会导致导入的表和数据会跳过,并不会真正的导入。但是这样会生成log文件。从log文件中就可以查看出表空间等信息。例如:

imp userid=system/manager file=xxx.dmp full=y ignore=y show=y log=xxx.log

查看相关的log,查看相关的表空间等信息。如果新库没有相关的表空间,就需要进行创建表空间。创建命令如下:

CONNECT / AS SYSDBA
CREATE TABLESPACE xxx
	DATAFILE 'D:\\app\\oradata\\ORCL\\XXX01.DBF'
	SIZE 200M
		AUTOEXTEND ON NEXT 20M MAXSIZE 4G;
创建好表空间后,然后进行创建用户:

CREATE USER <user>
	IDENTIFIED BY <password>
		DEFAULT TABLESPACE xxx;
ALTER USER <user> QUOTA UNLIMITED ON xxx;
GRANT CREATE SESSION TO <user>;
GRANT DBA TO <user>;

然后就可以真正的导入dmp文件了:

imp USERID=<user>/<password> file=xxx.dmp log=xxx.log full=y ignore=y show=y

这样库也就迁移成功了。


另外再附上将库全部删除的命令:

CONNECT / AS SYSDBA
DROP TABLESPACE xxx INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP USER <user> CASCADE;



以上是关于关于IMP EXP逻辑备份oracle的主要内容,如果未能解决你的问题,请参考以下文章

oracle exp/imp工具使用

Oracle下的exp/imp

oracle exp/imp 详解

IMP/EXP,数据泵,SQL*Loader ,rman,oracle数据库备份

20170623_oracle备份和恢复_常见问题

「oracle备份恢复」oracle数据库备份恢复之逻辑备份与恢复