EXP自适应导出指定表脚本

############crontab设置###########

30 1 * * * /home/oracle/backup/backupsh/expfull.sh

############expfull.sh设置###########

/home/oracle/backup/backupsh/tables.sh

cat /home/oracle/backup/backupsh/exp_temp.parfile > /home/oracle/backup/backupsh/expfull.parfile

cat /home/oracle/backup/backupsh/tables.lst >> /home/oracle/backup/backupsh/expfull.parfile

/home/oracle/backup/backupsh/start_exp.sh

############start_exp.sh设置###########

source /home/oracle/.bash_profile

BACK_HOME=/home/oracle/backup

BACK_DEST=$BACK_HOME/expfull

SH_HOME=/home/oracle/backup/backupsh

export $BACK_HOME

export $BACK_DEST

export $SH_HOME

DBA="[email protected]"

DATE=`date +"%m%d:%H.%M"`

IP=""

exp_log_file=$SH_HOME/expfull.log

MAIL_COMMAND=/bin/mailx

$ORACLE_HOME/bin/exp parfile=$SH_HOME/expfull.parfile;

cat $exp_log_file |$MAIL_COMMAND -s "exp backup message from $IP $DATE " $DBA

###########exp_temp.parfile##############

userid=xzsp/xzsp

filesize=2048M

file=(/home/oracle/backup/fulldmp1.dmp,

/home/oracle/backup/fulldmp2.dmp,

/home/oracle/backup/fulldmp3.dmp,

/home/oracle/backup/fulldmp4.dmp)

rows=y

log=/home/oracle/backup/backupsh/expfull.log

compress=n

buffer=40960000

direct=y

##############tables.sh###################

sqlplus -S "/ as sysdba" >/dev/null <<EOF

set echo off

set termout off

set feedback off

set heading off

set linesize 120

set pagesize 0

select to_char(sysdate,‘‘‘yyyy-mm-dd hh:mm:ss‘‘‘) from dual;

spool /home/oracle/backup/backupsh/tables.lst

SELECT ‘tables=(‘ || CHR(10) FROM DUAL;

SELECT owner || ‘.‘ || table_name || ‘,‘ || CHR(10)

FROM dba_tables

WHERE owner NOT IN (‘SYS‘,‘SYSTEM‘,‘CTXSYS‘,‘ORDSYS‘,‘MDSYS‘)

AND table_name NOT IN

(‘SMS_LOG‘,‘SMS_RESPREPT_ERROR‘,‘SMS_STATUSREPT‘,‘PUSH_USER_INFO_LOG‘)

ORDER BY owner;

SELECT ‘SYS.DUAL‘ FROM DUAL;

SELECT ‘)‘ FROM DUAL;

spool off

EOF

说明:ORACLE10G 以后解决这个问题更方便,使用exclude include。用法如下:

EXCLUDE = object_type[:name_clause][,…]

INCLUDE = object_type[:name_clause][,…]

例如:

Expdp <other_paramters> SCHEMAS=XZSP EXCLUDE=SEQUENCE,INDEX,TABLE:”LIKE %EMP”

IMpdp <other_paramters> SCHEMAS=XZSP INCLUDE=FUNCTION,PACKAGE,PROCEDUGE ,TABLE:”IN (‘EMP’,’DEMP’)”

Linux下使用需要使用转义字符“\”,当然最好使用参数文件

############定义参数文件parfile.par ##############

Directory=expdir

Schemas=rman

Dumpfile=expdp_rman.dmp

Include=TABLE:”IN(‘DB’,’TS’)”

执行导出命令如下

Expdp \’/ as sysdba \’ parfile.par

时间: 2024-10-11 08:03:03

EXP自适应导出指定表脚本的相关文章

Oracle 11G R2 用exp无法导出空表解决方法

四.  Oracle 10g以后增加了expdp和impdp工具,用此工具也可以导出空的表 oracleexpdp/impdp 用法详解 1)  创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. createdirectory db_bak as 'd:\test\dump'; 2)  查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错) select * fromdba_directories; 3)  给s

Oracle 11gR2 用exp无法导出空表解决方法

Oracle 11gR2 用exp无法导出空表解决方法 在11gR2中有个新特性,当表无数据时,不分配segment以节省空间,Oracle 当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法: 一.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 二.设置deferred_segment_creation参数 该参数值默认是TRUE,当改为FALSE时,无无是空表还是非空表,

oracle exp 无法导出空表

oracle exp 无法导出空表   select 'alter table '|| a.table_name ||' allocate extent;' from user_tables a where a.table_name not in (select segment_name from user_segments where segment_type = 'TABLE'); 执行查出的sql语句,再导出dmp,就能导出空表了. Oracle 11g无法导出空表的处理方法 在SQL窗口

mysqldump导出指定表和部分指定数据

mysqldump -u用户名 -p密码 库名 表名 --where="筛选条件" > 导出文件路径 mysqldump命令中的 --where/-w参数,是用来设定数据导出的条件,使用方式和sql查询命令中的where基本一致,可以从数据中导出需要的部分数据 从meteo数据库的sdata表中导出sensorid=11 且 fieldid=0的数据到 /home/xyx/Temp.sql 这个文件中mysqldump -uroot -p123456 meteo sdata --

ORACLE EXP不能导出空表的原因分析及解决方法

一.不能导出空表的原因 1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出. 2.设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment. 在sqlplus中,执行如下命令: SQL>alter system set deferred_segment_creation=false; 查看: SQL>show parameter deferred_segment_creat

Oracle11g用exp无法导出空表的解决方法

方法1: 设置deferred_segment_creation参数 SQL> show parameter deferred_segment_creation NAME TYPE VALUE -------------------------- ----------- ---------- deferred_segment_creation boolean TRUE SQL> alter system set deferred_segment_creation=false; 系统已更改. S

Oracle11G R2用exp无法导出空表解决方法

在11G R2中有个新特性,当表无数据时,不分配segment,以节省空间Oracle当然在执行export导出时,空表则无法导出,但是还是有解决办法的: 解决方法: 一.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 二.设置deferred_segment_creation参数 该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment.修改SQL语句: alter sy

Oracle 11g用exp无法导出空表的处理方法

在PLSQL Dev中执行以下SQL查询: select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 然后将结果拷贝出来再执行后就可以导出Oracle11g中的空表了. alter table T_ANALY_ITEM_ITEM allocate extent; alter table T_ANALY_PROCE_INOUT_OBJ allocate extent; alter

Oracle导出导入指定表

从源数据库导出: exp user1/pwd@server1 file=c:\temp\exp.dmp tables=(table1, table2) 导入到目标数据库: imp user2/pwd@server2 file=c:\temp\exp.dmp tables=(table1, table2) Oracle就是有这个优点,能够直接将远程的数据导出到本地.或者将本地的数据文件导入到远程数据库. 而SQL SERVER的备份.还原文件,一定是放在远程服务器本机的. 补充一下,假设有很多表.