Oracle导出导入数据库
目录
Oracle导出导入数据库
Oracle导出导入数据库
记录oracle数据库导入导出的执行过程–2019年11月13日
一、Oracle数据库导出
1.1、查询地址
查询数据库配置的地址
select * from dba_directories;
1.2、导出
进入Oracle服务器,打开CMD,运行导出命令。
语法:
--语法
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 可以不带上)
示例:
- 本人登录Oracle的用户信息:
2、执行SQL语句:
select * from dba_directories;
- 得到地址信息:
我选择将导出文件保存在 G:\app\Administrator/admin/credit/dpdump/ 目录下,所以选择的file_save_address为 DATA_PUMP_DIR ,这个地址是Oracle服务器所安装的主机中的地址。
- 在Oracle服务器所安装的主机上运行CMD命令
导出mydb用户下的数据库,并将地址保存在DATA_PUMP_DIR 目录下,导出文件名为mydb20191113_expdp.dmp ,导出的日志文件为mydb20191113_expdp.log,Oracle数据库版本为11.2.0.1.0
--示例
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
- 注意:
DATA_PUMP_DIR 是在Oracle管理工具中执行SQL语句后的地址信息中有一条地址名称。
二、Oracle数据库导入
2.1、查询用户名
查询需要导入的数据库的用户名是否存在,如果不存在需要创建用户、创建表空间,创建好之后,再执行导入数据库操作;如果用户存在则直接执行导入数据库操作。
select * from dba_users;
2.2、创建用户、表空间
查询Oracle地址
在执行创建用户、表空间之前,我们需要知道表空间的创建的地址,继续使用查询地址SQL(在需要导入的数据库中执行),查看Oracle的地址。
select * from dba_directories;
继续使用导出时的Oracle数据库:
语法:
--创建表空间
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。
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;
2.3、导入数据
- 首先将需要导入的数据库文件复制到Oracle的一个地址目录下;
- 执行CMD导入命令。
语法:
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用户下。
impdp qydj/1 directory=oracle_address dumpfile=mydb20191113_expdp.DMP remap_schema=mydb:qydj remap_tablespace=mydb:qydj logfile=qydj20191113.log
注意:
我们在导入的时候可能会报用户名已存在,视图、存储过程报错(已编译,但有警告),这些是没关系的,这些可能是我们的视图、存储过程跨用户查询了数据。