码迷,mamicode.com
首页 > 数据库 > 详细

Oracle11g和10g数据导入导出

时间:2015-12-24 00:45:08      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:oracle   impdp   expdp   exp   imp   

背景: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” 博客,谢绝转载!

Oracle11g和10g数据导入导出

标签:oracle   impdp   expdp   exp   imp   

原文地址:http://10794508.blog.51cto.com/10784508/1727692

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!