关于导入导出数据库全库的流程操作和常见问题解决(小白向)

前言

工作中经常遇到要对数据库导入导出做测试服或者备份数据,本文来详细说一下基本流程来帮助刚参加工作的同志们。
各种小白有各种问题的,比如命令不对,执行不了,路径找不到,参数错误,请看到最后。
然后就是大前提:你自己oracle数据库安装和PLSQL设置没问题

第一步:导出数据库

我一般用以下命令来导出全库

expdp 用户名/密码@数据库地址 schemas=导出用户名 dumpfile=文件名 directory=导出路径

数据库地址,一般是orcl
导出用户名就是你要导的数据在哪个用户下,一般跟前面输用户名密码一样就行
导出文件名自己命名,比如20230228.DMP,必须以.DMP为后缀
导出路径需要自己在数据库创建
创建路径前可以先查看一下

select * from dba_directories--查看数据库现有路径

然后是创建路径

CREATE  DIRECTORY 路径名称 AS '路径文件'; --创建数据库路径

AS 后面的路径自己建立
比如F:\新建文件夹

前置工作做好后就可以用最开始的expdp命令导出全库了。
我写一个样例
expdp scott/scott@orcl schemas=scott dumpfile=20230228.DMP directory=lujing

第二步:导入数据库

这一步一般也是问题最多的一步,我慢慢说
数据导入到另一个数据库前你得先有一个承接这些数据的导入用户吧,所以先创建用户

create user 用户名 identified by 用户密码--创建用户密码
--下面是为你创建的用户赋予一些权限,比如dba和导入导出权限
grant dba to 用户名;
grant connect to 用户名;
grant imp_full_database to 用户名;
grant exp_full_database to 用户名;

用这个命令导入到数据库

impdp 导入的用户名/密码@数据库地址 remap_schema=导出的用户名:导入的用户名 dumpfile=文件名 directory=文件路径

这一步应该没有什么问题了,各种参数含义和导出一样。
然后就是导入时最大的问题:表空间不足
解决方法:
先查看表空间

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;

一般用户默认表空间都是user,所以不足也会是user
表空间实际存放路径在你oracle安装路径下的app\oradata\orcl
比如我是在D:\app\oradata\orcl,里面你会找到个USERS01.DBF的文件,那个就是表空间的实际文件。

增加表空间

--增加USERS表空间
alter tablespace USERS add datafile 'D:\app\oradata\orcl\USERS02.DBF' size 30000M

命令中USERS就是你要增加的表空间名称,只要仅限于本文的操作,一般不用动
datafile 'D:\app\oradata\orcl\USERS02.DBF’这个路径就是刚才让你找的表空间实际路径,写上,并在路径最后加上USERS02.DBF这个文件名。
size:增加表空间大小,30000M就可以了,而且也是默认数据库里数据块的最大大小(数据库默认数据块大小32G,单个表空间文件只能小于它)

结言

好了,数据库导入导出事项基本介绍完毕,剩下一些小问题我写在了结尾。然后应该还有一个问题,导入时有些人可能会报ora-02374,ora-12899这些错。这是因为导入数据库和导出数据库的编码方式不同。这些你就去查资料或者本身数据库卸了重新装,装的时候和导出数据的数据库编码保持一致就行。毕竟本教程是个小白向,小白数据库里又没什么东西,卸了再装也没啥影响。
或者看以后时间,闲了我在写一个编码方式相关的

注意事项

第一点!
不管是导入命令还是导出命令都是在计算机上的cmd命令窗口下,不是在PLSQL里的SQl窗口。我不止一次见过有人在PLSQL里的SQl窗口执行命令,完了还对我说没用。
有且仅有expdp和impdp两个命令在cmd,其他创建路径、用户、权限、表空间都是在SQL窗口

第二点!
关于expdp命令和impdp命令
directory后面写的不是真实路径!不是真实路径!不是真实路径!是路径名称!
就是创建路径时你自己写的路径名称!
相应dmp文件放在路径内然后直接写创建的路径名称

第三点!
复制代码不管用的别懒,自己敲一遍,因为我里面可能是中英文掺着用。中英文标点符号在代码里是不同的

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值