备份数据库的expdp语句_银⾏业OracleRAC数据库迁移经验
分享
引⾔
在银⾏业中,数据是⽣命、是⾦钱、是最重要的资产,因此数据库运维⼯作更是IT运维中的重点。在数据库⽇常管理中,数据迁移是⼀项极为重要的⼯作。迁移不仅要保证数据完整性,还要确保业务连续稳定运⾏,是⼀项极其庞⼤,需要精细调整和综合运⽤技术⼿段的⼯程。
近期我们迁移了多套⽣产环境,积累了较为丰富的经验,⽽“⼤鹏之动,⾮⼀⽻之轻也;骐骥之速,⾮⼀⾜之⼒也”,在此分享给各位业界同仁,欢迎⼤家留⾔讨论,共同夯实数据库运维管理之基⽯!
● 背景●
我⾏随着业务的指数增长,某重要应⽤数据库服务器硬件性能已经不能满⾜业务需求,需要将该数据库迁移到⾼性能服务器上。
Oracle数据库常⽤迁移⽅式及适⽤场景包括以下五种:
1. 物理迁移
有停机窗⼝且源端⽬标端的平台相同的情况下,可通过拷贝数据⽂件、控制⽂件、⽇志⽂件、参数⽂件等到⽬标服务器对应⽬录下,可直接打开数据库。
2. 数据泵迁移
有停机窗⼝情况下,可通过expdp/impdp的⽅式迁移数据库。对平台⽆要求。
3. DG迁移
在停机时间短且源端⽬标端的平台相同的情况下,采⽤DG⽅式,通过DG切换的⽅式迁移。
4. RMAN迁移
在停机时间短且源端⽬标端的平台相同的情况下,采⽤RMAN的⽅式,通过全量恢复和追归档的⽅式迁移。
5. 存储迁移
停机时间短(包括停库、切存储、启库时间)且源端⽬标端的平台、数据库版本相同,通过存储复制或存储切换的⽅式,启动新环境数据库。
待迁移数据库特点:原⽣产数据库有较长停机窗⼝,且在⽣产环境中,因业务属性DML操作较多,并且由于前期配置问题,产⽣过多碎⽚,数据库关联应⽤系统较少。
根据⾏内现有环境现状,初选⽅案是存储复制和数据泵两种。经过对⽐两种⽅案的优缺点,以及结合实际应⽤的特点,最终选择了第⼆种数据泵的⽅式进⾏迁移。此⽅案其在迁移的过程中可以清理⼤量碎⽚,提升数据库整体性能,对后期业务的运⾏能⼒提升有积极的效果,同时移⽅法具有简单、平稳的优势。本⽂中重点介绍数据泵迁移⽅案的过程。同时简单描述存储复制这个备选迁移⽅案的实现过程。
● 流程及操作模板●
数据库迁移流程图
操作模板
主机信息介绍
序号内容原数据库⽬标数据库
1主机名host1/host2newhost1/newhost2 2服务器型号IBM p740IBM p750
3CPU16c20c
4MEM128G256G
5系统AIX6.1AIX7.1
6物理IP192.168.1.1/2192.168.2.1/2
7vip192.168.1.3/4192.168.2.3/4
8scan192.168.1.5192.168.2.5
9DB版本11.2.0.411.2.0.4.190716
10模式RAC RAC
1. 准备阶段
前期准备阶段,需将主机、系统、⽹络、软件及补丁等相关信息准备好,新环境需要按照基线⽂档安装主机系统,并配置相关参数、时区、
DNS、NTP、数据库备份⽬录等;并核实原环境的root密码、各个在⽤⽤户的定时任务及相关脚本;将新环境添加相关监控⼯具。
2. 准备迁移
注意:迁移过程中新系统导⼊⽤户密码和原系统密码保持不⼀致,迁移完成后再进⾏修改,directory名称要保持不⼀致。
拷贝原数据库主机相关⽂件(定时任务脚本、a)到对应新环境主机,并核实a⽂件是否需要修改信息;
应⽤⼈员停⽌应⽤——>停⽌数据库监听——> kill掉应⽤相关会话
检查⽤户连接信息命令:
select inst_id, sid, serial#, username, machine, program, statusfrom v$sessionwhere type = 'USERS'and username in(select usernamefrom dba_userswhere crea kill掉应⽤相关会话命令:
select 'alter system kill session ''' || sid || ',' || serial# || ’,
@’ || inst_id || ‘;''' immediate;' from v$session where type = 'USERS' and username in (select usernamefrom dba_userswhere created >
(select created from dba_users where username = ‘SYSTEM‘) + 1);
修改数据库⽤户密码,⽣成新库下⽤户和DBLINK语句;
修改密码命令:
alter user ⽤户名identified by 密码;
⽣成相关⽤户的密码脚本命令:
select ‘alter user ’ || username || ‘ identified by 密码;
’ from dba_users where username in (
select username
from dba_users
where created >
(select created from dba_users where username = ‘SYSTEM‘) + 1)
order by created;
⽤数据库运维⼯具查询并复制各个迁移⽤户和DBLINK的创建脚本,尤其对⽤户拥有的执⾏权限和directory权限要格外关注。
3. 数据泵迁移
oracle ocp培训对⽐新旧数据库相关启动参数;
创建表空间、相关⽤户并授权、原数据库导出⽬录与新数据库导⼊⽬录并授权;
创建和扩容表空间命令:
create tablespace SCOTT datafile '+ASM_DATA/host/datafile/scott01.dbf' size 30G;
alter tablespace SCOTT add datafile '+ASM_DATA/host/datafile/scott02.dbf' size 30G;
⽣成创建表空间脚本命令:
set lin 200 pages 100
select 'create tablespace ' || TABLESPACE_NAME || ' datafile ''' ||
file_name || ''' size ' || BYTES || ';' from dba_data_files;
创建相关⽤户脚本命令:
select 'create user ' || name || ' identified by values ''' || u.password ||
''' default tablespace ' || default_tablespace ||
' temporary tablespace ' || temporary_tablespace || ';'
from user$ u, dba_users du
where du.username = u.name
ated >
((select created from dba_users where username = 'SYSTEM') + 1)
order ime;
创建对应directory
创建导出⽬录命令:
create or replace directory expdp_dir as '/dmps/backup/expdp';grant read,write on directory expdp_dir to public;
创建导⼊⽬录命令:
create or replace directory IMPDP_DIR as '/dmps/backup/expdp';grant read,write on directory IMPDP_DIR to public;
如⽣产环境后期需备份nfs需要event配置增加以下内容,否则⽆法使⽤nas,提⽰以下报错(ora-39001,ora-39000,ora-31641,ora-27054):
alter system set events='10298 trace name context forever, level 32';
迁移⽤户相关信息;
数据库导出导⼊;
⽤户备份命令(⽤户名称已调整):
expdp system/oracle job_name=scott directory=EXPDP_DIR dumpfile=SCOTT_0608%U.dmp logfile=expscott_0608.log PARALLEL=8 cluster=no SCHEMA ⽤户恢复命令(⽤户名称已调整):
impdp system/oracle directory=IMPDP_DIR dumpfile=scott_0608%U.dmp logfile=impscott_0608.log PARALLEL=8 cluster=no SCHEMAS=scott,monitor 4. 迁移后续⼯作
核实数据库对象;
核实并编译⽆效对象;
编译⽆效对象命令:
@$ORACLE_HOME/rdbms/admin/utlrp.sql
核实数据库中⽆效对象性命令:
select owner, object_type, status, count(*)
from dba_objects
where owner in
(select username
from dba_users
where created >
((select created from dba_users where username = 'SYSTEM') + 1))
group by owner, object_type, status
order by 1, 2;
如存在⽆效对象,可以进⾏⼿动编译:
col object_name for a30
select object_type,object_name from dba_objects where owner='&owner' and status='INVALID';
set serveroutput on
alter &object_type &owner.&objectname compile;
Dblink验证
开启归档并切换归档验证
应⽤验证
5. 存储复制
【此处简单描述存储复制备选迁移⽅案的实现过程】
新环境检查(内存、补丁、集);
识别共享盘,挂载磁盘组;
修改存储盘权限:
lspv | grep hdiskpower | grep -v grep |awk '{split($1,b,"r");if(b[2]>10)print}'|awk '{print $1}' | while read disk
do
chdev -l ${disk} -a reserve_policy=no_reserve;
chmod 660 /dev/r${disk}
chown grid:asmadmin /dev/r${disk}
done
说明:使⽤kfod查看⽼的asm磁盘组(grid⽤户下),新环境使⽤新的ocr、vote磁盘组,原相应磁盘组可以删除。
newhost1[/home/grid]$kfod disks=all ds=true cluster=true status=true
创建相关审计⽬录,拷贝系统层⾯Oracle相关⽂件,修改oracle⽤户下$ORACLE_HOME/bin/oracle⽂
件权限,启动数据库,注册数据库,调整local listener、内存相关、scan name相关参数;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论