oracle数据库的方式有很多种,今天我们只介绍expdp、impdp数据泵方式的导入与导出数据库,也就是我们通常所说的oracle数据的还原/备份。这种方式可以导出/导入数据库表以及表中的数据。
简单来说数据库导入就是将.dmp 格式文件从本地导入到数据库服务器中,数据库导出就是将服务器上的数据导出到本地生成.dmp格式文件。
一、数据库导出
1.打开DOS命令行界面,使用system用户登录oracle
2.创建备份逻辑目录
创建备份逻辑目录,此目录不是真实的目录(单引号里面的内容是备份的目录,可以先查看一下所有的目录:select * from dba_directories;)
SQL>create or replace directory data as 'E:\app\Administrator\admin\orcl\dpdump';
3.导出数据库
进入DOS命令行界面,执行下列命令导出数据库
SQL>expdp bpmdef_xsmd/123456@orcl directory=data dumpfile=JEECG_20180226.DMP schemas=bpmdef_xsmd
解读:
directory是创建备份逻辑目录(上面第二步)
dumpfile:导出的文件名,存放于directory目录里
schemas:用户名
4.查看导出的文件

二、数据库导入
1、创建表空间和用户
SQL>CREATE TABLESPACE BPMAPP_XSMD DATAFILE 'E:\oracle\oradata\orcl\BPMAPP_XSMD.DBF'
size 1024M autoextend on next 100M;
SQL>create user SYS identified by 12345 DEFAULT TABLESPACE SYSTEM ;
2.给用户授权
SQL>GRANT DBA,RESOURCE,CONNECT TO SYS ;
SQL>GRANT CREATE VIEW TO SYS WITH ADMIN OPTION;
注:dba为最高级权限,可以创建数据库,表等。
3.进行导入DOS命令行执行下列命令
impdp 用户名/密码@orcl dumpfile=bpmapp_xsmd_20191206.dmp remap_tablespace=A:B remap_schema=A:B table_exists_action=replace
解读:
dumpfile是导出的文件名
remap_tablespace:导出的表空间A:导入的表空间B
remap_schema:导出的用户A:导入的用户B
table_exists_action=replace:如果导入的表已存在,就将其覆盖掉
三、知识扩展
1.删除dbf文件方式
select * from user_tablespaces;
DROP TABLESPACE 表空间名称 including contents and datafiles cascade constraint;
2.查询锁表
SELECT a.object_name,b.session_id,c.serial#,c.program,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;
3.查询表空间使用情况 单位MB
select a.tablespace_name,
a.bytes 1024 1024 "sum MB",
(a.bytes - b.bytes) 1024 1024 "used MB",
b.bytes 1024 / 1024 "free MB",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%"
from (select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by ((a.bytes - b.bytes) / a.bytes) desc;
4.查询oracle当前连接数
select count(*) from v$process
5.数据库允许的最大连接数
select value from v$parameter where name = 'processes'




