数据库导入导出expdp,impdp
数据库操作
(1)数据库导入导出expdp,impdp
在导入导出数据库的时候,经常会用到exp和imp,在数据量小的情况下可以随意使用,但是当数据量大,表中数据有百万,千万条的时候,就要等好久好久好久。。
oracle官方肯定也考虑到了这样的问题,于是出现了expdp和impdp,这是oracle 10g版本出的一个新功能,使用数据泵导入导出数据,据官方推荐说使用数据泵导入导出会比普通的导入导出快十倍,可以说是非常强大了。
首先连接到数据库,使用cmd执行以下命令
sqlplus /nolog
conn / as sysdba
数据库泵的步骤(以下是在数据库所在的电脑上操作)
导出数据
- (a)创建DIRECTORY
即在数据库所在电脑上创建一个文件夹,用来存放导出的dmp文件
create directory expdp_dmp as 'F:/dmpfile'
- (b)授权
给当前数据库用户赋予读写文件的权限
grant read,write on directory expdp_dmp to salespa;
查看权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
- (c)执行导出
expdp SALESPA/SALESPA@SALESPA directory=expdp_dmp dumpfile=salespa.dmp
导入数据(DOS窗口中执行)
impdp E43001/E43001 directory=expdp_dmp dumpfile=salespa.dmp remap_schema=salespa:E43001 transform=OID:N
REMAP_SCHEMA 该参数的含义是将一个用户的的数据迁移到另外一个用户,如上从salespa用户迁移到 E43001用户上。
transform 在导入数据的时候,之前的数据库中可能存在type,把一个Object从一个schema导入到另外一个schema的时候(在同一个数据库上),如果这个OID也保持不变的话,那么就会出现多个Object共享同一个object id的问题,会出现invalid object identifier。
设置transform 参数为OID:N,意思是新创建的表或这个类型会赋予新的OID,而不是dmp文件中包含的OID的值。
参考博客地址:
数据库导入导出exp和expdp以及imp和impdp的区别
ORACLE EXPDP命令使用详细
ORA-02304: ORACLE导入TYPE
(2)cmd执行sql文件
往数据库中插入数据量较大时,例如几万,十几万条的时候,使用PLSQL工具的时候就会卡死。这里就要在命令行中执行sql语句。
//1.首先连接到要连的数据库 192.168.xxx.xxx为数据库所在ip地址
sqlplus scott/scott@orcl
or
sqlplus scott/scott@192.168.xxx.xxx:1521/orcl
//2.@+“sql文件放置的路径”
SQL> @C:\people.sql
(3)查看Oracle数据库表空间的使用率
SELECT C.TABLESPACE_NAME,
A.BYTES / 1048576 MEGS_TOTAL,
(A.BYTES - B.BYTES) / 1048576 MEGS_USED,
B.BYTES / 1048576 MEGS_FREE,
(A.BYTES - B.BYTES) / A.BYTES * 100 PCT_USED,
B.BYTES / A.BYTES * 100 PCT_FREE
FROM (SELECT TABLESPACE_NAME,
SUM(A.BYTES) BYTES,
MIN(A.BYTES) MINBYTES,
MAX(A.BYTES) MAXBYTES
FROM SYS.DBA_DATA_FILES A
GROUP BY TABLESPACE_NAME) A,
(SELECT A.TABLESPACE_NAME, NVL(SUM(B.BYTES), 0) BYTES
FROM SYS.DBA_DATA_FILES A, SYS.DBA_FREE_SPACE B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
AND A.FILE_ID = B.FILE_ID(+)
GROUP BY A.TABLESPACE_NAME) B,
SYS.DBA_TABLESPACES C
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
AND A.TABLESPACE_NAME = C.TABLESPACE_NAME
ORDER BY 6;
查看所有表空间大小
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
手动修改表空间的大小
查看表空间的目录
select * from dba_data_file
更改表空间的大小为30G
alter database datafile 'E:\APP\LABOGUEST\SALESPA\SALESPA_INDEX.DBF' resize 30720
(4)ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝
- 创建访问控制列表
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'email_server.xml', --这里为任意的文件名,用于删除时标识
description => 'ACL for 123.125.50.112',
principal => 'PRODUCE', --此为将来要进行操作的用户
is_grant => TRUE,
privilege => 'connect');
END;
- 将用户或角色添加到访问控制列表中
BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
acl => 'email_server.xml', --和创建访问控制列表中的acl名相同
principal => 'PRODUCE', --要添加的用户
is_grant => TRUE,
privilege => 'resolve');
END;
- 给网络分配访问控制列表(ACL与邮件服务器相关联)
BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'email_server.xml', --和创建访问控制列表中的acl名相同
host => '123.125.50.112', --主机名,域名,ip地址或分配的子网
lower_port => '25',
upper_port => NULL);
END;
- 查询创建的ACL
SELECT host, lower_port, upper_port, acl FROM dba_network_acls;
SELECT acl,
principal,
privilege,
is_grant,
TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
FROM dba_network_acl_privileges;
- 删除ACL
BEGIN
DBMS_NETWORK_ACL_ADMIN.drop_acl(acl => 'email_server.xml');
COMMIT;
END;
(5)解锁被锁的表
在调试程序的时候,有时debug忘记点结束,又去数据库中操作表,很有可能会造成锁表,无法对该表进行操作。以下是查看被锁的表和解锁表的语句。
select a.object_name,b.session_id,c.serial#,c.username,c.command,c.machine,c.lockwait
from all_objects a,v$locked_object b,v$session c where a.object_id=b.object_id and c.sid=b.session_id;
alter system kill session'SID,serial# ';
数据库导入导出expdp,impdp的更多相关文章
- oracle数据库导入导出方法
Oracle Database 10g以后引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中. 数据泵导出导入(E ...
- oracle11g数据库导入导出方法教程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xinxiaoyonng/article/ ...
- MYSQL数据库导入导出(可以跨平台)
MYSQL数据库导入导出.sql文件 转载地址:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html 本人总结:直接复制数据库, ...
- Oracle数据库——常用命令(用户管理、数据库导入导出)
--==cmd控制台==-- --==日常用户管理SQL==-- --连接到SQLPLUS >sqlplus /nolog --以dba身份连接 sql>conn / as sysdba ...
- oracle数据库导入导出命令!(转)
oracle数据库导入导出命令! Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成 ...
- JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...
- Mysql:数据库导入导出
Mysql:数据库导入导出 Mysql数据库导出 mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名 1.mysqldump是在cmd下的命令,需要在linux命令行 ...
- 180620-mysql之数据库导入导出
文章链接:https://liuyueyi.github.io/hexblog/2018/06/20/180620-mysql之数据库导入导出/ mysql之数据库导入导出 实际工作中,需要做一下数据 ...
- expdp impdp 数据库导入导出命令详解
一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建.create directory dpdata1 as 'd:\test\dump'; 二.查看管理理员目录(同时 ...
随机推荐
- 多个SpringMVC项目配置统一管理(来自于springCloud的统一配置思路)
因公司项目分多个系统进行开发,而系统架构几乎完全一样,所以同样的配置文件会存在不同的系统中 当其中的某些配置需要修改时,就需要依次把所有系统中相关的配置都修改掉 纯耗时且没技术含量的体力活 所以借鉴S ...
- 用.NET WebService Studio调试Web Service解决SOAPAction的问题
话说是这样的,这两天开发一个短信发送功能,客户给了一个 Web Service 地址(没有文档),让我调用就可以发送了, 我在VS 2013添加了服务引用,一切正常,可是执行代理方法时,怎么都报错 R ...
- win下wamp虚拟主机配置
第一步:在http://www.wampserver.com/网站上下载Wampserver,可以根据计算机的版本(32位或者64位)下载对应的版本 第二步,傻瓜式安装(直接点击下一步,下一步就好). ...
- [LeetCode]640解方程式
问题描述: 示例 1: 输入: "x+5-3+x=6+x-2" 输出: "x=2" 示例 2: 输入: "x=x" 输出: "In ...
- 机器人之路的第一小步:录音+语音识别(语音转文字),大小600K(免费下载)!
机器人之路的第一小步:录音+语音识别(语音转文字),大小600K,本人出品! 机器人之路的第一小步:录音+语音识别,准确率还不是特别高,不过普通话标准的话,识别准确率还是不错的,大家可以体验一下,请下 ...
- 封了1000多个IP地址段,服务器现在坚如磐石,对付几个小毛贼还是很轻松的
封了1000多个IP地址段,服务器现在坚如磐石 root登陆权限取消,防火墙装上,关闭所有没必要的端口,外层加装路由器映射, 修改常用端口,将常用端口改成陷阱程序,只要访问我这些陷阱端口,程序直接dr ...
- vue中请求本地的json数据
为什么要请求本地的数据?模拟后台的请求数据,验证页面的逻辑是否存在问题,抛开后台提前开发等. 常用的说来有:jq的方式 约等于 axios的方式,vuex状态管理的方式 个人认为最好用的就是jq的方式 ...
- gvim配置相关
用 vundle 来管理 vim 插件(包含配置文件vimrc和gvimrc) gvim插件管理神器:vundle的安装与使用 Vim插件管理Vundle Linux 下VIM的配置 Vim配置系列( ...
- tensorflow进阶篇-4(损失函数3)
Softmax交叉熵损失函数(Softmax cross-entropy loss)是作用于非归一化的输出结果只针对单个目标分类的计算损失.通过softmax函数将输出结果转化成概率分布,然后计算真值 ...
- Android:异步处理之Handler+Thread的应用(一)
前言 很久很久以前就听说了,每一个android的应用程序都会分别运行在一个独立的dalvik虚拟机进程中,而在每个虚拟机在启动时会运行一个UI主线程(Main Thread),而为啥叫UI主线程而不 ...