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;



你可能感兴趣的:(oracle,sql,数据库,备份,迁移)