页面“Oracle定时备份”与“Oracle归档日志清理”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
(导入1个版本)
 
docker>Evan
(创建页面,内容为“ oracle归档日志清理 <pre> alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' rman target / 列出并确认归档日志路径 RMAN>list archivelog al…”)
 
第1行: 第1行:
=脚本如下=
+
 
==导出==
+
oracle归档日志清理
 
<pre>
 
<pre>
cat dbexp
+
alias sqlplus='rlwrap sqlplus'
#!/bin/bash
+
alias rman='rlwrap rman'
# 02 16 * * 0  /bin/bash -x /home/oracle/evan/dbexp #user is oracle not root 星期天时备份并拉回内网
+
 
source /etc/profile
+
 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin
+
 
export PATH
+
rman target /
export ORACLE_HOME="/home/oracle/app/oracle/product/11.2.0/dbhome_1"
+
 
export ORACLE_SID=xtwl
+
列出并确认归档日志路径
cd  /home/oracle/evan
+
 
rm -f evandb.dmp
+
RMAN>list archivelog all;
#/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/exp ZTGO0815/ZTGO0815@xtwl file=/home/oracle/evan/evandb.dmp owner=ZTGO0815
+
 
exp O085\/O085\@xtwl file=./evandb.dmp owner=O085
+
 
</pre>
+
delete archivelog all completed before 'sysdate-7';
 +
 
 +
–删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志 今天就直接用了这个
 +
 SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
 +
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
 +
 
 +
注意
 +
RMAN> delete archivelog all completed before 'sysdate-1'; (“1”对应是一天,若想删除6小时前的归档日志,则改为0.25)
 +
    删除完归档,若有对应的备份策略需要重新启动全备
 +
 
 +
 
 +
 
 +
5、删除失效的归档日志
 +
 
 +
RMAN>delete expired archivelog all;
 +
 
 +
6、如果日志爆了,用以上命令可能不起作用,可以使用下面的命令强行删除所有日志
 +
 
 +
RMAN>delete noprompt force archivelog all;
 +
 
 +
 
 +
 
 +
清除归档日志简单的shell脚本
  
 +
#对于RAC环境或者ASM需要清除archive,使用shell脚本调用RMAN是比较妥当的方式
 +
#其次,如果你的archive位于闪回区,制定合理的保留策略,也可以让Oracle自动老化无用的归档日志
  
==导入==
+
robin@SZDB:~/dba_scripts/custom/bin> more clean_arch.sh
<pre>
+
# +-------------------------------------------------------+
#!/bin/bash
+
# +    Clean archived log as specified time              |
source /etc/profile
+
# +    Author : Robinson                                  |
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin
+
# +    Blog  : http://blog.csdn.net/robinson_0612        |
export PATH
+
# +    Usage  :                                          |
export ORACLE_HOME="/home/oracle/app/oracle/product/11.2.0/dbhome_1"
+
# +        clean_arch.sh $ORACLE_SID                    |
export ORACLE_SID=xtwl
+
# +-------------------------------------------------------+
 
#
 
#
cd /home/oracle/evan
+
#!/bin/bash
#oracle bak
+
# --------------------
DATE=$(date +%Y%m%d%H%M)
+
# Define variable
exp O0815/O0815@xtwl file=evandb${DATE}.dmp owner=O0815
+
# --------------------
 +
 
 +
if [ -f ~/.bash_profile ]; then
 +
. ~/.bash_profile
 +
fi
 +
 
 +
if [ -z "${1}" ];then
 +
    echo "Usage: "
 +
    echo "      `basename $0` ORACLE_SID"
 +
    exit 1
 +
fi
 +
 
 +
ORACLE_SID=$1;                export ORACLE_SID
 +
$ORACLE_HOME/bin/rman log=/users/robin/log/rman.log <<EOF 
 +
connect target /
 +
run{
 +
crosscheck archivelog all;
 +
delete noprompt expired archivelog all;
 +
delete noprompt archivelog all completed before 'sysdate - 1';
 +
}
 +
exit;
 +
EOF
 +
exit
  
rm  -f evandb.dmp  testdb.tar.bz2
 
rsync -avz --progress  [email protected]:/home/oracle/evan/testdb.tar.bz2 testdb.tar.bz2
 
tar xvf testdb.tar.bz2
 
imp O0815/O0815@xtwl file=./evandb.dmp  log=./imp.log fromuser=O0815 touser=O0816
 
 
</pre>
 
</pre>
  
=trouble=
 
<pre>
 
手工执行脚本可以备份 而放在定时任务不行,查看cron log
 
tail /var/spool/mail/oracle
 
Copyright (c) 1982, 2011, Orac
 
 
Invalid(无效的) format of Export utility name
 
  
Verify that ORACLE_HOME is properly (正确)set
+
---------------------
  
Export terminated unsuccessfully
+
原文:https://blog.csdn.net/leshami/article/details/9308287
  
EXP-00000: Message 0 not found; No message file for product=RDBMS, facility=EXP+ touch lock
 
  
 +
=see also=
  
[oracle@db evan]$ echo $ORACLE_HOME
+
[http://blog.51cto.com/hujizhou/1876780 Oracle 11g正确删除归档日志方法]
/home/oracle/app/oracle/product/11.2.0/dbhome_1
 
  
$ echo $ORACLE_SID
+
[https://blog.csdn.net/tfxcg1026/article/details/52502885 oracle归档日志清理]
xtwl
 
  
解决办法在脚本中添加
+
[https://blog.csdn.net/leshami/article/details/9308287 Oracle RMAN 清除归档日志]
  
export ORACLE_HOME="/home/oracle/app/oracle/product/11.2.0/dbhome_1"
+
[https://www.cnblogs.com/ungshow/archive/2009/04/03/1429218.html Oracle归档日志删除]
export ORACLE_SID=xtwl
 
  
 +
[https://my.oschina.net/u/2245781/blog/1799416 oracle各类日志清理]
  
su - oracle 这个没用上 </pre>
+
[http://support.huawei.com/enterprise/zh/knowledge/EKB1000057307 oracle归档日志占满系统存储空间,导致数据库启动失败]
  
[[category:oracle]]
+
[[category:oracle]]  [[category:ops]]

2018年10月29日 (一) 11:56的版本

oracle归档日志清理

alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'



rman target /

列出并确认归档日志路径

RMAN>list archivelog all;


delete archivelog all completed before 'sysdate-7'; 

–删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志  今天就直接用了这个 
 SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。 
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库 

注意 
RMAN> delete archivelog all completed before 'sysdate-1'; (“1”对应是一天,若想删除6小时前的归档日志,则改为0.25)
    删除完归档,若有对应的备份策略需要重新启动全备



5、删除失效的归档日志

RMAN>delete expired archivelog all;

6、如果日志爆了,用以上命令可能不起作用,可以使用下面的命令强行删除所有日志

RMAN>delete noprompt force archivelog all;



清除归档日志简单的shell脚本

#对于RAC环境或者ASM需要清除archive,使用shell脚本调用RMAN是比较妥当的方式
#其次,如果你的archive位于闪回区,制定合理的保留策略,也可以让Oracle自动老化无用的归档日志

robin@SZDB:~/dba_scripts/custom/bin> more clean_arch.sh 
# +-------------------------------------------------------+
# +    Clean archived log as specified time               |
# +    Author : Robinson                                  |
# +    Blog   : http://blog.csdn.net/robinson_0612        |
# +    Usage  :                                           | 
# +         clean_arch.sh $ORACLE_SID                     |
# +-------------------------------------------------------+
#
#!/bin/bash 
# --------------------
# Define variable
# --------------------

if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi

if [ -z "${1}" ];then
    echo "Usage: "
    echo "      `basename $0` ORACLE_SID"
    exit 1
fi

ORACLE_SID=$1;                 export ORACLE_SID 
$ORACLE_HOME/bin/rman log=/users/robin/log/rman.log <<EOF   
connect target /
run{
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate - 1';
}
exit;
EOF
exit 



原文:https://blog.csdn.net/leshami/article/details/9308287


see also

Oracle 11g正确删除归档日志方法

oracle归档日志清理

Oracle RMAN 清除归档日志

Oracle归档日志删除

oracle各类日志清理

oracle归档日志占满系统存储空间,导致数据库启动失败