第十章 【备份】与【恢复】 (六) 企业在实际生产中的定时备份策略

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

周一    level0 

周二    level2

周三    level2

周四    level1

周五    level2

周六    level2

周日    level2

 

分析:ORACLE从10g版本就不再推荐2级备份!也就是说只需要0级和1级即可!! 那么这三个级别分别怎么备份?

0级就是完全备份。

1级是将最近的,大于等于自己级别的备份(即0级,1级)之后所有的变化数据进行备份。

2级同理,将最近的大于等于自己级别(0,1,2级都满足) 的备份之后修改的所有变化数据备份。

 

先分别写出每种级别增量备份的备份脚本,如0级备份:

run{

sql 'alter system archive log current';

allocate  channel  cha_inc0  type  disk   maxpiecesize=500M;   #通道0,rman允许有三个通道,这样数据可以平均分配到三个通                                                                                                      #道来加快备份

backup

incremental level 0

format  '/db/rmanbak/data/%T——inc0_%U.bkp'

tag 'weekly  inc0  backup'

database  plus  archivelog  delete  input;

release  channel  cha_inc0;

}

1级备份的脚本,只需要把上面的0改成1.

maxpiecesize限定单个备份片的大型,对备份的整体大小没影响。还有个参数叫maxsetsize,可以限定备份的整体大小,如果备份的数据库产生的容量大小超过备份片的最大size则备份就会失败。这个没用过。

限制备份片大小的原因

某种磁带可能处理的单个文件大小不能超过2G,或者某个文件系统上对超过4G的文件无法处理等等。

 

$crontab  -l

00  23  *  *  1    /db/scripts/rman.sh  zero

00  23  *  *  2    /db/scripts/rman.sh  one

...

 

其中rman.sh是我们写的一个shell脚本,其中判断当时是星期几,如果不是周一,则使用1级备份。周一使用0级别备份。调用inc0.rman和inc1.rman脚本。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

"ORA-00942: 表或视图不存在 "的原因和解决方法(非常好)

2016年10月01日 22:58:34

阅读数:12530

 

执行上面的sql时提示"ORA-00942 表或视图不存在",纳闷了,用select * from AUTH.AUTH_ORG_FRAM语句
查询时可以查到数据,但创建视图时就提示找不到,

原来是,我登陆时看图 , 1是以sysdba登陆的,

 

正确的方式是: 2

 

这哥们的我觉得还可以,http://blog.csdn.net/c_huabo/article/details/46693195

~~~~~~~~~~~~~~~

 

Oracle存储过程ORA-00942: 表或视图不存在问题解决

2017年08月22日 12:02:02

阅读数:1911

今天在写存储过程的时候,发现一个很诡异的问题,存储过程里就一个最简单的SELECT动态SQL语句。编写完成以后,执行这个存储过程,总是提示ORA-00942: table or view does not exist(ERROR -942 ORA-00942: 表或视图不存在)这个错误,但是我将这个SQL语句复制出来,单独在命令行运行,而又没有任何错误。很纠结,很纳闷,很无解,好好的一个SELECT语句,在命令行里就可以执行,放到存储过程就会出错了,怎么就不对了?

后来经过Google,分析和总结,最终找到了答案。为了满足有的读者就是为了找到解决问题的答案,而并不需要接下来长篇大论的分析,我这里就先给出答案。

角色在函数、存储过程、触发器中都是失效的,也就是说,用户从角色继承过来的权限,不能在函数、存储过程、触发器中使用。在函数、存储过程、触发器中,如果要访问其他用户的对象,需要显式地给用户授予访问的权限。

上面也说了,由于对用户jelly2赋予的是DBA角色,而角色权限在存储过程中是失效的,所以,为了防止访问权限失效,我们需要显示的对jelly2用户赋予访问jelly.tb_student表的权限。

grant select any table to jelly2;

 

~~~~~~~~~~~~

今早备份Oracle10g数据库的时候,出现以下错误:

ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 100.00% used, and has 0 remaining bytes available.
*************************************************************
You have the following choices to free up space from
flash recovery area:
1. Consider changing your RMAN retention policy.
   If you are using dataguard, then consider changing your
   RMAN archivelog deletion policy.
2. Backup files to tertiary device such as tape using the
   RMAN command BACKUP RECOVERY AREA.
3. Add disk space and increase the db_recovery_file_dest_size
   parameter to reflect the new space.
4. Delete unncessary files using the RMAN DELETE command.
   If an OS command was used to delete files, then use
   RMAN CROSSCHECK and DELETE EXPIRED commands.
*************************************************************


这时候实际上flash_recovery_area已经手工释放空间,甚至切换到一个全新的磁盘,仍然无法解决。

连接数据库查询:

$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.1.0.2.0 - Production on Mon Mar 28 11:45:30 2005

Copyright (c) 1982, 2004, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SYS AS SYSDBA on 28-MAR-05 >set liesize 120
SP2-0158: unknown SET option "liesize"
SYS AS SYSDBA on 28-MAR-05 >set linesize 120
SYS AS SYSDBA on 28-MAR-05 >SELECT substr(name, 1, 30) name, space_limit AS quota,
  2         space_used        AS used,
  3          space_reclaimable AS reclaimable,
  4          number_of_files   AS files
  5    FROM  v$recovery_file_dest ;

NAME                                    QUOTA       USED RECLAIMABLE      FILES
---------------------------------- ---------- ---------- ----------- ----------
/data5/flash_recovery_area         2147483648 2144863232           0        227


发现仍然记录了227个文件,USED空间并未释放。

使用rman登录数据库进行crosscheck:

$ rman target /

Recovery Manager: Release 10.1.0.2.0 - 64bit Production

Copyright (c) 1995, 2004, Oracle.  All rights reserved.

connected to target database: EYGLE (DBID=1337390772)

RMAN>  crosscheck archivelog all;

using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=144 devtype=DISK
validation failed for archived log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_790_0bjq36ps_.arc recid=1 stamp=526401126
validation failed for archived log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_791_0bkbcy7x_.arc recid=2 stamp=526420862
validation failed for archived log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_792_0bkkds4d_.arc recid=3 stamp=526428057
.......
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1014_0hh3zsrp_.arc recid=225 stamp=531678074
validation failed for archived log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1015_0hh40qyp_.arc recid=226 stamp=531678104
validation failed for archived log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1016_0hh41jqq_.arc recid=227 stamp=531678129
Crosschecked 227 objects


RMAN> delete expired archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=144 devtype=DISK

List of Archived Log Copies
Key     Thrd Seq     S Low Time  Name
------- ---- ------- - --------- ----
1       1    790     X 17-MAY-04 /opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_790_0bjq36ps_.arc
2       1    791     X 17-MAY-04 /opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_791_0bkbcy7x_.arc
3       1    792     X 17-MAY-04 /opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_792_0bkkds4d_.arc
.......
225     1    1014    X 16-JUL-04 /opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1014_0hh3zsrp_.arc
226     1    1015    X 16-JUL-04 /opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1015_0hh40qyp_.arc
227     1    1016    X 16-JUL-04 /opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1016_0hh41jqq_.arc

Do you really want to delete the above objects (enter YES or NO)? YES
deleted archive log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_790_0bjq36ps_.arc recid=1 stamp=526401126
deleted archive log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_05_17/o1_mf_1_791_0bkbcy7x_.arc recid=2 stamp=526420862
deleted archive log
......
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1014_0hh3zsrp_.arc recid=225 stamp=531678074
deleted archive log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1015_0hh40qyp_.arc recid=226 stamp=531678104
deleted archive log
archive log filename=/opt/oracle/flash_recovery_area/EYGLE/
archivelog/2004_07_16/o1_mf_1_1016_0hh41jqq_.arc recid=227 stamp=531678129
Deleted 227 EXPIRED objects


RMAN> exit


Recovery Manager complete.


此时空间得以释放:

$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.1.0.2.0 - Production on Mon Mar 28 12:02:19 2005

Copyright (c) 1982, 2004, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SYS AS SYSDBA on 28-MAR-05 >SELECT substr(name, 1, 30) name, space_limit AS quota,
  2         space_used        AS used,
  3          space_reclaimable AS reclaimable,
  4          number_of_files   AS files
  5    FROM  v$recovery_file_dest ;


NAME                                            QUOTA       USED RECLAIMABLE      FILES
----------------------------------------    ---------- ---------- ----------- ----------
/data5/flash_recovery_area                  2147483648    9959424           0          1

SYS AS SYSDBA on 28-MAR-05 >


Oracle指出,我们可以通过执行以下命令:

RMAN> backup recovery area;


将闪回区的内容备份到第三方介质,也同样可以解决这个问题。
是以为记。

~~~~~~~~~~~~~~~~~

https://wenku.baidu.com/view/afa9144169eae009581beca9.html

oracle常见错误号

~~~~~~~~~~~~~~~~~~~

 

 

~~~~~~~~~~~~

https://blog.csdn.net/waterxcfg304/article/details/48467605

https://blog.csdn.net/csnewdn/article/details/53218941

https://blog.csdn.net/waterxcfg304/article/details/48469455

http://blog.sina.com.cn/s/blog_7756ebc30100tnqy.html

https://blog.csdn.net/shudaqi2010/article/details/75300437

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=crontab%20oracle%20%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D&rsv_spt=1&oq=crontab&rsv_pq=d7f87e3d0000c865&rsv_t=7528S05JGEYdwrq9%2Bi5moiJS2SbG7fknw1zaqxWg7Sf9v8IFfJng2GGfYmJ0JxAQYCEl&rqlang=cn&rsv_enter=1&rsv_sug3=27&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&inputT=6773&rsv_sug4=6774

 

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=%E4%BC%81%E4%B8%9A%E7%94%A8rman%E8%BF%98%E6%98%AFexp%E5%AE%9A%E6%97%B6%E5%A4%87%E4%BB%BD&rsv_spt=1&oq=rman&rsv_pq=9d89d12100001263&rsv_t=a0bb%2FvOZXHGM4wVVAesD210pd2LgX7poSFH5vhUZ4qsGYtg7izVDLEJbQE4gow6hBAbq&rqlang=cn&rsv_enter=0&inputT=13234&rsv_sug3=141&rsv_sug1=34&rsv_sug7=101&rsv_sug2=0&rsv_sug4=13234

 

 

linux中执行定时任务对oracle备份(crontab命令)

执行定时任务对oracle表数据备份:

1、创建sh脚本

[oracle@localhost ~]$ vi bak.sh

2、添加脚本内容

复制代码

#!/bin/bash
#:本脚本自动备份7天的数据库,每次备份完成后,删除7天之前的数据。
#加载oracle的相关参数
#如果oracle参数不明确,请使用命令查看
# su - oracle 
# echo $ORACLE_HOME
export ORACLE_BASE=/opt
export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
#oracle字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#获取当前时间,格式:20150210
DATE=$(date +%Y%m%d)
#获取7天之前的时间,格式:20150203
DATE_RM=$(date -d "7 days ago" +%Y%m%d)
#设置备份目录,
export DIR=/home/test02/backup
echo $DIR
#创建日期目录
mkdir $DIR/$DATE
#开始备份,此处采用exp方式导出,根据实际情况可选用expdb数据方式导出
echo 'Oracle backup...'
exp simba_ism/iflytek@ORCL  file=$DIR/$DATE'/simbaism_'$DATE'.dmp' log=$DIR/$DATE'/simbaism_log_'$DATE'.log'
exp cs_prod/quickdone@ORCL  file=$DIR/$DATE'/csprod_'$DATE'.dmp' log=$DIR/$DATE'/csprod_log_'$DATE'.log'
echo 'Oracle backup successfully.'
echo 'remove...'
rm -rf $DIR/$DATE_RM
echo 'remove successsfully.'

复制代码

3、赋权:

[oracle@localhost ~]$ chmod 777 ./bak.sh

4、添加定时任务:

[oracle@localhost ~]$ crontab -e

#每天一点半执行一次
30 1 * * * /home/backup/bak.sh

5、查看任务:

[oracle@localhost ~]$ crontab -l

 

关于linux在shell中获取系统时间:

获得当天的日期 date +%Y%m%d      输出: 20110728

可以使用date的 -d参数 获取今天之前或者往后的日期

获取明天的日期 date -d next-day +%Y%m%d

获取前几天的日期 date -d "7 days ago" +%Y%m%d

获取昨天的日期 date -d last-day +%Y%m%d

 

crontab 前面5个*参数的意义:

0~59 表示分 
1~23 表示小时 
1~31 表示日 
1~12 表示月份 
0~6 表示星期(其中0表示星期日)

例子:

#每天早上6点10分
10    6     *     *     *     date
#每两个小时
0     */2   *     *     *     date
#晚上11点到早上8点之间每两个小时,早上8点
0     23-7/2,8      *     *     *     date
#每个月的4号和每个礼拜一到礼拜三的早上11点
0     11    4     *     1-3  date
#1月1日早上4点
0     4     1     1       *  date

 

========================================================================================== 我希望每一篇文章的背后,都能看到自己对于技术、对于生活的态度。 我相信乔布斯说的,只有那些疯狂到认为自己可以改变世界的人才能真正地改变世界。面对压力,我可以挑灯夜战、不眠不休;面对困难,我愿意迎难而上、永不退缩。 其实我想说的是,我只是一个程序员,这就是我现在纯粹人生的全部。 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值