共计 3188 个字符,预计需要花费 8 分钟才能阅读完成。
今天就跟大家聊聊有关如何进行 oracle 数据泵导数据实践,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
需求:
将 zxjfdb2、zxjfdb4 上面的 ocdbhis 库中的用户 OCHIS 整体迁移到 migudb3、migudb4 上面的 migudb2 库。
ocdbhis 与 migudb2 均为 rac 数据库。
步骤:
1. 检查环境:
1)该用户涉及的表空间,保证目标库的表空间包含原库表空间,而且容量充足:
select tablespace_name,sum(bytes/1024/1024/1024) gb from dba_segments where owner= OCHIS group by tablespace_name;
2)临时表空间,确保两边的表空间一致。
SELECT a.tablespace_name TABLESPACE_NAME , a.total TOTAL(MB) , (a.total – nvl(b.used, 0)) FREE(MB) , nvl(b.used,0) USED(MB) , round(nvl(b.used,0) * 100 / a.total, 3) USED_PERCENT(%) FROM (SELECT tablespace_name, SUM (bytes)/1024/1024 total FROM dba_temp_files GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM (bytes_cached)/1024/1024 used FROM v$temp_extent_pool GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name(+);
3)检查 role
select distinct GRANTED_ROLE from dba_role_privs where grantee in (OCHIS) order by 1;
4)检查 profile
select distinct PROFILE from dba_users where username in (OCHIS) order by 1;
5)检查 tnsnames.ora
cat $ORACLE_HOME/network/admin/tnsnames.ora
6)检查 dblink
select * from DBA_DB_LINKS where OWNER in (PUBLIC , OCHIS
7)检查源端与目标端的网络连通,因为需要使用 scp 讲 dmp 文件复制到对端。
8)检查源端与目标端的文件系统是否足够容纳所有的 dump 文件。
9)检查目标端的归档空间是否充足,避免导入期间,归档满。
2. 通知应用同事关闭与 OCHIS 用户相关的应用
3. 将 OCHIS 用户锁上,避免用户数据变化。
alter user OCHIS account lock;
4. 在源库导出数据
1)创建 directory
chmod oracle:oinstall /oratemp
create directory ggdump as /oratemp
2)编写 parfile
##### 按照用户导出
zxjfdb2:/oratemp$cat expdp_ochis.par
userid= / as sysdba
directory=ggdump
dumpfile=expdp_ochis_%U.dmp
logfile=expdp_ochis.log
parallel=8 —- 8 个并行
compression=all —- 压缩
CLUSTER=N
exclude=statistics —- 取消导出统计信息
SCHEMAS=(
OCHIS
)
##### 按照用户导出元数据,供参考
#userid= / as sysdba
#directory=ggdump
#dumpfile=expdp_ich_metadata.dmp
#logfile=expdp_ich_metadata.log
#CONTENT=METADATA_ONLY
#CLUSTER=N
#SCHEMAS=(
#PUBDBA,
#OCHIS
#)
##### 按照表导出纯数据,供参考
#userid= / as sysdba
#directory=ggdump
#dumpfile=expdp_ich_pubdba_data.dmp
#logfile=expdp_ich_pubdba_data.log
#CONTENT=DATA_ONLY
#CLUSTER=N
#TABLES=(
#PUBDBA.ACCNT_AGREEMENT
#PUBDBA.CARRIER_ACCNT_BANK_INFO
#)
3)导出并查看日志
nohup expdp parfile=expdp_ochis.par expdp_ochis.par.out
tail -f expdp_ochis.par.out
5. 拷贝数据
scp expdp_*.dmp migudb3:/backup
6. 目标端导入数据
1)创建 directory
2)编写 parfile
migudb3:/backup#cat impdp_ochis.par
userid= / as sysdba
directory=ggdump
dumpfile=expdp_ochis_%U.dmp
logfile=impdp_ochis.log
parallel=8
CLUSTER=N
3)导入并查看日志
nohup impdp parfile=impdp_ich_metadata.par impdp_ich_metadata.par.out
tail -f impdp_ich_metadata.par.out
7. 收集统计信息
migudb3:/backup#cat gather_ochis_info.sh
sqlplus / as sysdba EOF
set echo on
set verify on
spool gather_ochis_info.log
exec dbms_stats.gather_schema_stats(ownname= OCHIS ,estimate_percent= 10,method_opt= for all columns size 1 ,cascade= true,force= true,degree= 8,no_invalidate= false);
spool off
exit
EOF
8. 目标库解锁 OCHIS 用户
alter user ochis account unlock;
9. 通知应用同事检查应用。
看完上述内容,你们对如何进行 oracle 数据泵导数据实践有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。