oracle tirger_Oracle 数据泵导数据(expdp,impdp)
目录:
一、冷备份导数注意事项
二、数据泵导数注意事项
一、冷备份导数注意事项
1、冷备恢复步骤:
a、关闭源库
b、从源库传输数据文件、控制文件、pfile、日志文件到目标库,并赋予oracle用户权限
c、从目标库打开传送过来的pfile,修改实例名、控制文件路径、dump(adump、bdump...)类文件夹路径
d、启动数据库到mount,rename数据文件和日志文件路径
e、启动数据库到open状态
f、配置监听,工作完成
2、冷备恢复常见命令备忘:
--目标端有数据库的情况下,需要删除目标端数据库的步骤
ps -ef | grep LOCAL=NO --查看有无客户端连接到数据库
lsnrctl stop 监听名 --停止监听
ps -ef | grep LOCAL=NO | awk ‘{print ($2)}‘ | xargs kill -9 --kill客户端连接
shutdown immediate --关闭数据库
startup exclusive restrict mount; --启动数据库到专有限制模式
drop database; --删除数据库
--rname数据文件、日志文件的命令
alter database rename file ‘xxx.dbf‘ to ‘xxx.dbf‘;
alter database rename file ‘xxx.dbf‘ to ‘xxx.dbf‘;
二、数据泵导数注意事项
--使用parfile方式写导入导出语句,因为有的时候只要导出或者只要导入,用pfile写方便其他同事查看你的导数参数。
--导入全库数据而不导入表结构时,要在目标库建立和源库对应的表空间,并分配好大小。
1、导出、导入数据
导出:
vi expdp_full_日期.par
userid=‘/ as sysdba‘
directory=导数目录
##该路径可以通过查询dba_directoires表得到;
##建立路径的语法为:create directory 目录名 as ‘目录路径‘;
##对目录路径要授予相应的权限:chown -R oracle:dba /目录路径
dumpfile=expdp_full_日期.dmp
logfile=expdp_full_日期.log
parallel=2 --分配两条通道
##通道分配数量的大小要参考逻辑CPU的数量来确定,用nmon命令查看逻辑CPU个数,parallel不能超过逻辑CPU的一半,常见的设置有2、4、8、16。有时候parallel会与filesize这个参数冲突,如果发现语句书写无误,但是有不明原因报错,可以尝试去掉filesize参数再测试下。
filesize=5G --每个dump文件大小
--导出全库结构
加参数:full=y
content=metadata_only
--导出全库数据不导结构
加参数:full=y
content=data_only
--导出schemas
加参数:schemas=xxx
--导出表
加参数:tables=xxx,xxx,xxx
导入:
vi impdp_full_日期.par
userid=‘/ as sysdba‘
directory=导数目录
dumpfile=expdp_full_日期.dmp
logfile=expdp_full_日期.log
parallel=2 --导出的pfile是多少parallel,导入就是多少parallel
--导入全库结构
加参数:content=metadata_only
--导出全库数据不导结构
加参数:content=data_only
2、注意事项
(以FCR为例,FCR库相对来说比较有针对性)
1、impdp异常终止时的处理步骤:
第一步:查看数据库中的导数任务(sqlplus下运行)
set line 200
col owner_name for a20
col operation for a30
col state for a30
select owner_name,job_name,operation,state,degree from dba_datapump_jobs;
第二步:查看impdp导入详情(操作系统命令模式下运行)
impdp \‘/ as sysdba\‘ ATTACH=‘SYS_IMPORT_SCHEMA_01‘
第三步:停止JOB
impdp \‘/ as sysdba\‘ ATTACH=‘SYS_EXPORT_SCHEMA_01‘
impdp> stop_job
第四步:杀掉JOB
impdp \‘/as sysdba\‘ ATTACH=‘SYS_EXPORT_SCHEMA_01‘
impdp> kill_job
2、当不导入结构只导入数据时,需要禁用涉及对象的约束和触发器,语句如下:
--先关闭触发器再关闭约束,防止触发器插入约束外的数据。
--关闭trigger
cat >start_dis_tirger.sql
spool /home/oracle/dis_tirger.sql
select ‘alter trigger ‘ || owner || ‘.‘ || trigger_name||‘ ENABLE;‘from dba_triggers
where status=‘DISABLED‘ and owner in (‘FCRBRNDATA‘,‘FCRHSTDATA‘);
spool off;
--关闭约束
cat >start_dis_const.sql
spool /home/oracle/dis_const.sql
SELECT ‘ALTER TABLE ‘||T.owner||‘.‘||T.table_name||‘ enable constraint ‘||t.constraint_name||‘;‘
from dba_constraints s, dba_constraints t
where s.owner = t.r_owner and s.constraint_name = t.r_constraint_name and t.owner in (‘FCRBRNDATA‘,‘FCRHSTDATA‘)
and t.status=‘DISABLED‘;
spool off;
--导数工作完成后替换上述语句的关键字,先开约束再开触发器,防止触发器插入约束外的数据。
3、导某些表的时候可能存在资源占用,查询语句如下:
set pages 130;
set lines 1300;
col object_name for a20;
col machine for a20;
col program for a20;
col killid for a30;
col os_pid format a20;
select object_name ,machine ,s.program ,s.sid||‘,‘||s.serial# as killid,
p.spid as os_pid ,s.sql_address,l.locked_mode,s.username,s.process,s.sql_id
from v$locked_object l,dba_objects o ,v$session s ,v$process p
where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr
and object_name=upper(‘&tablename‘) and o.owner=upper(‘&owner‘) order by 1;
4、导入全库数据而不导入结构时,会有很多无效对象,无效对象编译过程如下:
附录二:快速删除索引语句
附录三:无效对象编译相关脚本
附录四:禁用约束和触发器的处理
附录五:从全库结构dmp文件中取建索引语句
附录一:导数情况查询
--获取对象定义
set lin 200 pagesize 500
set long 99999
set longc 99999
select dbms_metadata.get_ddl(upper(‘&object_type‘),upper(‘&object_name‘),upper(‘&username‘)) from dual;
附录二:快速删除索引语句
--删除全局索引
select distinct ‘drop index ‘||i.OWNER||‘.‘||i.INDEX_NAME||‘;‘ from dba_indexes i
where i.TABLE_OWNER=‘FCRHSTDATA‘ and i.TABLE_NAME in (
‘CH_ACCT_LEDG‘,
‘REC_TXN_LOG‘,
‘TD_DEP_PRORATED_TAX_DTLS‘,
‘TD_DEP_PRORATED_TAX_DTLS‘,
‘XFACE_AUDIT_TRAIL_LOG‘,
‘XF_OL_ST_TXNLOG_MMDD‘
);
--删除分区索引
select distinct ‘drop index ‘||p.INDEX_OWNER||‘.‘||p.INDEX_NAME||‘;‘ from dba_ind_partitions p,dba_indexes i
WHERE p.INDEX_OWNER=i.OWNER and i.INDEX_NAME=p.INDEX_NAME and i.TABLE_OWNER=‘FCRHSTDATA‘ and
i.STATUS=‘N/A‘ and i.TABLE_NAME in (
‘XF_STCAP_GL_TXNS_MMDD‘,‘XF_ST_CAP_INPUT_TXN_TEMP‘,‘CH_ACCT_INT_BREAKUP‘,‘XFACE_AUDIT_TRAIL_LOG‘,
‘ET_ALERTS_LOG_1‘,‘XF_OL_ST_SCLOG_MMDD‘,‘CH_ARREARS_TABLE‘,‘ET_ALERT_PUBLISH‘,‘TD_NOBOOK‘,
‘CI_CUSTMAST‘,‘CH_ACCT_INT_BREAKUP_DELETED ‘,‘TD_AUDIT_TRAIL‘,‘XFACE_FCR_LOGGER‘,
‘CH_ACCT_MAST‘,‘BA_CHANGE_RECORD_LOG‘,‘REC_TXN_LOG_PURGE‘,‘CH_ACCT_BALANCE_DTLS_MMDD‘,‘XF_OL_ST_TXNLOG_STL_MMDD ‘,
‘CH_TMP_RCH405‘,‘CH_ACCT_CAPITALIZATION_HISTORY‘,‘XF_STCAP_GL_TXNS‘
);
附录三:无效对象编译相关脚本
1、系统用户无效对象编译: @?/rdbms/admin/utlrp.sql
2、一般用户无效对象编译
--源库无效对象采集脚本start_privs.sql,生成授权脚本privs.sql
cat >start_privs.sql
#####
--start$$
spool /home/oracle/privs.sql
--create role$$
select ‘create role ‘|| role||‘;‘ from dba_roles;
select ‘grant ‘||PRIVILEGE||‘ on ‘||OWNER||‘.‘||TABLE_NAME||‘ to ‘||ROLE||‘;‘ from role_tab_privs
union all
select ‘grant ‘||PRIVILEGE|| ‘ to ‘||ROLE||‘;‘ from role_sys_privs
union all
select ‘grant ‘||GRANTED_ROLE|| ‘ to ‘||ROLE||‘;‘ from role_role_privs;
--grant privs$$
select ‘grant ‘||PRIVILEGE||‘ to ‘||GRANTEE||‘;‘
from dba_sys_privs
where GRANTEE in(select username from dba_users where username not in(‘APPQOSSYS‘,‘DBSNMP‘,‘DIP‘,‘EXFSYS‘,‘WMSYS‘,‘SYSTEM‘,‘SYS‘,‘SDBXTS‘,‘OUTLN‘,‘ORACLE_OCM‘))
union all
select ‘grant ‘||GRANTED_ROLE||‘ to ‘||GRANTEE||‘;‘
from DBA_ROLE_PRIVS
where GRANTEE in(select username from dba_users where username not in(‘APPQOSSYS‘,‘DBSNMP‘,‘DIP‘,‘EXFSYS‘,‘WMSYS‘,‘SYSTEM‘,‘SYS‘,‘SDBXTS‘,‘OUTLN‘,‘ORACLE_OCM‘))
union all
select ‘grant ‘||PRIVILEGE||‘ on ‘||OWNER||‘.‘||TABLE_NAME||‘ to ‘||GRANTEE||‘;‘
from dba_tab_privs
where GRANTEE in(select username from dba_users where username not in(‘APPQOSSYS‘,‘DBSNMP‘,‘DIP‘,‘EXFSYS‘,‘WMSYS‘,‘SYSTEM‘,‘SYS‘,‘SDBXTS‘,‘OUTLN‘,‘ORACLE_OCM‘))
;
--compile objects$$
select ‘alter VIEW ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘VIEW‘ and status=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
select ‘alter PROCEDURE ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘PROCEDURE‘ and status=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
select ‘alter FUNCTION ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘FUNCTION‘ and status=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
select ‘alter TRIGGER ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘TRIGGER‘ and status=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
select ‘alter PACKAGE ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile BODY;‘ from dba_objects where OBJECT_TYPE=‘PACKAGE BODY‘ and status=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
select ‘alter PACKAGE ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘PACKAGE‘ and status=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
SELECT ‘CREATE OR REPLACE PUBLIC SYNONYM ‘||A.OBJECT_NAME||‘ FOR ‘||B.TABLE_OWNER||‘.‘||B.TABLE_NAME||‘;‘
FROM DBA_OBJECTS A,DBA_SYNONYMS B
WHERE B.SYNONYM_NAME=A.OBJECT_NAME AND B.OWNER=‘PUBLIC‘ AND A.OBJECT_TYPE=‘SYNONYM‘ AND A.STATUS=‘INVALID‘ and owner <> ‘IMPUSER‘
union all
SELECT ‘CREATE OR REPLACE SYNONYM ‘||A.OWNER||‘.‘||A.OBJECT_NAME||‘ FOR ‘||B.TABLE_OWNER||‘.‘||B.TABLE_NAME||‘;‘
FROM DBA_OBJECTS A,DBA_SYNONYMS B
WHERE B.SYNONYM_NAME=A.OBJECT_NAME AND A.OWNER=B.OWNER AND B.OWNER<>‘PUBLIC‘ AND A.OBJECT_TYPE=‘SYNONYM‘ AND A.STATUS=‘INVALID‘ and A.owner <> ‘IMPUSER‘
;
--end$$
spool off;
####
--目标库运行无效对象编译采集脚本start_compile.sql,生成无效对象编译脚本compile.sql
cat >start_compile.sql
#####
set line 1000
set pages 20000
spool /home/oracle/compile.sql
--compile objects$$
select ‘alter VIEW ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘VIEW‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
select ‘alter PROCEDURE ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘PROCEDURE‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
select ‘alter FUNCTION ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘FUNCTION‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
select ‘alter TRIGGER ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘TRIGGER‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
select ‘alter PACKAGE ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile BODY;‘ from dba_objects where OBJECT_TYPE=‘PACKAGE BODY‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
select ‘alter PACKAGE ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile;‘ from dba_objects where OBJECT_TYPE=‘PACKAGE‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
select ‘alter type ‘||OWNER||‘.‘||OBJECT_NAME||‘ compile body;‘ from dba_objects where OBJECT_TYPE=‘TYPE BODY‘ and status=‘INVALID‘ and owner<>‘IMPUSER‘
union all
SELECT ‘CREATE OR REPLACE PUBLIC SYNONYM ‘||A.OBJECT_NAME||‘ FOR ‘||B.TABLE_OWNER||‘.‘||B.TABLE_NAME||‘;‘
FROM DBA_OBJECTS A,DBA_SYNONYMS B
WHERE B.SYNONYM_NAME=A.OBJECT_NAME AND B.OWNER=‘PUBLIC‘ AND A.OBJECT_TYPE=‘SYNONYM‘ AND A.STATUS=‘INVALID‘ and A.owner<>‘IMPUSER‘
union all
SELECT ‘CREATE OR REPLACE SYNONYM ‘||A.OWNER||‘.‘||A.OBJECT_NAME||‘ FOR ‘||B.TABLE_OWNER||‘.‘||B.TABLE_NAME||‘;‘
FROM DBA_OBJECTS A,DBA_SYNONYMS B
WHERE B.SYNONYM_NAME=A.OBJECT_NAME AND A.OWNER=B.OWNER AND B.OWNER<>‘PUBLIC‘ AND A.OBJECT_TYPE=‘SYNONYM‘ AND A.STATUS=‘INVALID‘ and B.owner<>‘IMPUSER‘;
--end$$
spool off;
#####
附录四:禁用约束和触发器的处理
1、在导入数据库时关闭触发器和约束
2、在导出数据库时开启约束和触发器
--开启约束
cat >start_en_const.sql
set line 1800
spool /home/oracle/en_const.sql
SELECT ‘ALTER TABLE ‘||T.owner||‘.‘||T.table_name||‘ enable constraint ‘||t.constraint_name||‘;‘
from dba_constraints s, dba_constraints t
where s.owner = t.r_owner and s.constraint_name = t.r_constraint_name AND t.status=‘DISABLED‘ and t.VALIDATED=‘VALIDATED‘
union all
SELECT ‘ALTER TABLE ‘||T.owner||‘.‘||T.table_name||‘ enable novalidate constraint ‘||t.constraint_name||‘;‘
from dba_constraints s, dba_constraints t
where s.owner = t.r_owner and s.constraint_name = t.r_constraint_name AND t.status=‘DISABLED‘ and t.VALIDATED=‘NOT VALIDATED‘;
spool off;
--开启trigger
cat >start_en_tirger.sql
set line 1800
spool /home/oracle/en_tirger.sql
select ‘alter trigger ‘ || owner || ‘.‘ || trigger_name||‘ ENABLE;‘from dba_triggers
where status=‘DISABLED‘;
spool off;
附录五:从全库结构dmp文件中取建索引语句
下面语句是取指定表的索引语句,取全库同样也可以使用,生成语句后,可以在生成的脚本内修改并发数,使索引创建更快。
USERID=‘/ AS SYSDBA‘
DIRECTORY=EXPDP_FULLDATA
DUMPFILE=FULLDATABASE_0604.dmp
logfile=index_import_full.log
tables=(
FCRHSTDATA.ACTB_HISTORY,
)
include=index
sqlfile=index.sql
原文:http://sysdba.blog.51cto.com/10492366/1704269
oracle tirger_Oracle 数据泵导数据(expdp,impdp)相关推荐
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
<Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...
- Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)
转载自:http://www.cnblogs.com/jyzhao/p/4530575.html 目的:指导项目侧自行进行简单的数据泵迁移工作. 本文实验环境:Oracle 11.2.0.4,利用数据 ...
- Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解
Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp 使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...
- oracle 数据泵导入导出 expdp/impdp
一. 导出/入前检查 查看用户默认表空间 select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where US ...
- impdp导入指定表 oracle_Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例
一.新建逻辑目录 最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录"D:\oracleData"(务必手动创建此目录),仅仅是进行定义逻辑路径dump ...
- oracle查询数据泵状态,PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)
使用前提 EXPDP和IMPDP只可以在Oracle服务端使用. EXP导出的文件只可以使用IMP导入,不适用于IMPDP导入文件:EXPDP导出的文件只可以使用IMPDP导入,而不适用于IMP导出文 ...
- Oracle使用数据泵导入/导出数据(expdp/impdp)【图文教程】
Oracle使用数据泵导入/导出数据(expdp/impdp) 此类博客太多的坑,都不完整,要不执行着就报错执行不下去了,要不说的不清不楚,整理的一步步截图,100%成功. expdp数据导出 远程登 ...
- oracle中的 expdp命令,Oracle 10G 数据泵中EXPDP命令行选项介绍
以下的文章主要是浅谈Oracle 10G 数据泵学习纪要中EXPDP命令行选项,我在一个信誉度很好的网站找到一个关于Oracle 10G 数据泵学习纪要中EXPDP命令行选项的资料,拿出来供大家分享. ...
- oracle 使用数据泵恢复,oracle 使用数据泵 导出整个db 并恢复
导出expdp 1.登录oracle服务器(windows2008server-oracle11g-r2) 2.以sysdba身份登录 sqlplus / as sysdba 3.查看是否已有导出目 ...
最新文章
- python命令之m参数 局域网传输
- HBase in 2013
- springboot 集成rabbitmq 实例
- 2018年工业机器人销量排位_2020年全球工业机器人现状与竞争情况 中国为全球最大供应国...
- SAP Fiori Elements - Account F4 help - how value help dialog is populated
- java 初始化参数_我们如何在Java中的对象参数中初始化数组?
- linux双网卡架设FTP,LINUX系统上架设FTP服务器
- 瑞幸咖啡恢复交易 股价大跌35.76%
- DE26 Continuation: Repeated Real Eigenvalues
- Java调用MQ队列
- Skype 1.4 for Linux 掉掉更新
- 三思笔记之一步一步学ORACLE
- ~0 为什么等于 -1 ,在C语言中?
- linux沙箱隔离_linux沙箱技术
- axios报错Error: Request body larger than maxBodyLength limit
- 用定量测定葡萄糖的方法检测根管微渗漏-供应海藻酸钠修饰聚丙烯酸Alg-PAA 醛基化海藻酸钠(ASA) 海藻酸钠-多聚鸟氨酸-海藻酸(A-PLO-A)定制
- 使用阿里云的身份证实名认证接口
- PMP第八节:项目质量管理
- 神奇的手指——可以取代”切水果“的清屏小软件
- lisp 图元 天正 自定义_AutoLISP查询图元信息
热门文章
- Bootstrap学习笔记——导航条、分页导航
- 关于.net的ValidateRequest=false失效
- 联想拯救者 Y900 平板电脑 评测 联想拯救者 Y900 参数配置
- 宁波保税区通证经济产业园开园,33复杂美CEO吴思进应邀出席
- .native是什么?
- CF#354_B_Pyramid of Glasses(模拟)
- Django建立一个音乐网站(四)
- 安全编程之MD5文件校验
- Select Distinct语句
- JAVA计算机毕业设计春运出行铁路路线规划推荐系统Mybatis+系统+数据库+调试部署