背景:Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。下面总结下具体的导入导出步骤:
-------------------------------------------------------------------------------------------
#11g新特性数据库使用数据泵expdp&impdp导出导入操作#
-------------------------------------------------------------------------------------------
1、导出操作之前需要做的事情
[oracle@fcdb2 ~]$ sqlplus / as sysdba
SQL> create or replace directory test_expdir as ‘/home/oracle/‘;
Directory created.
SQL> grant read,write on directory test_expdir to user;
Grant succeeded.
-------------------------------------------------------------------------------------------
2、导出操作
1)按用户导
[oracle@fcdb2 ~]$ expdp system/password@SID dumpfile=test_expdp.dmp DIRECTORY=test_expdir owner=user;
[oracle@fcdb2 ~]$ impdp user/password DIRECTORY=test_expdir DUMPFILE=test_expdir.dmp;
2)并行进程parallel
[oracle@fcdb2 ~]$ expdp user/password@SID directory=test_expdir dumpfile=test_expdir.dmp parallel=40 job_name=test
3)按表名导
[oracle@fcdb2 ~]$ expdp user/password@SID TABLES=emp,dept dumpfile=test_expdir.dmp DIRECTORY=test_expdir;
4)按查询条件导
[oracle@fcdb2 ~]$ expdp user/password@SID directory=test_expdir dumpfile=test_expdir.dmp Tables=emp query=‘WHERE deptno=20‘;
5)按表空间导
[oracle@fcdb2 ~]$ expdp system/manager DIRECTORY=test_expdir DUMPFILE=test_expdir.dmp TABLESPACES=temp,example;
6)导整个数据库
[oracle@fcdb2 ~]$ expdp system/manager DIRECTORY=test_expdir DUMPFILE=full.dmp FULL=y;
-------------------------------------------------------------------------------------------
3、导入操作之前需要做的事情
[oracle@fcdb2 ~]$ sqlplus / as sysdba
SQL> create or replace directory dpdata1 as ‘/home/oracle‘;
Directory created.
SQL> grant read,write on directory dpdata1 to USER;
Grant succeeded.
-------------------------------------------------------------------------------------------
4、导入操作
1)导到指定用户下
[oracle@fcdb2 ~]$ impdp user/password DIRECTORY=dpdata1 DUMPFILE=test_expdir.dmp SCHEMAS=user;
2)改变表的owner
[oracle@fcdb2 ~]$ impdp user/password DIRECTORY=dpdata1 DUMPFILE=test_expdir.dmp TABLES=username.tablename REMAP_SCHEMA=user1:user2;
3)导入表空间
[oracle@fcdb2 ~]$ impdp user/password DIRECTORY=dpdata1 DUMPFILE=test_expdir.dmp TABLESPACES=example;
4)导入数据库
[oracle@fcdb2 ~]$ impdb user/password DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
5)追加数据
[oracle@fcdb2 ~]$ impdp user/password DIRECTORY=dpdata1 DUMPFILE=test_expdir.dmp SCHEMAS=user TABLE_EXISTS_ACTION
-------------------------------------------------------------------------------------------
#10g(包含10g)之前的数据库使用exp&imp导出导入操作#
-------------------------------------------------------------------------------------------
数据导出:
----------
1,将数据库TEST完全导出,用户名user,密码password,导出到D:exp.dmp中
[oracle@fcdb2 ~]$ exp user/password@SID file=d:exp.dmp full=y
2,将数据库中system用户与sys用户的表导出
[oracle@fcdb2 ~]$ exp user/password@SID file=d:exp.dmp owner=(system,sys)
3,将数据库中的表test1、test2导出
[oracle@fcdb2 ~]$ exp user/password@SID file= d:exp.dmp tables=(test1,test2)
4,将数据库中的表table1中的字段age以"1"打头的数据导出
[oracle@fcdb2 ~]$ exp user/password@SID file=d:exp.dmp tables=(table1) query=" where age like ‘1%‘"
数据导入:
----------
1,将D:exp.dmp中的数据导入TESTDB数据库中.
[oracle@fcdb2 ~]$ imp user/password@TESTDB file=d:exp.dmp
[oracle@fcdb2 ~]$ imp user/password@TESTDB full=y file=d:exp.dmp ignore=y
备注:如果导入时有的表已经存在,不加ignore=y,导入的时候会报错,意思是对该表就不进行导入。
2,将d:exp.dmp中的表table1导入TESTDB数据库中.
[oracle@fcdb2 ~]$ imp user/password@TESTDB file=d:exp.dmp tables=(table1)
-------------------------------------------------------------------------------------------
###10g的备注###
-------------------------------------------------------------------------------------------
如果想要导出的文件进行压缩,既可以把导出的dmp文件使用linux压缩命令压缩。也可以在上面的命令后面加上 compress=y 来实现。
-------------------------------------------------------------------------------------------
###11g的备注###
-------------------------------------------------------------------------------------------
###更换表空间
采用remap_tablespace参数
--导出user1用户下的所有数据
expdp system/password directory=exp_dir dumpfile=user1.dmp SCHEMAS=user1
注:如果是用sys用户导出的用户数据,包括用户创建、授权部分;用自身用户导出则不含这些内容。
--以下是将user1用户下的数据全部导入到表空间TDB1(原来为TDB2表空间下)下
impdp user/password directory=user_impdir dumpfile=user1.dmp remap_tablespace=TDB1:TDB2
###要想创建用户,首先要创建表空间:
create tablespace TDB1 datafile ‘/home/TDB1.DBF‘ size 100M autoextend on next 100M maxsize 30000M;
###现在建好了名为‘TDB1‘的表空间,下面就可以创建用户了:
SQL> CREATE USER TEST1 IDENTIFIED BY TEST1 ACCOUNT UNLOCK DEFAULT TABLESPACE TDB1 TEMPORARY TABLESPACE DB_TEMP;
默认表空间‘DEFAULT TABLESPACE‘使用上面创建的表空间名:TDB1。
临时表空间‘TEMPORARY TABLESPACE‘使用上面创建的临时表空间名:DB_TEMP。
###接着授权给新建的用户:
SQL> GRANT CONNECT,RESOURCE TO TEST1;
GRANT CREATE,SELECT,DELETE TO TEST1;
--表示把 connect,resource权限授予TEST1用户
SQL> GRANT DBA TO TEST1;
授权成功。
--表示把 dba权限授予给TEST1用户
本文出自 “10784508” 博客,谢绝转载!
原文地址:http://10794508.blog.51cto.com/10784508/1727692