关于单机oracle数据库的备份教程
来源:互联网 发布:nginx访问js报错403 编辑:程序博客网 时间:2024/05/21 10:00
在一切开始前,先将服务关闭。
1. 开启归档
l 切换到oracle用户 su - oracle
l 使用sqlplus进入数据库 sqlplus / as sysdba
l 查看是否开启归档模式 archive log list;
如果数据库模式为Archivemode,即开启归档,可直接进入第二步,为No Archive Mode则继续向下走。
l 关闭数据库 shutdown immediate
l 启动数据库实例到mount状态 startup mount
l 更改数据库模式为归档模式 alter database archivelog;
l 打开数据库 alter database open
2. 原数据库数据导出
l 搜索处于open状态的用户。 select username,account_statusfrom dba_users;
其中除了sys和system以外,处于open的用户都是需要备份的。
l 创建备份目录 create directory dmp as '/home/OracleBack/expdpbak';
l 为备份目录赋权 chmod -R 775 /home/OracleBack/expdpbak/
l 在oracle用户下执行备份 expdp \'/ as sysdba\' directory=dmpdumpfile=2017.dmp logfile=2017.file schemas=zytk35 多用户用()包含,用,分开。
l 查看备份文件。
3. 还原文件到新服务器
l 在新服务器创建备份目录 create directory dmp as '/home/OracleBack/expdpbak';
l 为备份目录赋权 chmod -R 775 /home/OracleBack/expdpbak/
l 如果原服务器可以和新服务器ping通,则直接使用scp命令传输备份文件 scp 2017.dmp zytk35@192.168.4.222:/home/OracleBack/expdpbak/
l 如果无法ping通,则使用xmanage先将dmp传到操作机再传到新服务器
l 将数据还原 expdpbak]$ impdp \'/ as sysdba\' directory=dmpdumpfile=2017.dmp schemas=zytk35
4. 执行自动备份脚本,和rman备份脚本
l 首先将两个脚本文件zytk35_expdp_backup.sh,zytkdbfull .sh传到新服务器下,路径自定。习惯为/home/oracle/oraclescripts
l 为文件夹赋权 chmod -R 775 /home/oracle/oraclescripts
l 使用root用户编辑zytk35_expdp_backup.sh文件 vim /home/oracle/oraclescripts/zytk35_expdp_backup.sh
export DateStr=`date "+%Y%m%d"` //到达删除线的时间
export DateStr2=`date "+%Y%m%d_%H%M%S"` //本地备份时间
su - oracle <<EON //存储备份
if test -d /home/OracleBack/expdpbak
then
:
else
mkdir -p /home/OracleBack/expdpbak
fi
expdp \'/ as sysdba\' directory=dmp dumpfile=expdp_$DateStr2.dmp logfile=expdp_$DateStr2.log schemas=zytk35
exit
EON
if test -d /home/oracle/expdpbak //本地备份,如果没有存储,则可以省略
then
:
else
mkdir -p /home/oracle/expdpbak
fi
#cp /home/OracleBack/expdpbak/expdp_$DateStr2.* /home/oracle/expdpbak
export DateStr=`date -d "7 days ago" "+%Y%m%d"` //将str定义为7天前的时间
cd /home/OracleBack/expdpbak/
tar zcf expdp_$DateStr2.tar.gz expdp_$DateStr2.dmp expdp_$DateStr2.log
ftp -n -v 192.168.28.4 <<EOF //异地备份
user expdp expdp
bin
put expdp_$DateStr2.tar.gz
prompt
mdelete expdp_$DateStr*.tar.gz //删除7天前的备份
bye
EOF
mv expdp_$DateStr2.tar.gz /home/oracle/expdpbak/
str=expdp_$DateStr
find /home/OracleBack/expdpbak/ -name "$str*" -exec rm {} \; //删除存储上七天前的
find /home/oracle/expdpbak/ -name "$str*" -exec rm {}\; //删除本地七天前的
unset DateStr
unset DateStr2
l 执行一次脚本./zytk35_expdp_backup.sh
l 无报错,进入/home/OracleBack/expdpbak下,查看是否有备份文件出现。
l 编辑rman备份脚本 vim zytkdbfull\ .sh
#!/bin/sh
#su - oracle
source /home/oracle/.bash_profile
current_day=`date +%Y%m%d`
expired_day=`date --date='8 days ago' +%Y%m%d`
#bakfile_path=/data/rmanbak/RmanBackupSet
bakfile_path=/home/OracleBack/rmanbak
backupset_path=$bakfile_path/$current_day
if test -d $bakfile_path/$current_day
then
:
else
mkdir -p $backupset_path
fi
$ORACLE_HOME/bin/rman log $backupset_path/rmanbak-$ORACLE_SID-`date +%Y%m%d-%H%M`.log target / <<EOF
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$backupset_path/ctl_%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '$backupset_path/full_%T_%U' MAXPIECESIZE 4G;
RUN{
BACKUP FULL tag 'ykt_db_full' DATABASE SKIP INACCESSIBLE
PLUS ARCHIVELOG FORMAT '$backupset_path/arch_%T_%U' DELETE ALL INPUT;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
REPORT OBSOLETE;
DELETE NOPROMPT OBSOLETE;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT EXPIRED BACKUP;
LIST BACKUP SUMMARY;
RELEASE CHANNEL;
EOF
#cd $bakfile_path
#tar zcvf rman-$ORACLE_SID-current_day.tar.gz $current_day
#ftp -n -v 192.168.6.134 <<!
#user zytk32 zytk32
#bin
#put rman-$ORACLE_SID-$current_day.tar.gz
#delete rman-$ORACLE_SID-$expired_day.tar.gz
#bye
#!
#rm -f rman-$ORACLE_SID-$current_day.tar.gz
l 在oracle下执行rman脚本
如图为成功执行。
l 设定linux定时备份任务 在root用户下 crontab -e
将如下语句添加
00 14 * * * /home/oracle/oraclescripts/zytk35_expdp_backup.sh
00 09 * * * /home/oracle/oraclescripts/zytk35_expdp_backup.sh
00 03 * * * /home/oracle/oraclescripts/dbfull.sh
l 查看该用户下的crontab服务是否创建成功 crontab -l
l 启动crontab服务 sudo service crond start
结束。
- 关于单机oracle数据库的备份教程
- 关于 Oracle数据库的备份与恢复
- 关于oracle数据库还原备份
- Oracle数据库的备份
- Oracle数据库的备份
- oracle数据库的备份
- ORACLE 数据库的备份
- 关于ORACLE数据库的备份和整库的导出
- 关于数据库的冷备份,热备份
- Oracle数据库的备份方法
- Oracle数据库的自动备份
- Oracle数据库的备份方法
- oracle数据库的备份还原
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- Oracle数据库的备份方法
- oracle数据库的备份方法
- Oracle数据库的备份方法
- 嵌入式Linux菜鸟学习之路
- 1080Ti+cuda+cudnn+caffe安装
- FPGA双线性插值算法(图像的缩放)
- iOS
- tab切换
- 关于单机oracle数据库的备份教程
- 指针数组与数组指针,指针常量与常量指针
- MacOS 给自己的 app 添加 URL Scheme
- python里把协程变成任务
- 分布式系统时钟同步方案
- 笔记:const与基本数据类型
- JAVA学习---3
- 【demo】Base64加密解密
- Javaweb学习总结(四)