Oracle数据库导出

1、查询地址

​ 查询数据库配置的地址

1
select * from dba_directories;

2、导出

​ 进入Oracle服务器,打开CMD,运行导出命令。

语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
--语法
expdp oracle_user_name/oracle_user_pwd@ip:port/ ORACLE_SID directory=file_save_address DUMPFILE=exprot_file_name.dmp logfile=exprot_logfile_name.log REUSE_DUMPFILES = Y version=version_num

--名词解释(这些名词都需要换成个人实际的信息)
--oracle_user_name 数据库用户名称
--oracle_user_pwd 数据库用户密码
--ip ip地址(服务器ip地址,个人登录Oracle时填写的IP,也是数据库的ip地址)
--port 端口号
--ORACLE_SID 数据库实例
--file_save_address 数据库保存路径(是数据库配置地址的别名)
--exprot_file_name.dmp 导出数据库名称(.dmp不能更改)
--exprot_logfile_name.log 导出数据库生成的日志文件名称(.log不能更改)
--version_num 数据库版本 (version=version_num 可以不带上)

示例:

  1. 本人登录Oracle的用户信息:

oracle_login

​ 2、执行SQL语句:

1
select * from dba_directories;
  1. 得到地址信息:

oracle_address

​ 我选择将导出文件保存在G:\app\Administrator/admin/credit/dpdump/目录下,所以选择的file_save_address为DATA_PUMP_DIR,这个地址是Oracle服务器所安装的主机中的地址。

  1. 在Oracle服务器所安装的主机上运行CMD命令

​ 导出mydb用户下的数据库,并将地址保存在DATA_PUMP_DIR 目录下,导出文件名为mydb20191113_expdp.dmp ,导出的日志文件为mydb20191113_expdp.log,Oracle数据库版本为11.2.0.1.0

1
2
--示例
expdp mydb/123456@192.168.168.138:1521/CREDIT directory=DATA_PUMP_DIR DUMPFILE=mydb20191113_expdp.dmp logfile=mydb20191113_expdp.log REUSE_DUMPFILES = Y version=11.2.0.1.0
  1. 注意:

​ DATA_PUMP_DIR 是在Oracle管理工具中执行SQL语句后的地址信息中有一条地址名称。

Oracle数据库导入

1、查询用户名

​ 查询需要导入的数据库的用户名是否存在,如果不存在需要创建用户、创建表空间,创建好之后,再执行导入数据库操作;如果用户存在则直接执行导入数据库操作。

1
select * from dba_users;

2、创建用户、表空间

查询Oracle地址

​ 在执行创建用户、表空间之前,我们需要知道表空间的创建的地址,继续使用查询地址SQL(在需要导入的数据库中执行),查看Oracle的地址。

1
select * from dba_directories;

​ 继续使用导出时的Oracle数据库:

oracle_address

语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
--创建表空间
create tablespace oracle_user_name datafile 'oracle_address/tablespace_name.DBF' size 200m reuse autoextend on next 200m maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
--创建表空间中的用户
create user user_name identified by user_password default tablespace tablespace_name;
--授权
grant dba,connect,resource,create any table,select any table,update any table,insert any table,delete any table ,drop any table to tablespace_name;


--名词解释(这些名词都可以换成自己需要的)
--oracle_address 查询数据库地址时的地址,也是导入文件存放的地址
--tablespace_name 表空间名称
--user_name 用户名
--user_password 用户密码

示例:

​ 我选择在E:/export_dir目录下创建表空间qydj,用户名为qydj,密码为1。

1
2
3
create tablespace NECIPS_ZSTZSB datafile 'E:/export_dir/qydj.DBF' size 200m reuse autoextend on next 200m maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
create user qydj identified by 1 default tablespace qydj;
grant dba,connect,resource,create any table,select any table,update any table,insert any table,delete any table ,drop any table to qydj;

导入数据

  1. 首先将需要导入的数据库文件复制到Oracle的一个地址目录下;

  2. 执行CMD导入命令。

语法:

1
2
3
4
5
6
7
8
9
10
11
impdp  user_name/user_password    directory=EXPORT_DIR  dumpfile=exprot_file_name.DMP   remap_schema=old_schema:new_schema  remap_tablespace=old_tablespace:new_tablespace     logfile=import_file_log.log

--名词解释(这些名词都换成自己实际的内容)
--user_name 刚创建的用户名
--user_password 刚创建的用户的密码
--oracle_address 需要导入的数据库的文件地址(这个地址是在oracle中配置好的,我们将数据库的.dmp文件复制到这个目录下)
--old_schema 模式名称(一般为导入数据库的用户名)
--new_schema 模式名称(一般为刚创建的用户名)
--old_tablespace 表空间(导入数据库的表空间)
--new_tablespace 表空间(刚创建的表空间)
--import_file_log 日志文件(导入操作生成的日志文件)

示例:

​ 将之前导出的数据库导入到上一步创建的qydj用户下。

1
impdp  qydj/1    directory=oracle_address  dumpfile=mydb20191113_expdp.DMP   remap_schema=mydb:qydj  remap_tablespace=mydb:qydj     logfile=qydj20191113.log

注意:

​ 我们在导入的时候可能会报用户名已存在,视图、存储过程报错(已编译,但有警告),这些是没关系的,这些可能是我们的视图、存储过程跨用户查询了数据。

最后更新: 2020年06月02日 09:44

原始链接: http://ligangit.com/2019/11/13/Oracle导出导入数据库/

× 请我吃糖~
打赏二维码