数据导出shell脚本(上)

    DBA经常需要使用数据泵作一些数据的导入导出操作,为此本人编写了基于数据库用户导入导出操作的shell脚本。
丢到服务器上,直接执行脚本,方便日常操作。同时开发人员也可以按照提示完成数据导入导出操作。(此脚本应用于IBM? AIX操作系统,所以使用Korn Shell脚本语法编写,脚本内容在此文章附录)

本章介绍导出数据脚本


1. 
上传脚本文件expUser_test.ksh到源数据库服务器oracle用户目录下

[oracle@ENMOEDU ~]$ ls –trl

-rwxr-x--- 1 oracle oinstall 2760 Jul  1 23:45 expUser_test.ksh

 

2.修改expUser_test.ksh文件所属用户并授予执行权限

[oracle@ENMOEDU ~]$ su

Password:

[root@ENMOEDU oracle]# chown oracle:oinstall expUser_test.ksh

[root@ENMOEDU oracle]# chmod 770 expUser_test.ksh

[root@ENMOEDU oracle]# su - oracle

[oracle@ENMOEDU ~]$ ll expUser_test.ksh

-rwxrwx--- 1 oracle oinstall 2760 Jul  1 23:45 expUser_test.ksh

 

3.执行导出脚本

[oracle@ENMOEDU ~]$ ksh

$ ./expUser_test.ksh       ---执行脚本

 

USERNAME                      DEFAULT_TABLESPACE           

------------------------------------------------------------

ESO                             ESO_TS1                               

T1                              TEST1                                          

TEST                            TEST_SPACE                   

SCOTT                           USERS              

---以上信息显示数据库所有用户与所属表空间

Please specify the username to export

 

Enter value for username: ESO      ----输入需要导出的用户名     

Username:ESO

estimate export messages...

 

Export: Release 11.2.0.3.0 - Production on Wed Jul 2 11:43:56 2014

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_SCHEMA_01":  "/******** AS SYSDBA" ESTIMATE_ONLY=yes schemas=ESO

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

.  estimated "ESO"."PUB_ONLINE_HIST"                 7 MB

Total estimation using BLOCKS method: 7 MB

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 11:44:02

 

DIRECTORY_NAME                          DIRECTORY_PATH                                                                           

-------------------------------------------------------------------------------

SHARE_DIR                               /bidpro                                                                                   

MY_DIR                                  /home/oracle/dmp                                                                                                            

---以上显示数据库所有目录信息 

Choose a Directory Name from the list above (case-sensitive).

 

Enter value for directory_name[DATA_PUMP_DIR]: MY_DIR ---输入导出文件目录

Directory name :MY_DIR  /home/oracle/dmp

 

Please specify the prefix of the dump file (.dmp) to export

 

Enter value for file_name[ESO20140702]:    ---回车生成默认文件名

File name: ESO20140702.dmp

 

starting export data...

 

Export: Release 11.2.0.3.0 - Production on Wed Jul 2 11:47:25 2014

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_SCHEMA_01":  "/******** AS SYSDBA" dumpfile=ESO20140702.dmp logfile=ESO20140702.log DIRECTORY=MY_DIR schemas=ESO COMPRESSION=all

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 7 MB

Processing object type SCHEMA_EXPORT/USER

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT

Processing object type SCHEMA_EXPORT/ROLE_GRANT

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

. . exported "ESO"."PUB_ONLINE_HIST"             1.277 MB   31860 rows

Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:

  /home/oracle/dmp/ESO20140702.dmp     ---导出完成显示dmp文件目录

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 11:47:57

 

 注:脚本为按数据库用户导出与导入。目标数据库用户名与对应表空间名,必须与源数据库用户名与对应表空间名相同。

附录:

expUser_test.ksh
#This shell for export database user
#@Jianjin
#export ORACLE_SID=enmo
#export ORACLE_BASE=/u01/app/oracle
#export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
#export NLS_LANG=American_America.ZHS16CGB231280
#export PATH=$ORACLE_HOME/bin:$PATH
#date format
DATE=`date +"%Y%m%d"`
#select all user
users=`sqlplus -S / as sysdba <
set linesize 300  heading on feedback off pagesize 100
col username for a30
col default_tablespace for a30
select username,default_tablespace from dba_users;
exit 
EOF`
#show user list form sqlplus
echo $users|awk  '{size=split($0,a," ")
         for(i=1;i<=size-1;i=i+2){
                printf("%-30s", a[i])
                printf("%-30s\n", a[i+1])
                if (i==(size-1))
                printf("\n")
}}'
#input user
echo -ne "\nPlease specify the username to export\n\n"
read username?"Enter value for username: "
echo  "Username:"$username
#
if [[ $username = "" ]];then
   echo "database username is null"
exit
fi
#estimate total size of exp dump file
echo "estimate export messages..."
expdp \'/ as sysdba\'   ESTIMATE_ONLY=yes  schemas=$username
#find directory path
result=`sqlplus -S / as sysdba <
set linesize 300  heading on feedback off pagesize 100
col directory_path for a90
col directory_name for a40
select directory_name,directory_path from dba_directories;
exit 
EOF`
#show directory list from sqlplus
echo $result|awk  '{size=split($0,a," ")
         for(i=1;i<=size-1;i=i+2){
                printf("%-40s", a[i])
                printf("%-90s\n", a[i+1])
if (i==(size-1))
printf("\n")
}}'
#input directory_name 
echo -ne "Choose a Directory Name from the list above (case-sensitive).\n\n"
read directory?"Enter value for directory_name[DATA_PUMP_DIR]: "
#["$directory" -eq ""] && echo "you do not input the directory name for export data file. " && exit 0 
#show directory
directory=${directory:-"DATA_PUMP_DIR"}
#find directory path by directory name from sqlplus
dpath=`sqlplus -S / as sysdba <
set linesize 300  heading off feedback off pagesize 0
col directory_path for a90
col directory_name for a40
select directory_path from dba_directories where directory_name='$directory';
exit
EOF`
echo "Directory name :"$directory"  "$dpath
#input filename
echo -ne "\nPlease specify the prefix of the dump file (.dmp) to export\n\n"
read filename?"Enter value for file_name[$username$DATE]: "
filename=${filename:-"$username$DATE"}
#show filename
echo "File name:" $filename.dmp
#start run expdp 
echo -ne  "\nstarting export data...\n"
expdp \'/ as sysdba\' dumpfile=$filename.dmp logfile=$filename.log  DIRECTORY=$directory  schemas=$username COMPRESSION=all


        DBA_建瑾
        2014.7.5

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29324876/viewspace-1209889/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29324876/viewspace-1209889/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值