[20171129]rman input memory buffer 4.txt

简介: [20171129]rman input memory buffer 4.txt --//Input Memory Buffers如何测试,不清楚.不过找到一本电子书.

[20171129]rman input memory buffer 4.txt

--//Input Memory Buffers如何测试,不清楚.不过找到一本电子书.摘要如下:

Oracle RMAN 11g Backup and Recovery.pdf

作者:Robert G. Freeman Matthew Hart
页数:689
出版社:Mc graw hill
出版号: ISBN: 978-0-07-162861-7
        MHID: 0-07-162861-4

RMAN in Memory P80

    RMAN builds buffers in memory through which it streams data blocks for potential backup. This
memory utilization counts against the total size of the PGA and, sometimes, the SGA. There are
two kinds of memory buffers. Input buffers are the buffers that are filled with data blocks read
from files that are being backed up. Output buffers are the buffers that are filled when the
memory-to-memory write occurs to determine whether a particular block needs to be backed up.
When the output buffer is filled, it is written to the backup location. The memory buffers differ
depending on whether you are backing up to or restoring from disk or tape. Figure 2-3 illustrates
input and output buffer allocation. It illustrates a backup of two datafiles being multiplexed into
a single backup set.
       
Input Memory Buffers

    When you are backing up the database, the size and number of input memory buffers depend on
the exact backup command being executed. Primarily, they depend on the number of files being
multiplexed into a single backup. Multiplexing refers to the number of files that will have their
blocks backed up to the same backup piece. To keep the memory allocation within reason, the
following rules are applied to the memory buffer sizes based on the number of files being backed
up together:

■ If the number of files going into the backup set is four or less, then RMAN allocates four
   buffers per file at 1MB per buffer. The total will be 16MB or less.
■ If the number of files going into the backup set is greater than four, but no greater than
   eight, then each file gets four buffers, each of 512KB. This ensures that the total remains
   at 16MB or less.
■ If the number of files being multiplexed is greater than eight, then RMAN allocates four
   buffers of size 128KB. This ensures that each file being backed up will account for 512KB
   of buffer memory.

--//可以想像如果输入缓存如果全部写入输出缓存,通过输出文件写到备份集中的数据分布,也能猜测出输入缓存大小.
--//我在11g备份9个数据文件在一个备份集合看到的input memory buffer = 512K.而不是128K,而且最后备份t09表空间对应的数据文件.
--//我在10g下重复测试:

1.环境:
SYS@test> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx            10.2.0.4.0     Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

CREATE TABLESPACE T01 DATAFILE '/mnt/ramdisk/test/T01.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T02 DATAFILE '/mnt/ramdisk/test/T02.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T03 DATAFILE '/mnt/ramdisk/test/T03.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T04 DATAFILE '/mnt/ramdisk/test/T04.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T05 DATAFILE '/mnt/ramdisk/test/T05.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T06 DATAFILE '/mnt/ramdisk/test/T06.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T07 DATAFILE '/mnt/ramdisk/test/T07.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T08 DATAFILE '/mnt/ramdisk/test/T08.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T09 DATAFILE '/mnt/ramdisk/test/T09.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
CREATE TABLESPACE T10 DATAFILE '/mnt/ramdisk/test/T10.dbf' SIZE 6M AUTOEXTEND OFF LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;

create table t01 tablespace t01 as select rownum id ,lpad('A',32,'A') name from dual connect by level<=1e5;
create table t02 tablespace t02 as select rownum id ,lpad('B',32,'B') name from dual connect by level<=1e5;
create table t03 tablespace t03 as select rownum id ,lpad('C',32,'C') name from dual connect by level<=1e5;
create table t04 tablespace t04 as select rownum id ,lpad('D',32,'D') name from dual connect by level<=1e5;
create table t05 tablespace t05 as select rownum id ,lpad('E',32,'E') name from dual connect by level<=1e5;
create table t06 tablespace t06 as select rownum id ,lpad('F',32,'F') name from dual connect by level<=1e5;
create table t07 tablespace t07 as select rownum id ,lpad('G',32,'G') name from dual connect by level<=1e5;
create table t08 tablespace t08 as select rownum id ,lpad('H',32,'H') name from dual connect by level<=1e5;
create table t09 tablespace t09 as select rownum id ,lpad('I',32,'I') name from dual connect by level<=1e5;
create table t10 tablespace t10 as select rownum id ,lpad('J',32,'J') name from dual connect by level<=1e5;
alter system checkpoint;
alter system checkpoint;

2.测试:

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;

new RMAN configuration parameters:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
new RMAN configuration parameters are successfully stored

RMAN> report schema;

Report of database schema

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    510      SYSTEM               ***     /mnt/ramdisk/test/system01.dbf
2    350      UNDOTBS1             ***     /mnt/ramdisk/test/undotbs01.dbf
3    380      SYSAUX               ***     /mnt/ramdisk/test/sysaux01.dbf
4    100      USERS                ***     /mnt/ramdisk/test/users01.dbf
5    100      EXAMPLE              ***     /mnt/ramdisk/test/example01.dbf
6    15       MSSM                 ***     /mnt/ramdisk/test/mssm01.dbf
7    6        T01                  ***     /mnt/ramdisk/test/T01.dbf
8    6        T02                  ***     /mnt/ramdisk/test/T02.dbf
9    6        T03                  ***     /mnt/ramdisk/test/T03.dbf
10   6        T04                  ***     /mnt/ramdisk/test/T04.dbf
11   6        T05                  ***     /mnt/ramdisk/test/T05.dbf
12   6        T06                  ***     /mnt/ramdisk/test/T06.dbf
13   6        T07                  ***     /mnt/ramdisk/test/T07.dbf
14   6        T08                  ***     /mnt/ramdisk/test/T08.dbf
15   6        T09                  ***     /mnt/ramdisk/test/T09.dbf
16   6        T10                  ***     /mnt/ramdisk/test/T10.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    18       TEMP                 32767       /mnt/ramdisk/test/test01.dbf


RMAN> backup datafile 7,8,9,10,11,12,13,14,15,16 filesperset 10 format '/home/oracle/backup/t123456789A_%U';
Starting backup at 2017-11-29 10:43:27
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00007 name=/mnt/ramdisk/test/T01.dbf
input datafile fno=00008 name=/mnt/ramdisk/test/T02.dbf
input datafile fno=00009 name=/mnt/ramdisk/test/T03.dbf
input datafile fno=00010 name=/mnt/ramdisk/test/T04.dbf
input datafile fno=00011 name=/mnt/ramdisk/test/T05.dbf
input datafile fno=00012 name=/mnt/ramdisk/test/T06.dbf
input datafile fno=00013 name=/mnt/ramdisk/test/T07.dbf
input datafile fno=00014 name=/mnt/ramdisk/test/T08.dbf
input datafile fno=00015 name=/mnt/ramdisk/test/T09.dbf
input datafile fno=00016 name=/mnt/ramdisk/test/T10.dbf
channel ORA_DISK_1: starting piece 1 at 2017-11-29 10:43:28
channel ORA_DISK_1: finished piece 1 at 2017-11-29 10:43:29
piece handle=/home/oracle/backup/t123456789A_1jskp9ug_1_1 tag=TAG20171129T104327 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2017-11-29 10:43:29

$ strings t123456789A_1jskp9ug_1_1 | egrep "AAAAA|BBBBB|CCCCC|DDDDD|EEEEE|FFFFF|GGGGG|HHHHH|IIIII|JJJJJ" | cut -c11-20 | uniq -c
   8430 AAAAAAAAAA
   8430 BBBBBBBBBB
   8430 CCCCCCCCCC
   8430 DDDDDDDDDD
   8430 EEEEEEEEEE
   8430 FFFFFFFFFF
   8430 GGGGGGGGGG
   8430 HHHHHHHHHH
  10116 AAAAAAAAAA
  10116 BBBBBBBBBB
  10116 CCCCCCCCCC
  10116 DDDDDDDDDD
  10116 EEEEEEEEEE
  10116 FFFFFFFFFF
  10116 GGGGGGGGGG
  10116 HHHHHHHHHH
  10416 AAAAAAAAAA
  10416 BBBBBBBBBB
  10416 CCCCCCCCCC
  10416 DDDDDDDDDD
  10416 EEEEEEEEEE
  10416 FFFFFFFFFF
  10416 GGGGGGGGGG
  10416 HHHHHHHHHH
  10752 AAAAAAAAAA
  10752 BBBBBBBBBB
  10752 CCCCCCCCCC
  10752 DDDDDDDDDD
  10752 EEEEEEEEEE
  10752 FFFFFFFFFF
  10752 GGGGGGGGGG
  10752 HHHHHHHHHH
  10416 AAAAAAAAAA
  10416 BBBBBBBBBB
  10416 CCCCCCCCCC
  10416 DDDDDDDDDD
  10416 EEEEEEEEEE
  10416 FFFFFFFFFF
  10416 GGGGGGGGGG
  10416 HHHHHHHHHH
  10752 AAAAAAAAAA
  10752 BBBBBBBBBB
  10752 CCCCCCCCCC
  10752 DDDDDDDDDD
  10752 EEEEEEEEEE
  10752 FFFFFFFFFF
  10752 GGGGGGGGGG
  10752 HHHHHHHHHH
  10416 AAAAAAAAAA
  10416 BBBBBBBBBB
  10416 CCCCCCCCCC
  10416 DDDDDDDDDD
  10416 EEEEEEEEEE
  10416 FFFFFFFFFF
  10416 GGGGGGGGGG
  10416 HHHHHHHHHH
  10752 AAAAAAAAAA
  10752 BBBBBBBBBB
  10752 CCCCCCCCCC
  10752 DDDDDDDDDD
  10752 EEEEEEEEEE
  10752 FFFFFFFFFF
  10752 GGGGGGGGGG
  10752 HHHHHHHHHH
  10416 AAAAAAAAAA
  10416 BBBBBBBBBB
  10416 CCCCCCCCCC
  10416 DDDDDDDDDD
  10416 EEEEEEEEEE
  10416 FFFFFFFFFF
  10416 GGGGGGGGGG
  10416 HHHHHHHHHH
   7534 AAAAAAAAAA
   7534 BBBBBBBBBB
   7534 CCCCCCCCCC
   7534 DDDDDDDDDD
   7534 EEEEEEEEEE
   7534 FFFFFFFFFF
   7534 GGGGGGGGGG
   7534 HHHHHHHHHH
--//也是先解决8个,继续.看来我理解错误.
   8430 IIIIIIIIII
   8430 JJJJJJJJJJ
  10116 IIIIIIIIII
  10116 JJJJJJJJJJ
  10416 IIIIIIIIII
  10416 JJJJJJJJJJ
  10752 IIIIIIIIII
  10752 JJJJJJJJJJ
  10416 IIIIIIIIII
  10416 JJJJJJJJJJ
  10752 IIIIIIIIII
  10752 JJJJJJJJJJ
  10416 IIIIIIIIII
  10416 JJJJJJJJJJ
  10752 IIIIIIIIII
  10752 JJJJJJJJJJ
  10416 IIIIIIIIII
  10416 JJJJJJJJJJ
   7534 IIIIIIIIII
   7534 JJJJJJJJJJ

$ strings t123456789A_1jskp9ug_1_1 | egrep "AAAAA|BBBBB|CCCCC|DDDDD|EEEEE|FFFFF|GGGGG|HHHHH|IIIII|JJJJJ" | cut -c11-20 | uniq -c | grep "IIIII"
   8430 IIIIIIIIII
  10116 IIIIIIIIII
  10416 IIIIIIIIII
  10752 IIIIIIIIII
  10416 IIIIIIIIII
  10752 IIIIIIIIII
  10416 IIIIIIIIII
  10752 IIIIIIIIII
  10416 IIIIIIIIII
   7534 IIIIIIIIII

$ strings t123456789A_1jskp9ug_1_1 | egrep "AAAAA|BBBBB|CCCCC|DDDDD|EEEEE|FFFFF|GGGGG|HHHHH|IIIII|JJJJJ" | cut -c11-20 | uniq -c | grep "AAAAA"
   8430 AAAAAAAAAA
  10116 AAAAAAAAAA
  10416 AAAAAAAAAA
  10752 AAAAAAAAAA
  10416 AAAAAAAAAA
  10752 AAAAAAAAAA
  10416 AAAAAAAAAA
  10752 AAAAAAAAAA
  10416 AAAAAAAAAA
   7534 AAAAAAAAAA

--//备份集合大于8个,先备份8个数据文件,输入缓存512K.继续解决...,如此循环.
--//不过从数量上看读512K(64块)

SYS@test> column PARTITION_NAME noprint
SYS@test> select * from dba_extents where owner=user and segment_name in ('T01');
OWNER  SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID      FILE_ID     BLOCK_ID        BYTES       BLOCKS RELATIVE_FNO
------ ------------ ------------ --------------- --------- ------------ ------------ ------------ ------------ ------------
SYS    T01          TABLE        T01                     0            7            9        65536            8            7
SYS    T01          TABLE        T01                     1            7           17        65536            8            7
SYS    T01          TABLE        T01                     2            7           25        65536            8            7
SYS    T01          TABLE        T01                     3            7           33        65536            8            7
SYS    T01          TABLE        T01                     4            7           41        65536            8            7
SYS    T01          TABLE        T01                     5            7           49        65536            8            7
SYS    T01          TABLE        T01                     6            7           57        65536            8            7
SYS    T01          TABLE        T01                     7            7           65        65536            8            7
SYS    T01          TABLE        T01                     8            7           73        65536            8            7
SYS    T01          TABLE        T01                     9            7           81        65536            8            7
SYS    T01          TABLE        T01                    10            7           89        65536            8            7
SYS    T01          TABLE        T01                    11            7           97        65536            8            7
SYS    T01          TABLE        T01                    12            7          105        65536            8            7
SYS    T01          TABLE        T01                    13            7          113        65536            8            7
SYS    T01          TABLE        T01                    14            7          121        65536            8            7
SYS    T01          TABLE        T01                    15            7          129        65536            8            7
SYS    T01          TABLE        T01                    16            7          137      1048576          128            7
SYS    T01          TABLE        T01                    17            7          265      1048576          128            7
SYS    T01          TABLE        T01                    18            7          393      1048576          128            7
SYS    T01          TABLE        T01                    19            7          521      1048576          128            7
20 rows selected.
--//不小心建立schema=sys.
--//不过有1个细节注意10g的前面8块是os,文件头,以及位图区.而11g前面1M是os,文件头,以及位图区.不是正好对齐.
--//也就是 9-63块的内容对于的"AAAA"数量是8430.
SYS@test> select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 9 and 63 ;
    COUNT(*)
------------
        8430

SELECT    'select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between '
           || TO_CHAR (64 + (ROWNUM - 1) * 64)
           || ' and '
           || TO_CHAR (64+ ROWNUM * 64 - 1)
           || ' ;'
              c100
      FROM DUAL
CONNECT BY LEVEL <= 9;

C100
--------------------------------------------------------------------------------------------
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 64 and 127 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 128 and 191 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 192 and 255 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 256 and 319 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 320 and 383 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 384 and 447 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 448 and 511 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 512 and 575 ;
select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 576 and 639 ;
9 rows selected.

SYS@test> select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 64 and 127 ;
    COUNT(*)
------------
       10116

SYS@test> select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 128 and 191 ;
    COUNT(*)
------------
       10416

SYS@test> select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 192 and 255 ;
    COUNT(*)
------------
       10752

--//不再计算了.
SYS@test> select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 512 and 575 ;
    COUNT(*)
------------
       10416

SYS@test> select count(*) from t01 where DBMS_ROWID.ROWID_BLOCK_NUMBER (rowid) between 576 and 639 ;
    COUNT(*)
------------
        7534

■ If the number of files being multiplexed is greater than eight, then RMAN allocates four
   buffers of size 128KB. This ensures that each file being backed up will account for 512KB
   of buffer memory.
--//也就是512K的输入缓存.分配4个每个128K.
--//10个数据文件同时备份到备份集合.

目录
相关文章
|
7月前
|
Docker 容器
devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 163840 free dat
devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 163840 free dat
59 0
|
算法 开发者
关于 加载图片"Corrupt JPEG data: premature end of data segment" 的解决方法
关于 加载图片"Corrupt JPEG data: premature end of data segment" 的解决方法
关于 加载图片"Corrupt JPEG data: premature end of data segment" 的解决方法
|
缓存 Oracle 关系型数据库
[20171128]rman input memory buffer 3.txt
[20171128]rman input memory buffer 3.txt --//Input Memory Buffers如何测试,不清楚.不过找到一本电子书.
1115 0
|
缓存 Oracle 关系型数据库
[20171129]rman input memory buffer 5.txt
[20171129]rman input memory buffer 5.txt --//Input Memory Buffers如何测试,不清楚.不过找到一本电子书.
928 0
|
缓存 Oracle 关系型数据库
[20171128]rman Input or output Memory Buffers.txt
[20171128]rman Input or output Memory Buffers.txt --//Input Memory Buffers如何测试,不清楚.不过找到一本电子书.
1082 0
|
缓存 Oracle 关系型数据库
[20171205]rman output Memory Buffers 2
[20171205]关于rman output Memory Buffers 2.txt --//昨天在QQ上与人聊天,再次提到这个问题.感觉在链接http://blog.
999 0
|
Oracle 关系型数据库 Shell
1128rman Input or output Memory Buffers
[20171128]rman Input or output Memory Buffers.txt --//做一个简单测试rman 的Input or output Memory Buffers.
937 0

热门文章

最新文章