Oracle 数据泵方式导出(expdp)导入(impdp)数据,更新数据库
数据泵方式导入(impdp)数据,更新数据库
注1:首先要确定你导出的数据库是用数据泵的方式导出(expdp)的
注2:我是在有安装Oracle数据库的服务器上操作的
1. 查看当前用户所在表空间
- 登入你要删除的库的用户
- 查看当前用户所在表空间
-- 如何查询当前用户的表空间名称?
select default_tablespace from dba_users where username='AUTH_NEW'
2. 管理员的数据库账号密码登录
- 用plsql工具切换管理员账号
- 也可以 直接进入黑窗口 cmd --> sqlplus / as sysdba
/*以管理员身份登录*/
sqlplus / as sysdba
3. 删除表空间、用户
- 先删除表空间(就是步骤1查出的表空间)
drop tablespace AUTH including contents and datafiles;
- 再删除用户
drop user AUTH_NEW cascade;
4.创建表空间、用户、授权
注1:下面这些命令建议都在黑窗口下面敲,在plsql登入的管理员账号下我昨天试了偶尔不太顺利
注2:创建一个用户名/密码和上面删除的一样的就好,这样就不用去改项目里面配置的连接数据库用户密码了;
1.管理员账号登录
cmd ----> sqlplus / as sysdba
2. 创建表空间
create tablespace AUTH datafile 'D:\lmgd\tablespace\AUTH.dbf' size 500M autoextend on next 200M;
create tablespace AUTH -- 表空间名
datafile 'E:\wonders\lmgd\tablespace\AUTH.dbf' --表空间放的路径 路径+文件名
size 500M autoextend on next 200M --表空间的大小,
3. 创建用户
create user AUTH_NEW identified by AUTH_NEW default tablespace AUTH;
4.分配权限
grant dba to AUTH_NEW; -- 用这个最高权限
注:分配最高权限是由于,等会导入数据库的时候怕没有权限,不能导入;
导入(impdp)数据库
5. 建立导入路径(把导出的eamdb.dmp放在此路径下),并授权。
create directory original as 'D:\lmgd\original';
grant read,write on directory original to AUTH_NEW;
- 然后把你按照你创建的目录手动创建一个文件夹;我的就是在 D盘lmm目录下创建一个 original文件夹
D:\lmgd\original
2. 然后再手动把你要导入的数据库 .dmp文件放到、复制到 original文件夹里面即可
6.导入数据库
注:现在重新打开一个黑窗口,不用以 sqlplus管理员的身份登入啦!不然会报错
cmd --> 然后再敲下面的命令
-- 正确的命令
impdp AUTH_NEW/[email protected]:1521/ORCLPDB REMAP_SCHEMA = dbuser:AUTH_NEW table_exists_action = replace directory=original dumpfile=xxxx.dmp
注意:这个 127.0.0.1换成你自己的服务器地址就好,然后dmp文件换成你自己的就好
-- 失败的命令
-- 这个错的 指定文件夹的名字 而不是路径
impdp AUTH_NEW/[email protected]:1521/ORCLPDB REMAP_SCHEMA = dbuser:AUTH_NEW table_exists_action = replace directory=D:\lmgd\original dumpfile=xxxx.dmp
报错整理
1.步骤6直接是以管理员身份登录 sqlplus,再敲导入数据库命令步骤的
报错: SP2-0734:未知的命令开头“IMPDP”
解决:重新打开一个黑窗口(cmd)敲导入数据库命令即可
2.步骤6敲导入数据库时报错
报错:
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-29283: 文件操作无效
原因:
- 没有给用户授权,步骤5有写需要给用户授创建的文件夹的读写权限;
- 检查你的导入命令是否有问题
导出(expdp)数据库
注:记得 cmd--->然后管理员账号登入 sqlplus
/*以管理员身份登录*/
sqlplus / as sysdba
以下简单介绍schema的导出
以schema方式导出生产库用户下所有对象,并导入测试库。
注:eamdb为生产库,eamprd为生产库用户,密码为eamprd
eamuat为测试库,eamprduat为测试库用户,密码为eamprduat
一、生产库的导出(以sqlplus命令行的方式)。
1.以sys或者system用户身份登录生产数据库。
2.创建schema导出路径(DUMP_DIR名称可替换),并在dba_directories中查看
create directory DUMP_DIR as ‘/xxx/xxx’; select * from dba_directories;
3.把导出路径与导出权限授权给eamprd,如果用system等高级帐号导出,则不用。
grant read,write on directory DUMP_DIR to eamprd; grant exp_full_database to eamprd;
4.退出sqlplus,在oracle系统用户下运行,导出对应的SCHEMA,推荐第二种。
expdp eamprd/[email protected] DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp expdp system/[email protected] directory=dump_dir dumpfile=eamdb.dmp schemas=eamprd
导出重点参数:
版本:高往低需加version=xx.x 导出某些张表tables=xxxx content=metadata_only(只要结构) content=data_only(只要数据)
5.把eamdb.dmp拷贝到测试库。
导出直接复制这篇文章的然后导入数据库也有参考这篇COOL:
https://www.cnblogs.com/livebetter/p/9248568.html