Oracle11g数据库导入Oracle10g数据库的方法,oracle常用数据导入导出命令
常用命令
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
2. 从 data_pump_dir 目录 拷贝 dmp 文件 到11g 数据库 data_pump_dir 目录下
3. 创建一个 与导出时 相同的用户,用户名密码相同 赋予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;
4. 再次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目录下
1-3点可以去参考博主的上一篇博客“oracle数据库移植全步骤”,介绍的很详细,这里不再多说。关于第4点,我的10g装在了e:\tools目录下,于是我将aa.dmp文件拷贝到了e:\tools\admin\cucf\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
2010年9月26日
17:46
今天学习了关于oracle10g的导入导出工具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
9. 以下参数应该被设置大点
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对应的目录是否存在。
推荐阅读
-
用Navicat for MySQL进行数据库的导入导出 图文方法
-
解析PL/SQL Developer导入导出数据库的方法以及说明
-
oracle数据库导入导出命令使用方法
-
用Navicat for MySQL进行数据库的导入导出 图文方法
-
oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
-
Oracle数据库密码重置、导入导出库命令示例应用
-
sql2005 数据库转为sql2000数据库的方法(数据导出导入)
-
Python之csv文件从MySQL数据库导入导出的方法
-
数据库学习其一 oracle11g数据泵导入导出
-
记一次Oracle11g数据库导入Oracle10g数据库操作步骤