Oracle 导入导出--and一些知识,备忘
本来以为很简单的就imp和exp就欧了,结果各种状况百出,百度了老多,学到好多东西。
你的导出:exp yc/yc@orcl flie=d:/expdat.dmp log=d:/explog.log full=y
buffer=100000000
用户名/密码 文件=绝对地址 日志=地址 全部=y/n 缓存大小
你的导入:imp yc/yc@orcl file=F:/directory/expdat.dmp
log=F:/directory/implog.log fromuser=yczfw ignore=Y buffer=100000000
看日志解决问题很重要。
-------------------------
[from]oracel数据导出导入 - StarkSoft - 博客园
http://www.cnblogs.com/starksoft/p/5009805.html
一、导出模式(三种模式)及命令格式
1、 全库模式
exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log
2、 用户模式(一般情况下采用此模式)
exp 用户名/密码@网络服务名 owners=(用户1,用户2,用户3,…) file=路径\文件名.dmp
log=路径\文件名.log
3、 表模式
exp 用户名/密码@网络服务名 tables=(表名1,表名2,表名3,…)file=路径\文件名.dmp
log=路径\文件名.log
4、 另外,还可以只导出某个表空间
exp 用户名/密码@网络服务名 tablespaces=(表空间1,表空间2,表空间3,…) file=路径\
文件名.dmp log=路径\文件名.log
二、导入模式(三种模式)及命令格式
1、 全库模式
imp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\ds110.log
2、 用户模式(一般情况下采用此模式)
imp 用户名/密码@网络服务名 file=路径\文件名.dmp fromuser=导出的用户名 touser=导
入的用户名 log=路径\ds110.log
3、 表模式
imp 用户名/密码@网络服务名 tables=(表名1,表名2,表名3,…)file=路径\文件名.dmp
fromuser=导出的用户名 touser=导入的用户名 log=路径\ds110.log
4、 另外,还可以只导入某个表空间
imp 用户名/密码@网络服务名 tablespaces=(表空间1,表空间2,表空间3,…) file=路径\
文件名.dmp fromuser=导出的用户名 touser=导入的用户名 log=路径\ds110.log
----------------------
出现问题及解决 集锦
1.解决Oracle 11g在用EXP导出时,空表不能导出
http://www.cnblogs.com/live365wang/p/4482585.html
(1)11g,可以考虑用expdp/impdp
(2) 解决方法:
1、先查询一下当前用户下的所有空表
select table_name from user_tables where NUM_ROWS=0;
2、用以下这句查找空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
把查询结果导出,执行导出的语句
-----------
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
Select 'alter table '||table_name||' allocate extent;' from user_tables where
num_rows=0;
spool off;
-----------
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
--------------------
alter table AQ$_AQ$_MEM_MC_H allocate extent;
alter table AQ$_AQ$_MEM_MC_G allocate extent;
alter table AQ$_AQ$_MEM_MC_I allocate extent;
……
alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;
查看sql文件,去掉.sql文件里的 SQL>语句,只留sql语句,执行SQL;SQL>@ C:\allocate.sql
3、然后再执行
exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log 成功!
2.
在6楼的提醒下,经过观察和上网查询,确实如6楼所说,在oracle11g中如果表为空,是不 会导出到dmp文件中: 我这这样解决的
1). 利用PL/SQL Developer 中的 Reports > Objects > Tables 分析工具,可以通过 Num Rows 查看到记录为 0 的表
2). 在 PowerDesigner 中建立逆向工程,选中刚才的表,执行测试数据的插入,然后再执行删除旧记录的操作,就使数据库完成了给表分配数据段的工作,就可以正常导出了。
提示: 第一步分析表的功能,建议在服务不忙时再做,因为我们在执行完这个命令后,应用突然连接不上数据库了,后来查询得知,引用如下内容
“对表和索引的分析也需要占用系统资源,可能会影响到其他事务的运行。”
“一些数据量小的数据表(数据字典表)就没有必要进行分析,对于一些数据量频繁变化的数据表倒是有必要经常进行分析,避免对执行计划的影响。”
重起服务后,就可以了
执行如下命令 alter system set deferred_segment_creation=false; 执行后,新建
的表,即使数据为空,也会被导出了(旧表不起作用)
3.
假设在数据库实例中还有bbb、ccc、ddd用户;数据库还有ora、oracl实例,加full=y
和不加有什么区别?
key:
full=y默认是禁止的。
1.如果加上“full=y”,将整个数据库全部导出,需要特殊的权限(具体什么权限没研究过
),一般用system用户就足够了,普通用户是不可以的
2.不加“full=y”,默认导出连接数据库的用户数据库对象,比如:exp aaa/abc@oracle
file=a.dmp,导出aaa模式下的所有数据库对象,bbb用户的数据就不会导出来
3.你说的有多个用户,可以使用system来指定导出哪个用户的数据库对象,比如:exp
aaa/abc@oracle file=a.dmp owner=(bbb,ccc),普通用户是不可以指定owner的
4.数据有多个实例的情况,这个要看你“@”后面是什么,如果@oracle,则在oracle实例上
进行导出,@ora,则在ora实例上进行导出
4.
?oracle 一个用户如何分配2个表空间。具体怎么操作?
key:
alter user aaa
quota unlimited on inx
quota unlimited on tb;
如果要想更改用户在表空间的配额的话: alter user user_name quota size on
tablespace_name
其中size可以是诸如‘32M’,‘2G’,‘unlimited‘ 等 unlimited 就是没有限制的
1、一个用户只能属于一个表空间
2、同一个数据库用例中,用户名是不能重复的
3、不同用户中可以创建同名的表
4、表空间创建后需要创建用户后才能使用,因为任何数据库对象都需要建立在一个数据用户上
5、连接dba权限的用户可以直接访问其他用户的数据库对象,否则需要相关用户授权
6、访问其他用户的数据库对象是时需要加上对象所属用户的用户名
/*第1步:创建临时表空间 */
create temporary tablespace user_temp
tempfile 'D:\oracle\oradata\Oracle9i
\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management
local;
/*第2步:创建数据表空间 */
create tablespace user_data
logging
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第3步:创建用户并指定表空间 */
create user username identified by password
default tablespace user_data
temporary tablespace user_temp;
/*第4步:给用户授予权限 */
grant connect,resource,dba to username;
5.
oracle备份空表数据时候报错
即将导出 yc 的表通过常规路径... . . 正在导出表 DEF$_AQCALL EXP-00008: 遇到
ORACLE 错误 6550 ORA-06550: 第 1 行, 第 19 列: PLS-00201: 必须声明标识符
'SYS.DBMS_DEFER_IMPORT_INTERNAL'
key:
查看一下对象SYS.DBMS_DEFER_IMPORT_INTERNAL是否存在
select object_type,object_name from dba_objects where object_name like
'DBMS_DEFER_IMPORT%';
存在的可能性比较大
如果存在,应该是你导出时那个用户权限丢失了,你需要给他们权限,假设你导出是用yc用户
grant exp_full_database to yc;
grant execute on SYS.DBMS_DEFER_IMPORT_INTERNAL to yc;
再重新导出试一下
我觉得你导出时用的
不是yc用户
======== 其他知识 汇总===========
exp/imp buffer大小设置的问题:buffer_size = rows_in_array * maximum_row_size
key:
就是起到批量提交的作用
表的行数*最大一的行所占字节
一般如实比较大的dmp,需要设定一下,一般100m左右
现在更多使用的是expdp即数据泵方式,客户端的exp方式已经不再适应多用户迁移。
追问
用expdp导出整个数据库也会停在
‘处理对象类型DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ’。
EXPDP USERID='system/manager@TEST as sysdba' directory=DATA_PUMP_DIR
dumpfile=daochu.dmp parallel=4 full=y
expdp/impdp 20G的库 恢复就得快30-40分钟。
exp 500M,用了10分钟。
exp 用户名/密码@地址:端口/实例名
查询ORACLE数据库名:SQL> select name from v$database。
查看实例名:SQL> select instance_name,host_name from v$instance。
查看exp卡住等待:
select sid,event,p1,p2,p3 from v$session_wait where sid='exp会话'
-------------
需要使用有DBA权限的用户,用如下语句查询:
查找用户默认的表空间
select username,default_tablespace from dba_users;
设置默认的表空间的语法如下:
alter database default [temporary] tablespace tablespace_name;
如果使用temporary关键字,则表示设置默认临时表空间;如果不适用该关键字,则表示设
置默认永久性表空间。
修改用户默认表空间
alter user 用户名 default tablespace mytds01表空间名
-------------
查看表空间是否存在
select tablespace_name from dba_tablespaces where tablespace_name="YCWS"
系统用户才能查表空间的
select name from v$tablespace;
知道表名,查看该表属于那个表空间
select tablespace_name,table_name from user_tables where table_name='emp'
好多sql 用什么查什么就欧了
====================
参考:
1.oracle权限全集 http://blog.itpub.net/29863023/viewspace-1327586/
2.如何彻底删除Oracle数据库,以创建相同实例名称的库
http://blog.itpub.net/7192724/viewspace-1228347/
3.用exp_imp远程操作数据库,附帶Oracle数据导入导出imp/exp詳解
http://blog.csdn.net/heirenheiren/article/details/10199233
4. oracle IMP EXP的技巧,和解决IMP-00003: 遇到 ORACLE 错误 1435 ORA-01435: 用户不存在
http://blog.csdn.net/johnstrive/article/details/5483571
5.imp时候,只导入某表的表结构,而不导入此表数据
http://biancheng.dnbcw.info/oracle/149103.html
6.ORACLE EXP IMP 导入导出数据 解决如何导出空表
http://blog.csdn.net/yudehui/article/details/8078294
7.oracle11g Exp Imp 后,发现表少了很多
http://bbs.csdn.net/topics/360025948
Oracle 导入导出--and一些知识,备忘的更多相关文章
- ORACLE导入导出数据dmp
imp testwms3/isc@TESTGMMC FILE=C:\ZKGL_201407012334.dmp ignore=y fromuser=GMMCZKGL touser=testwms ta ...
- Oracle导入导出之dmp
Oracle导入导出有两种方式,分别是imp/exp与impdp/expdp. 1.imp/exp exp scott/tiger file=d:\test.dmp log=d:\test.log o ...
- 项目中oracle存储过程记录——经常使用语法备忘
项目中oracle存储过程记录--经常使用语法备忘 项目中须要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.当中原表之中的一个的日期字段 ...
- oracle导入导出功能
1.普通版:oracle导入导出功能:导出exp 用户名/密码@SID file=f:\xx.dmp owner=用户名 导入imp 用户名/密码@SID full=y file=f:\xx.dmp ...
- oracle导入导出 dmp文件
oracle导入导出 dmp文件: 打开cmd窗口,在cmd窗口下,按照个人需要输入以下对应的命令: 1.imp 用户名/密码@网络服务名 file=XXX.dmp fromuser=XXX tous ...
- oracle导入导出操作
1,获取oracle导入导出帮助: imp help=y 2,导出命令 exp 用户名/密码@数据库实例 file=文件路径名 如: exp sys/password@orcl file=d:\dat ...
- JVM内存知识备忘
又是一篇备忘... 主要记录一些知识,进行一些资源的汇总. 先来群里liufor大大提供的两张图,清晰易懂: Dockerized Java https://www.youtube.com/watch ...
- Oracle导入导出
Oracle 10g 已经引入了数据泵(点击Data Dump)技术,这项技术和之前的exp/imp有哪些好处呢,简单的来说就是恢复和备份速度非常快: 在说明数据泵的使用方法之前,我们先来了解二者的区 ...
- Oracle导入导出dmp文件
目 录 目 录...3 1 说明...3 2 导出dmp文件...3 3 导入dmp文件...5 3.1 环境准备...5 ...
随机推荐
- Dedecms有效防止采集的两个实用办法
现在的采集真是无处不在,尤其是对一些原创性站点,真是烦透了这些采集的人们,如何预防和防止采集呢,站长们!今天先说一下dedecms防采集的办法. 1.随机模版 方法:你多复制N多模版,在body标记附 ...
- jquery 跨域访问问题 转
http://zld406504302.iteye.com/blog/1677937 服务器,jsp <%@ page language="java" contentType ...
- JSON格式化与serialize序列化
一.JSON格式化 1. JSON是什么 JSON是一种数据的存储格式,用来沟通客户端Javascript和服务端PHP的交互.我们把用PHP生成JSON后的字符串传给前台Javascript,Jav ...
- Android版本
Android自从3.0版本开始引入了Fragment的概念,它可以让界面在平板上更好地展示 Fragment建议继承android.app.Fragment的包,另外support.v4包主要是 ...
- Linux系统Vsftp 传文件出现 553 Could Not Create File错误的解决方法
解决方法: 登录出现了这个错误提示:553 Could not create file SELinux设置如下 查看SELinux设置 [root@localhost ~]# getsebool -a ...
- Excel表格导入数据
步骤: 1,选择要插入的数据库--右键--任务--导入数据 2,点击下一步,选择数据源,excel文件路径,和版本信息(注:使用2010及以上版本的office,请先将格式转换为03 或07格式的以便 ...
- ios企业应用部署
最近公司要整一套企业内部用的应用,ios版本不上线要求可以随时下载使用,先是申请了企业者开发账号,然后发布应用,部署在自己服务器上供用户下载安装. 第一步:准备好应用相关的东西,基本上就是两个文件,x ...
- sfliter__except_handler4
sfliter源码在vs08中编译 出现 错误error LNK2019: unresolved external symbol __except_handler4 referenced in fun ...
- ROS语音交互(四)接入图灵语义理解
首先程序中会用到Json,curl 安装相应的库 $ sudo apt-get install libcurl3 libcurl4-openssl-dev$ sudo apt-get install ...
- JS技术大全
事件源对象:event.srcElement.tagName event.srcElement.type 捕获/释放:event.srcElement.setCapture(); event.sr ...