这期内容为使用expdp/impdp进行迁移的一般步骤
分为如下五个部分:
- 源库环境确认
- 目标端操作
- 源库端导出数据
- 目标端导入数据
- 事后检查
1.源库环境确认
1.1 查看数据库用户
代码语言:javascript复制SQL>select * from dba_users;
1.2 查看数据库角色
SQL>select * from dba_roles;
1.3 查看数据库表空间
SQL>select * from dba_tablespaces;
1.4 查看物化视图
SQL>select * from dba_mviews;
1.5 查看物化视图日志
SQL>select * from dba_mview_logs;
1.6 查看job及scheduler
SQL>select * from dba_jobs; SQL>select * from dba_scheduler_jobs;
1.7 查看dblink
SQL>select * from dba_db_links;
1.8 查看其他数据库有无关联
这里查看环境中其他数据库的dblink是否和该数据库有关联
2. 目标端操作
2.1 建立表空间
SQL>CREATE SMALLFILE TABLESPACE "EMAPTBS" DATAFILE SIZE 25G LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; SQL>ALTER TABLESPACE "EMAPTBS" ADD DATAFILE SIZE 25G;
具体查看:
[Oracle 数据库日常操作] 表空间的日常运维命令
2.2 建立角色
没有需要建立的角色
2.3 建立用户和权限
SQL>create user emap identified by emap default tablespace emaptbs ; SQL>create user emaptest identified by emaptest default tablespace emaptbs; SQL>grant connect,resource to emap; SQL>grant connect,resource to emaptest; SQL>grant select on v_$session to emap; SQL>grant select on v_$session to emaptest; SQL>grant unlimited tablespace to emap; SQL>grant unlimited tablespace to emaptest;
2.4 建立dblink(只需建立public用户的)
create public database link MESASSY connect to username IDENTIFIED BY password using '(description=(address=(protocol=TCP) (host=10.65.1.113)(port=1521))(connect_data=(SERVICE_NAME = MESASSY)))';
3. 源库端导出数据
这里使用sys账号进行
3.1 查看数据库目录信息
SQL>select * from dba_directories;
3.2 建立新的目录用于存放导出文件
SQL>CREATE OR REPLACE DIRECTORY dump_dir AS '/oradata/dump';
3.3 导出emap/emaptest用户数据
导出前锁定emap/emaptest账号
SQL>alter user emap acccount lock; SQL>alter user emaptest account lock;
注意oracle 11.2.0.1 之后空表如没有数据则会不导出
请事先找出这些表
新建parfile:expdp_emap.txt
userid='sys/ase_sys_1 as sysdba' job_name=job_emp_emptest_exp directory=dump_dir filesize=15G dumpfile=expdp_emap_%U.dmp logfile=emp_emptest_expdp.log schemas=emap,emaptest parallel=4 content=all
3.4 导出数据
expdp parfile=expdp_emap.txt
4. 目标端导入数据
4.1 查看数据库目录信息
SQL>select * from dba_directories
4.2 建立新的目录用于存放导出文件
SQL>CREATE OR REPLACE DIRECTORY dump_dir AS '/oradata/dump/';
4.3 拷贝expdp文件至该目录
scp expdp_emp_0* oracle@10.65.202.201:/oradata/dump/
4.4 导入emap/emaptest用户数据
新建parfile:impdp_emap.txt
userid='sys/ase_password as sysdba' job_name=job_emp_emptest_imp directory=dump_dir dumpfile=expdp_emap_%U.dmp logfile=emp_emptest_impdp.log schemas=emap,emaptest parallel=4 content=all
导入数据
impdp parfile=exp_emap.txt
5. 事后检查
5.1 检查对象是否迁移完成
参见Python脚本
[Python程序]数据库迁移比对小工具
5.2 检查对象是否失效
检查如下对象是否失效
- 物化视图
- Job及scheduler
- Procedure
- Package等等
5.2 新环境参数检查
检查如下参数是否和源库一致或设置合理(不保证全面)
- sga
- pga
- PROCESSES
- SESSIONS
- case_sensitive
- deffer_creation_segement
- open_cursor
- job_queue_processes