Oracle数据库导入/导出(转储)
说明
Oracle数据库转储主要有:
- 数据泵导出导入(EXPDP和IMPDP)
- EXP和IMP
- 第三方备份工具RMAN
EXP/IMP和EXPDP/IMPDP区别
- EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
- EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
- IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
**注意:**在此推荐使用数据泵的方式,本文中也以此种方式作为示例
导出
-
创建导入导出数据目录
linux命令行执行 mkdir /u01/oracle/11g/app/oracle/dpdata sqlplus中执行 create or replace directory dpdata as '/u01/oracle/11g/app/oracle/dpdata';
-
导出命令
expdp user/passwd directory=dpdata dumpfile=XXX.dmp
导入
-
创建表空间
执行如下命令,可看到当前数据库其它表空间的存储位置select name from v$datafile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl/sysaux01.dbf /u01/app/oracle/oradata/orcl/undotbs01.dbf /u01/app/oracle/oradata/orcl/users01.dbf
创建表空间:
CREATE TABLESPACE 表空间名 DATAFILE ’/u01/app/oracle/oradata/orcl/data.dbf(表空间位置)’ SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
-
创建用户并赋予权限
CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名;用户赋予权限
grant connect,resource to 用户名;
grant unlimited tablespace to用户名;
grant create database link to用户名;
grant select any sequence,create materialized view to 用户名;GRANT “DATAPUMP_EXP_FULL_DATABASE” TO 用户名;
GRANT “DATAPUMP_IMP_FULL_DATABASE” TO 用户名;
REVOKE UNLIMITED TABLESPACE FROM 用户名;
ALTER USER aimsdata QUOTA UNLIMITED ON 用户名;
GRANT DEBUG CONNECT SESSION TO 用户名; -
导入备份数据
创建目录create directory xxxdata1 as ’/home/oracle/xxxdata’;
创建完成后,退出sql,将dmp文件拷贝到此目录下
给用户赋予操作目录的权限
grant read,write on directory xxxdata1 to 用户名;
执行导入命令
1.全库导入
impdp username/password DIRECTORY=XXXDATA1 DUMPFILE=XXX.DMP FULL=y2.按用户导入
impdp username/password DIRECTORY=XXXDATA1 DUMPFILE=XXX.DMP SCHEMAS=用户名;3.其它参数命令
impdp username/password directory=xxxdata dumpfile=xxx.dmp TABLE_EXISTS_ACTION=REPLACE
TABLE_EXISTS_ACTION=REPLACE如果已经存在数据表执行覆盖操作从一个用户导入另一个用户(更改SCHEMA)
impdp 用户名/密码 directory=dpdata dumpfile=xxx.DMP TABLE_EXISTS_ACTION=REPLACE REMAP_SCHEMA=原用户名:新用户名
impdp 用户名/密码 directory=dpdata dumpfile=xxx.DMP fromuser=原用户名 touser=新用户名(此种方式更多的用在imp中)用户和表空间都不同的导入
impdp 用户名/密码 directory=dpdata dumpfile=xxx.DMP REMAP_SCHEMA=原用户名:新用户名 remap_tablespace=原表空间:新表空间 EXCLUDE=USER table_exists_action=REPLACE
**注:**当表空间不一致的时候尽可能采用这种导入时更换表空间,如果先导入然后再alter表空间的话容易产生索引等问题注意:
-
如果提示”非dmp文件”则采用非数据泵的方式导入
imp 用户名/密码 file=/home/oracle/数据库_20151105.dmp FULL=Y -
如果是多个dmp文件,不确定那个一个文件是主文件则执行
impdp 用户名/密码 directory=dpdata dumpfile=file1.DMP,file2.DMP,file3.DMP -
查询已经创建的directirise目录
select * from dba_directorise;
-
par参数文件方式导入导出
par文件的方式进行导入导出:par文件中配置了impdp命令的参数,用起来非常的方便,只需执行impdp parfile=111.par
即可,此种方式可以配置好参数然后将文件发送给别人导入,方便快捷简单
示例:
expdp.par
userid='用户名/密码@实例名'
directory=dpdata
dumpfile=xxxdata_20160928_%U.dmp
logfile=expdpdb.log
filesize=10000m
parallel=3
JOB_NAME=xxx_1
impdp.par
userid='用户名/密码@实例名'
directory=dpdata
dumpfile=DataXXX.dmp
fromuser=原用户名
touser=新用户名