Oracle11G的数据库数据导入导出(由11g上导出导入10g数据库等)

常用命令

EXPDP USERID=’scott/tiger@orcl as sysdba’ schemas=scott directory=DATA_PUMP_DIR dumpfile=dp.dmp logfile=dp.log version=10.2.0.1.0

create tablespace houqin_tablespace datafile ‘D:\dzj\orcl\TEST01111.DBF’ size 100M autoextend on next 5M maxsize unlimited extent management local uniform size 1M;

create temporary tablespace test11_temp tempfile ‘D:\dzj\orcl\TEST01111_temp.dbf’ size 100m autoextend on next 3m maxsize 2048m extent management local;

create user HOUS identified by HOUS default tablespace test11 temporary tablespace test11_temp;

IMPDP USERID=’scott11/tiger@orcl as sysdba’ schemas=scott directory=DATA_PUMP_DIR dumpfile=dp.dmp logfile=lg.log version=10.2.0.1.0

IMPDP USERID=’HOUQIN/HOUQIN@orcl as sysdba’ schemas=HOUQIN directory=DATA_PUMP_DIR dumpfile=dp.dmp logfile=lg.log version=10.2.0.1.0

–查看表的数量

SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER =’ES2012’;

IMPDP USERID=’ES2012/ES2012@orcl as sysdba’ schemas=ES2012 directory=DATA_PUMP_DIR dumpfile=HAIYANG10G.dmp logfile=dp.log version=10.2.0.1.0

由于11g上导出导入10g数据库存兼容问题,所以要使用expdp和impdp命令:

  1. 在11g上使用EXPDP 导出到directory DATA_PUMP_DIR 指定版本号是10g

select * from dba_directories ; 查看 DATA_PUMP_DIR 本地所在位置

例如:CMD内执行: EXPDP USERID=’scott/tiger@orcl as sysdba’ schemas=scott directory=DATA_PUMP_DIR dumpfile=dp.dmp logfile=dp.log version=10.2.0.1.0

  1. 从 DATA_PUMP_DIR 目录 拷贝 dmp 文件 到11g 数据库 DATA_PUMP_DIR 目录下

  2. 创建一个 与导出时 相同的用户,用户名密码相同 赋予DBA权限

例如:CMD内执行:

IMPDP USERID=’scott/tiger@orcl as sysdba’ schemas=scott directory=DATA_PUMP_DIR dumpfile=dp.dmp logfile=lg.log version=10.2.0.1.0

如果报错 表空间* 不存在

需要创建表空间 表空间位置 搜索 .DBF 可以放到一起

PL/SQL执行:

create tablespace houqin_tablespace datafile ‘D:\dzj\orcl\TEST01111.DBF’ size 100M autoextend on next 5M maxsize unlimited extent management local uniform size 1M;

  1. 再次CMD执行导入 ,导入结束 提示 导入成功,无错误无警告 才算真正完成导入

参考1:

Oracle11g数据库导入Oracle10g数据库操作笔记

11g备份,导入10g的时候会抛错,直接阻止导入。

但是有时候还必须得把11g的数据库导入到10g,我今天就遇到了这种情况。

一开始只是把11g中的表全部备份,成功导入10g。但是缺少视图、存储过程等。一个个sql创建累死人,方法太笨。请教了一下资深DBA,重新备份,重新导入,成功。

现在把我导入操作的全过程记录下来,希望可以方便更多的人!

一、在11g服务器上,使用expdp命令备份数据

EXPDP USERID=’SYS/cuc2009@cuc as sysdba’ schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0

其中,红色文字部分是根据需要改写的地方。例如我的sys密码是cuc2009,数据库sid是cuc,要到出的用户名是sybj,要导入到10.2.0.1.0版本的Oracle数据库中去。aa.dmp和aa.log将会在11g的dpdump目录中生成,例如我的11g装在了E盘下面,于是aa.dmp将会在E:\app\Administrator\admin\cuc\dpdump目录下被生成。

二、在10g服务器上,使用impdp命令恢复数据

准备工作:1.建库2.建表空间3.建用户并授权4.将aa.dmp拷贝到10g的dpdump目录下

IMPDP USERID=‘SYS/cuc2009@cucf as sysdba’ schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0

其中红色部分是根据需要改写的地方。例如我的sys密码是cuc2009,数据库sid是cucf,要导入用户名为sybj,要导入到10.2.0.1.0版本的Oracle数据库中去。aa.log将会在10g的dpdump目录中生成。

参考2:

expdp和impdp

使用expdp

1。data pump包括下面几个部件:

The command-line clients, expdp and impdp

The DBMS_DATAPUMP PL/SQL package (also known as the Data Pump API)

The DBMS_METADATA PL/SQL package (also known as the Metadata API)

2。expdp, impdp和原先的exp,imp不兼容,也就是用exp导出的文件用impdp是无法导入的。

3。data pump不支持XML schemas

4。使用前必须要先创建目录:

SQL> CREATE OR REPLACE DIRECTORY dpump_dir as ‘/oracle/oradata/ORCL10/pumpdata’;

查询目录:dba_directories

Oracle数据泵为了提高性能,采用直接路径的方式,通过数据库建立的DIRECTORY将数据导入。

这造成了数据泵和IMP一个主要的区别。如果在客户端进行IMP导入,dmp文件是放在客户端的。但是如果通过数据泵的方式导入,数据泵文件总是放在数据库服务器端。

5。给导入导出的用户赋予目录的读写权限:

SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir TO scott;

6。datapump是服务器端的JOB,所以可以在执行datapump以后,通过EXIT_CLIENT退出客户端。通过DBA_DATAPUMP_JOBS视图可以检查datapump作业的情况,也可以利用ATTACH重新连接上还在进行的JOB。每个datapump可以通过JOB_NAME参数指定名称,如果不指定,那么会有默认的名称,比如上贴中的例子,名称就是SYS_EXPORT_TABLE_01,通过V$SESSION_LONGOPS也可以查看长时间运行的datapump job的具体内容。

7.以下参数影响data pump的性能

disk_asynch_io = true

db_block_checking = false

db_block_checksum = false

8.以下参数设置越高,来允许最大的并行度

processes

sessions

parallel_max_servers

  1. 以下参数应该被设置大点

shared_pool_size

undo_tablespace

实验以及例子:

==================================================================

创建目录,dumpdir是自己命名的名称

SQL> create directory dumpdir as ‘e:datadump’;

删除目录

SQL> drop directory dumpdir ;

SQL> grant read,write on directory dumpdir to scott;

//导出一个schema:scott

C:>expdp scott/tiger dumpfile=scott.dmp directory=dumpdir schemas=scott

SQL> create user lihui identified by lihui;

SQL> grant create session,resource to lihui;

SQL> grant read,write on directory dumpdir to lihui;

SQL> grant create database link, create synonym, create view to lihui;

SQL> grant imp_full_database to scott;

//导入到lihui这个schema下

C:>impdp scott/tiger directory=dumpdir dumpfile=scott.dmp logfile=scott.log remap_schema=scott:lihui

–参数remap_schema将scott下的内容导入导李辉这个schema下

提高impdp导入的的速度,与并行操作有关:

SQL> show parameter cpu

NAME TYPE VALUE


cpu_count integer 2

parallel_threads_per_cpu integer 2

通过parallel参数导出使用一个以上的线程来显著的加速作业.每个线程创建一个单独的转储文件,

因此dumpfile应当拥有和并行度一样多的项目.可以使用通配符命名文件名,而不用显式的输入各个文件名,e.g

expdp lihui/lihui tables=(emp,dept) directory=dumpdir dumpfile=test_%U.dmp parallel=2 job_name=test

–%U是通配符,参数parallel并行度

数据库监控:

监控作业的主要视图:

dba_datapump_sessions,在执行任务的时候监控前台进程的会话.

dba_datapump_jobs,监控在作业上有多少个工作进程(degree列)在工作.

也可以通过alert日志文件查看到进程的信息.

处理特定对象:

e.g

只导出存储过程,而不导出其它对象:

expdp scott/tiger directory=dumpdir dumpfile=pros.dmp include=PROCEDURE

只导出一些特定的对象(比如函数FUNC1和过程PROC1)

expdp scott/tiger directory=dumpdir dumpfile=pro_fun.dmp include=PROCEDURE:”=’PROC1’”,FUNCTION:’=’FUNC1’”

全库导出:

expdp system/sys directory=dumpdir dumpfile=full.dmp full=y job_name=expdpfull logfile=full.log//全库导出

//使用Ctrl+c 可以退出交互模式,但是expdp操作不会停止,因为expdp是数据库内部定义的任务已经与客户端无关。退出后可以查看其导出状态

Export> status

可以使用stop_job命令真正停止该操作。

expdp导出的时候取的是客户端的时间,而导入完成取的是服务器端的时间,应该算是个bug。

问题:

如果发现执行在语句正确,但是导出失败,报错误:

C:>expdp scott/tiger@ora10g dumpfile=scott.dp directory=dumpdir schemas=scott l

ogfile=scott.log

Export: Release 10.2.0.3.0 - Production on 星期四, 18 12月, 2008 14:05:46

Copyright (c) 2003, 2005, Oracle. All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

ORA-39002: 操作无效

ORA-39070: 无法打开日志文件。

ORA-29283: 文件操作无效

ORA-06512: 在”SYS.UTL_FILE”, line 475

ORA-29283: 文件操作无效

则说明创建的目录有问题,在这里dumpdir的目录在实际物理空间不存在。应该查看select * from dba_directories;查看一下dumpdir对应的目录是否存在。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值