scp+oracle备份

定时备份oracle数据库文件并备份至远程服务器
1、脚本
cat jira.sh
#/bin/sh
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=ORACLEHOME/lib:/lib:/usr/libexportPATH=ORACLE_HOME/lib:/lib:/usr/lib export PATH=PATH:HOME/bin:HOME/bin:ORACLE_HOME/bin
export export NLS_LANG=AMERICAN_AMERICA.UTF8
date=date +%Y%m%d-%H%M%S
bakdata=date.dmpbaklog=date.dmp baklog=date.log
ordatabak=date.zipexpjira/bossjirafile=/home/backup/jira/date.zip exp jira/bossjira file=/home/backup/jira/bakdata log=/home/backup/jira/$baklog
cd /home/backup/jira
zip -m $ordatabak $baklog bakdatascpP24/home/backup/jira/bakdata scp -P24 /home/backup/jira/ordatabak [email protected]:/home/backup/jira
find /home/backup/jira/ -mtime +7 -name “*.zip” -exec rm -rf {} ;

scp这里如果被远程服务器端口号是22,则直接
scp /home/backup/jira/$ordatabak [email protected]:/home/backup/jira
如果不是22才需要-P指定端口号。
2、导出空表
此方法只对当前用户有效,每个用户要想全部导出都需要做此操作。

连接对应数据库,执行下面语句后即可全部导出所有表:

DECLARE
BEGIN
FOR V_ST IN (SELECT U.TABLE_NAME FROM USER_TABLES U where u.NUM_ROWS=0 and u.tablespace_name is not null)
LOOP
EXECUTE IMMEDIATE ‘ALTER TABLE ‘||V_ST.TABLE_NAME||’ ALLOCATE EXTENT’;
END LOOP;
END;/
-注意:如果在SQL windows执行,不需要加“/”,如果在command window执行则需要加“/ "
3、远程ssh无密码
ssh-******
scp+oracle备份
中间让输入密码的地方直接回车,不要输入密码。
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
将**传给另外一台主机
scp+oracle备份
成功后ssh连接尝试
ssh [email protected]
scp+oracle备份
成功登入。
4、自动任务
自动化任务
yum install vixie-cron
yum install crontabs
service crond start
service crond status
/etc/rc.d/init.d/crond restart
crontab –e
30 14 * * * /bin/sh /opt/dbback.sh
列出某个用户cron服务的详细内容
crontab -l
删除没个用户的cron服务
crontab -r
编辑某个用户的cron服务
crontab -e
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
每5分钟运行数据同步的脚本
*/5 * * * * /home/blue/do/rsyncfile.sh
5、导入数据(cmd执行)
unzip 20171121-150252.zip

exp jira/[email protected]:1521/ORCL rows=y file=d:\u01\0821.dmp
imp jira/[email protected]:1521/jira file=‘d:\u01\0821.dmp’ FULL=Y ignore=y注意:原来有表的话不会覆盖,必须删掉后再导入