Oracle查看RMAN备份大小

查看RMAN历史备份情况及大小

select to_char(start_time, 'yyyy-mm-dd') start_time,
       INCREMENTAL_LEVEL,
       BACKUP_TYPE,
       device_type,
       to_char(start_time, 'day') day,
       round(sum(OUTPUT_BYTES) / 1024 / 1024 / 1024, 2) SIZE_GB
  from v$backup_set_details
 group by to_char(start_time, 'yyyy-mm-dd'),
          to_char(start_time, 'day'),
          INCREMENTAL_LEVEL,
          BACKUP_TYPE,device_type
 order by start_time desc;

最后一次全备时间及大小

incremental_level = 0

select *
  from (select to_char(start_time, 'yyyy-mm-dd') start_time,
               INCREMENTAL_LEVEL,
               BACKUP_TYPE,
               device_type,
               to_char(start_time, 'day') day,
               round(sum(OUTPUT_BYTES) / 1024 / 1024 / 1024, 2) SIZE_GB
          from v$backup_set_details
         where incremental_level = 0
         group by to_char(start_time, 'yyyy-mm-dd'),
                  INCREMENTAL_LEVEL,
                  BACKUP_TYPE,
                  device_type,
                  to_char(start_time, 'day')
         order by start_time desc) c
 where rownum = 1;

v$backup_set_details displays information about backup sets from the control file. A backup set record is inserted after the backup set is successfully completed.

ColumnDatatypeDescription
RECIDNUMBERBackup set record ID
STAMPNUMBERBackup set record stamp
SET_STAMPNUMBER

Backup set stamp. The backup set stamp and

count uniquely identify the backup set.

Primary key for theV$BACKUP_SET table, and

the foreign key for the following tables:

V$BACKUP_PIECE,V$BACKUP_DATAFILE,

V$BACKUP_REDOLOG,V$BACKUP_CORRUPTION.

备份集标记。备份集标记和计数唯一地标识了备份集。

SET_COUNTNUMBER

Backup set count. The backup set count is incremented

by one every time a new backup set is started (if the

backup set is never completed the number is "lost").

If the control file is re-created then the count is reset to 1.

Therefore the count must be used with the stamp to

uniquely identify a backup set.
Primary key for theV$BACKUP_SET table, and the

foreign key for the following tables: V$BACKUP_PIECE,V$BACKUP_DATAFILE,

V$BACKUP_REDOLOG,V$BACKUP_CORRUPTION

备份集计数。每次一个新的备份集开始备份集计数会增加1。(如果备份集从来没有完成则编号“丢失”)。如果控制文件被重新创建则计数重置为1,因此计数必须和标记一起使用来唯一地标识一个备份集。

BACKUP_TYPEVARCHAR2(1)Type of files that are in this backup. If the backup contains archived redo logs, the value is L. If this is a datafile full backup, the value is D. If this is an incremental backup, the value is I.
CONTROLFILE_INCLUDEDVARCHAR2(3)Set to YES if there is a control file included in this backup set, otherwise set to NO
INCREMENTAL_LEVELNUMBERLocation where this backup set fits into the database's backup strategy. Set to NULL for full datafile, archivelog, controlfile, and spfile backups, set to 0 for incremental level 0 datafile backups, and set to 1 for incremental level 1 datafile backups.
PIECESNUMBERNumber of distinct backup pieces in the backup set
START_TIMEDATEStarting time
COMPLETION_TIMEDATETime that this backup set completed
ELAPSED_SECONDSNUMBERThe number of elapsed seconds
BLOCK_SIZENUMBERBlock size of the backup set
INPUT_FILE_SCAN_ONLYVARCHAR2(3)YES indicates no actual backup is performed, but the datafiles are read. NO indicates a normal backup is performed.
KEEPVARCHAR2(3)(YES/NO) Indicates whether or not this backup set has a retention policy that is different than the value for the configure retention policy
KEEP_UNTILDATEIf KEEP_UNTIL_TIME is specified, this is the date after which the backup becomes obsolete. If this column is null, then the backup never expires.
KEEP_OPTIONSVARCHAR2(10)Lists additional retention options for this backup set. Possible values are:
LOGS - The logs need to recover this backup are kept

NOLOGS - The logs needed to recover this backup will not be kept

BACKUP_LOGS - An archive log backup exists to support this backup set
MULTI_SECTIONVARCHAR2(3)Indicates whether or not this backup set is a multi-section backup. Valid values are YES andNO. A multi-section backup is a backup in which multiple backup pieces are produced independently in parallel by multiple channels.


该视图查看的信息与RMAN中命令LIST BACKUP类似,只不过表示形式不同。其中BACKUP_TYPE列标记该备份集中包含的文件类型,有下列几个值:

L:表示包含归档重做日志文件;

D:表示数据文件完全备份;

I:表示增量备份。

附:rmanbackup.sh

#!/bin/bash
 
#####################################################
# Author:        楚枫默寒
# Create_time:   2022/7/11
# Modify_time:   2024/5/14
# function:     零级备份、归档备份
# notes:
# Script logic: 1、有备份进程,则退出程序
#                2、无备份进程且无备份目录,则进行零级备份
#                3、无备份进程且有备份目录,则进行归档备份
#                4、full\arc 指定备份类型
#
# 命令格式
# rmanbackup.sh      零级备份(默认方式)
# rmanbackup.sh full 指定零级备份
# rmanbackup.sh arc  指定归档备份
# &&并关系  ||或关系
#####################################################

umask 022
export ORACLE_SID=xxxx
export ORACLE_BASE=xxxx
export ORACLE_HOME=xxxx
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export PS1='$ORACLE_SID:$PWD>'

BPATH='/rman/'                           #备份主路径
BACKPATH=$BPATH`date +%Y%m%d`_rman       #备份路径
DBTIME=`date +%Y%m%d`                    #备份时间
ALTIME=`date +%Y%m%d_%H%M%S`_`hostname`  #备份时间
COMM=`which rman`                        #备份命令

RMANID=`ps x |grep $BACKPATH|grep -v grep|awk '{ print $1 }'`

#无进程且无输入 或 无进程且输入为full
if [[ -z $RMANID ]] && ([[ -z $1 ]] || [[ $1 = full ]]);then
    if [[ ! -d $BACKPATH ]] || [[ $1 = full ]];then
        mkdir $BACKPATH;
        echo `date +"%Y-%m-%d %H:%M:%S"`"开始零级备份" >> /$BACKPATH/rmanbackup_$DBTIME.log
        $COMM target / msglog $BACKPATH/rmanDB_$DBTIME.log  <<EOF
        run
        {
        allocate channel ch11 type disk;
        allocate channel ch12 type disk;
        allocate channel ch13 type disk;
        allocate channel ch14 type disk;
        allocate channel ch15 type disk;
        allocate channel ch16 type disk;
        CONFIGURE CONTROLFILE AUTOBACKUP ON;
        CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKPATH/%F';
        crosscheck backup;
        crosscheck archivelog all;
        backup filesperset 20 as backupset incremental level=0 database skip inaccessible format '$BACKPATH/DB_%n_%I_%T_%U' plus archivelog delete all input format '$BACKPATH/AL_%n_%I_%T_%U';
        report obsolete;
        delete noprompt expired archivelog all;
        delete noprompt expired backup;
        delete noprompt obsolete;
        release channel ch11;
        release channel ch12;
        release channel ch13;
        release channel ch14;
        release channel ch15;
        release channel ch16;
        }
EOF

        sqlplus -s / as sysdba <<EOF
        create pfile='$BACKPATH/pfile_$ALTIME.ora' from spfile;
        set line 900
        SET newpage none
        SET heading off
        SET feedback off
        SET pagesize 0
        SET echo on
        SET newp none
        SET trimout on
        SET trimspool on
        SET SERVEROUTPUT ON size 1000000
        col name for a20
        col value for a50
        col display_value for a50
        col CMD for a200
        col instance_name for a10 
        col host_name  for a20 
        col online_status for a10 
        col TABLESPACE_NAME  for a40 
        col status for a10
        col Extent for a10 
        spool $BACKPATH/DG_$ALTIME.ini
        select name,value,display_value from v\$parameter where name='log_archive_config' or (name like 'log_archive_dest_%' and name not like 'log_archive_dest_state_%') and value is not null order by 1;
        col parameter for a30
        spool $BACKPATH/CHARACTERSET_$ALTIME.conf
        select * from nls_database_parameters where parameter like '%CHARACTERSET%' order by 1;
        spool $BACKPATH/DB_username_$ALTIME.sql
        select 'CREATE USER "'||a.username||'" IDENTIFIED BY VALUES '''||b.spare4||';'||b.password||''' DEFAULT TABLESPACE "'||a.default_tablespace||'" TEMPORARY TABLESPACE "'||a.temporary_tablespace||'";' CMD from dba_users a,sys.user$ b where a.username not in ('ANONYMOUS','CTXSYS','DIP','DBSNMP','DMSYS','EXFSYS','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORDPLUGINS','ORDSYS','OUTLN','SCOTT','SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM','WK_TEST','WKPROXY','WKSYS','WMSYS','XDB','APEX_030200','APEX_PUBLIC_USER','APPQOSSYS','CTXSYS','DBSNMP','DIP','FLOWS_FILES','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORACLE_OCM','ORDDATA','ORDPLUGINS','OWBSYS','OWBSYS_AUDIT','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR','XS$NULL','ZABBIX') and account_status='OPEN' and a.username= b.name ;
        spool $BACKPATH/Privs_table_$ALTIME.sql
        select 'grant '||PRIVILEGE||' on '||grantor||'.'||TABLE_NAME||' to '||GRANTEE||';' CMD from dba_tab_privs where ( grantee in (select username from dba_users where username not in ('ANONYMOUS','CTXSYS','DIP','DBSNMP','DMSYS','EXFSYS','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORDPLUGINS','ORDSYS','OUTLN','SCOTT','SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM','WK_TEST','WKPROXY','WKSYS','WMSYS','XDB','APEX_030200','APEX_PUBLIC_USER','APPQOSSYS','CTXSYS','DBSNMP','DIP','FLOWS_FILES','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORACLE_OCM','ORDDATA','ORDPLUGINS','OWBSYS','OWBSYS_AUDIT','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR','XS$NULL','ZABBIX') and account_status='OPEN')) 
        union 
        select 'grant '||PRIVILEGE||' on '||grantor||'.'||TABLE_NAME||' to '||GRANTEE||';' CMD from dba_tab_privs where ( owner in (select username from dba_users where username not in ('ANONYMOUS','CTXSYS','DIP','DBSNMP','DMSYS','EXFSYS','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORDPLUGINS','ORDSYS','OUTLN','SCOTT','SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM','WK_TEST','WKPROXY','WKSYS','WMSYS','XDB','APEX_030200','APEX_PUBLIC_USER','APPQOSSYS','CTXSYS','DBSNMP','DIP','FLOWS_FILES','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORACLE_OCM','ORDDATA','ORDPLUGINS','OWBSYS','OWBSYS_AUDIT','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR','XS$NULL','ZABBIX') and account_status='OPEN'));
        spool $BACKPATH/Privs_user_$ALTIME.sql
        DECLARE
          l_privs CLOB;
        BEGIN
          FOR rec IN (SELECT PRIVILEGE, ADMIN_OPTION, GRANTEE FROM DBA_SYS_PRIVS where grantee in (select username from dba_users where username not in ('ANONYMOUS','CTXSYS','DIP','DBSNMP','DMSYS','EXFSYS','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORDPLUGINS','ORDSYS','OUTLN','SCOTT','SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM','WK_TEST','WKPROXY','WKSYS','WMSYS','XDB','APEX_030200','APEX_PUBLIC_USER','APPQOSSYS','CTXSYS','DBSNMP','DIP','FLOWS_FILES','MDDATA','MDSYS','MGMT_VIEW','OLAPSYS','ORACLE_OCM','ORDDATA','ORDPLUGINS','OWBSYS','OWBSYS_AUDIT','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR','XS$NULL','ZABBIX') and account_status='OPEN')) LOOP
            l_privs := 'GRANT ' || rec.PRIVILEGE || ' TO ' || rec.GRANTEE ||
                       CASE WHEN rec.ADMIN_OPTION = 'YES' THEN ' WITH ADMIN OPTION' ELSE '' END || ';';
            DBMS_OUTPUT.PUT_LINE(l_privs);
          END LOOP;
        END;
        /
        SET heading on
        SET pagesize 50
        spool $BACKPATH/Tablespace_$ALTIME.txt
        SELECT I.instance_name,I.host_name,A.status,A.autoextensible Extent,A.TABLESPACE_NAME,ROUND(A.TOTAL_SPACE/1024/1024/1024,0) 总计_GB,ROUND((A.BYTES_ALLOC-NVL(B.BYTES_FREE,0))/1024/1024/1024,0) 已使用_GB
        FROM (SELECT status,TABLESPACE_NAME,SUM(BYTES) BYTES_ALLOC,SUM(DECODE(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) TOTAL_SPACE,autoextensible FROM DBA_DATA_FILES GROUP BY STATUS, TABLESPACE_NAME, autoextensible) A,
        (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES_FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) B,
        V\$INSTANCE I WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
        union
        SELECT I.instance_name,I.host_name,A.status,A.autoextensible Extent,A.TABLESPACE_NAME,ROUND(A.TOTAL_SPACE/1024/1024/1024,0) 总计_GB,ROUND((A.BYTES_ALLOC-NVL(B.BYTES_FREE,0))/1024/1024/1024,0) 已使用_GB
        FROM (SELECT STATUS,TABLESPACE_NAME,SUM(BYTES) BYTES_ALLOC,SUM(DECODE(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) TOTAL_SPACE,autoextensible FROM DBA_temp_FILES GROUP BY STATUS, TABLESPACE_NAME, autoextensible) A,
         (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES_FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) B,
        V\$INSTANCE I WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+) ORDER BY 5;
        SET heading off
        SET pagesize 0
        SELECT dbms_lob.substr(DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name))||';' SQL FROM DBA_TABLESPACES TS;
EOF
        echo `date +"%Y-%m-%d %H:%M:%S"`"零级备份结束" >> /$BACKPATH/rmanbackup_$DBTIME.log
    else 
        echo `date +"%Y-%m-%d %H:%M:%S"`"开始归档备份" >> /$BACKPATH/rmanbackup_$DBTIME.log
        $COMM target / msglog $BACKPATH/rman_AL_$ALTIME.log  <<EOF
        run
        {
        allocate channel ch21 type disk;
        allocate channel ch22 type disk;
        allocate channel ch23 type disk;
        CONFIGURE CONTROLFILE AUTOBACKUP ON;
        CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKPATH/%F';
        crosscheck backup;
        crosscheck archivelog all;
        sql 'alter system archive log current';
        backup as compressed backupset archivelog all delete input format '$BACKPATH/AL_%n_%I_%T_%U';
        report obsolete;
        delete noprompt expired archivelog all;
        delete noprompt expired backup;
        delete noprompt obsolete;
        release channel ch21;
        release channel ch22;
        release channel ch23;
        }
EOF
        echo `date +"%Y-%m-%d %H:%M:%S"`"归档备份结束" >> /$BACKPATH/rmanbackup_$DBTIME.log
    fi

#无进程且输入为arc
elif [[ -z $RMANID ]] && [[ $1 = arc ]];then
    if [[ ! -d $BACKPATH ]];then mkdir $BACKPATH;  fi
    echo `date +"%Y-%m-%d %H:%M:%S"`"开始归档备份" >> /$BACKPATH/rmanbackup_$DBTIME.log
    $COMM target / msglog $BACKPATH/rman_AL_$ALTIME.log  <<EOF
    run
    {
    allocate channel ch31 type disk;
    allocate channel ch32 type disk;
    allocate channel ch33 type disk;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKPATH/%F';
    crosscheck backup;
    crosscheck archivelog all;
    sql 'alter system archive log current';
    backup as compressed backupset archivelog all delete input format '$BACKPATH/AL_%n_%I_%T_%U';
    report obsolete;
    delete noprompt expired archivelog all;
    delete noprompt expired backup;
    delete noprompt obsolete;
    release channel ch31;
    release channel ch32;
    release channel ch33;
    }
EOF
    echo `date +"%Y-%m-%d %H:%M:%S"`"归档备份结束" >> /$BACKPATH/rmanbackup_$DBTIME.log

#有备份进程则退出
elif [[ ! -z $RMANID ]] ;then
    echo "有备份进行中";
fi

#清理历史备份目录(默认清理10天前的目录)
REDUNDANCY=10
rmdir_no=`find $BPATH -maxdepth 1 -type d -name "*_rman"|sort|tail -n $REDUNDANCY|wc -l`
if [ $rmdir_no -le 10 ];then
    rmdir=`find $BPATH -maxdepth 1 -type d -name "*_rman"|sort|tail -n $REDUNDANCY|head -n 1`;
    if [ $rmdir ];then
       rm -rf $rmdir;
    fi
fi

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Oracle RMAN(Recovery Manager)是Oracle数据库提供的一个备份和恢复工具,它可以进行物理备份和还原操作。下面是对Oracle RMAN备份的详细解释: 1. RMAN备份类型: - 完全备份(Full Backup):备份整个数据库,包括数据文件、控制文件和归档日志。 - 增量备份(Incremental Backup):只备份自上次备份以来发生变化的数据块,可以是增量备份级别0、1或2。 - 差异备份(Differential Backup):备份自上次完全备份以来发生变化的数据块。 2. RMAN备份方法: - 数据库级别备份:使用`BACKUP DATABASE`命令备份整个数据库。 - 表空间级别备份:使用`BACKUP TABLESPACE`命令备份指定的表空间。 - 数据文件级别备份:使用`BACKUP DATAFILE`命令备份指定的数据文件。 - 控制文件和归档日志备份:使用`BACKUP CONTROLFILE`和`BACKUP ARCHIVELOG`命令备份控制文件和归档日志。 3. RMAN备份设置: - RMAN配置文件:RMAN使用配置文件存储备份相关参数,包括备份路径、保留策略等。 - 备份集:RMAN备份数据存储在备份集中,可以是磁盘备份集或磁带备份集。 - 备份策略:可以设置备份的保留周期、备份大小等策略。 4. RMAN备份命令: - `BACKUP`:用于备份数据库、表空间、数据文件等。 - `RESTORE`:用于还原数据库、表空间、数据文件等。 - `RECOVER`:用于恢复数据库到指定的时间点或日志序列号。 5. RMAN备份的优点: - 集成性:RMANOracle数据库紧密集成,可以直接访问数据库内部结构。 - 自动化:RMAN提供自动备份和恢复功能,减少了管理员的手动操作。 - 效率高:RMAN使用并行备份和增量备份等技术,提高了备份和恢复的效率。 - 完整性:RMAN备份是一致性备份,可以保证备份数据的一致性。 这是对Oracle RMAN备份的详细解释,使用RMAN进行备份可以简化备份过程,并提供高效、可靠的数据保护方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楚枫默寒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值