注意:为避免影响用户正常使用,请等待系统发布停机公告后进行操作。
1、停应用:跟业务人员确认,当前无用户进行业务操作
ps -ef | grep 中间件名称
kill -9 进程id
2、停止数据库监听
lsnrctl stop
3、kill掉当前已连接用户
select 'alter system kill session '''||sid||','||serial#||''';' username,status from v$session where username='用户名';
4、导出备份原来的数据,并检查其完整性
#空间充足的话导出全表数据
nohup expdp 用户名/密码 directory=要导出的路径 dumpfile=%U.dmp文件(自己命名 %U配合parallel使用,分割为parallel份文件,每份文件%U从01自增至parallel设置数) logfile=.log(日志文件) parallel=分割份数 cluster=N(是否多实例Y为是,N为否) &
#只导出LOG表数据:
nohup expdp 用户名/密码 directory=文件夹路径 dumpfile= xxx.dmp logfile= xxx.log TABLES= LOG cluster=N &
#导出除LOG表之外的其他表数据
nohup expdp 用户名/密码 directory=文件夹路径 dumpfile=xxx%U.dmp logfile=xxx.log
EXCLUDE=TABLE:\"IN\(\'LOG\')\"\ parallel=8 cluster=N version=11.2 &
5、删除导入服务器上原表空间,原用户
DROP tablespace 表空间名 including contents and datafiles cascade constraint;
导入数据时需要确认,空间是否够用,一般保留400G空间,若存储够,可不进行此操作。
6、创建用户并赋权
#创建500G的表空间
create bigfile tablespace 表空间名称 datafile '+DATADG' SIZE 500g AUTOEXTEND ON;
##创建用户并指定表空间
create user 用户名
identified by 密码 --(必须设置密码)
default tablespace 表空间名
--(指定表空间)
temporary tablespace TEMP
profile DEFAULT;
##赋权
grant execute on CTXSYS.CTX_DDL to 用户名;
grant connect to 用户名;
grant dba to 用户名;
grant create any index to 用户名;
grant create procedure to 用户名;
grant create sequence to 用户名;
grant create session to 用户名;
grant create synonym to 用户名;
grant create table to 用户名;
grant create trigger to 用户名;
grant create type to 用户名;
grant create view to 用户名;
grant unlimited tablespace to 用户名;
8、导入原来的数据(import),并检查准确性
nohup impdp 用户名/密码 directory=dmp文件所在目录 dumpfile=.dmp文件(dmp文件,根据具体文件变化) logfile=.log文件(日志文件,可随意命名) remap_schema=导用户名:要导入的用户名 remap_tablespace=导出表空间名:要导入的表空间名 table_exists_action=replace transform=segment_attributes:n parallel=8(导入文件数量) cluster=N &
## 例如
nohup impdp 用户/密码 directory=im_qas dumpfile=EXP-20200306_%U.dmp logfile=IMP-20200306.log remap_schema=用户1:用户2 remap_tablespace=表空间1:表空间2 parallel=8 cluster=N exclude=statistics &
9、启数据库监听,并使用plsql进行连接测试
lsnrctl start
10、对导入的数据问题处理
主要涉及方法,存储过程,包,包体,视图等。一般重新编译,具体问题具体分析
11、数据的脱敏处理
注意:
一、导入导出期间停止工作进程
1、查看备份JOB
select job_name,state from dba_datapump_jobs;
2、在退出导出监视界面后,可以通过下面语句重新打开expdp界面
expdp system/system2019 ATTACH=SYS_EXPORT_SCHEMA_09;
输入用户名和密码
3、结束job(EXPORT/IMPORT)通用
Export> kill_job
4、修改正在执行导入操作的impdp并行度,提高导入效率
impdp uname/password attach=SYS_IMPORT_SCHEMA_01
回车,可以查看该任务的详细情况。
import > parallel = 20
回车,可以直接修改并行度,指同时有20个dmp文件在执行导入操作,默认并行度为1
import> exit ---回车
exit直接退出impdp的命令交互模式
二、数据库导入导出版本不一致
-
使用查看文本的软件(如notpad ++)打开导出的dmp文件,查看头部标识,发现其头部标识为V12.2.0.1
-
发现两者版本不一致,故将导出的dmp文件头部标识改成oracle版本一致。将V12.2.0.1改为V11.2.4
-
再执行导入语句就不会报错了