How do I throttle backups in Oracle 9i rman?

I am using Oracle 9.2.0.6 in a Solaris 9 environment. I run rman backup jobs regularly to back up and delete archive logs. I also back up the entire database regularly using rman. I back up to disk. I would like to throttle the I/O rate to decrease the impact on performance for production transactions. I am willing to accept the increased length of time required for backups. The "rate" parameter in "allocate channel" is supposed to throttle the I/O. However, I have seen no effect. I've used rates ranging from "normal" to unreasonably low. The rman backup seems to always use all of the resources it can grab and has a significant affect on production operations.
# back up the archive logs
  run {
   allocate channel disk1 type disk format '/proj/back32/oracle/%d/%d_%s_%p_%u' rate 1M;
   allocate channel disk2 type disk format '/proj/back33/oracle/%d/%d_%s_%p_%u' rate 1M;
   allocate channel disk3 type disk format '/proj/back34/oracle/%d/%d_%s_%p_%u' rate 1M;
   allocate channel disk4 type disk format '/proj/back35/oracle/%d/%d_%s_%p_%u' rate 1M;
 
# switch the logfile, back up the archivelogs and then delete them
   sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
   backup (archivelog all delete input);
  }

Open in new window

davestevensAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mrjoltcolaCommented:
Try reducing the number of channels to 1 or 2. Since you have multiple target volumes, this may affect how you want to layout your directory structure in the future.
0
davestevensAuthor Commented:
We limited the number of channels to one some time back in order to mitigate the impact on production. I would like to use four channels at low rates in order to send data to multiple targets, and spread I/O across multiple network interfaces. Disks are mounted via NFS. Mounts are on several network interfaces in order to allow more aggregate bandwidth. We are dealing with hundreds of GB per day of archive logs. Putting the rman backups into separate file systems helps with data management. Running several channels at slower speeds help mitigate impact on production.

The "rate" parameter to "allocate channel" looks like the appropriate solution for what I'm trying to accomplish. I have not been able to get it to work.
0
mrjoltcolaCommented:
>>The "rate" parameter to "allocate channel" looks like the appropriate solution for what I'm trying to accomplish.  I have not been able to get it to work.

Which is why I suggested reducing channels. The more parallel RMAN readers you have, the more impact on performance. Just a fact. Try 2 vs 4? Try 3 vs 4?

You are not the first person I have seen using 4 channels with RMAN and complaining of poor production performance during backup.

Throttling can be done in multiple ways. If you are stuck on using 4 processes, then I guess I would ask what values you did try for RATE?

I can use values like 500k and I _definitely_ see the impact. Sounds like you are well informed, so I don't have to explain the inverse relationship between the IO rate and the backup window. But I have not used this option in 9i and don't have any 9i to test on, so can you fill me in on the rates you tried?
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

davestevensAuthor Commented:
I have tried rate values of:

4M
3M
2M
1M
1

I tried the additional syntax of:

set limit channel disk1 readrate 1024000 ;

I may have tried some others as well. I've tried several values for the rate parameter when using only one channel. In no case did I see any change in the transfer speed as a result of using the "rate" parameter. RMAN doesn't complain about the parameter, but it doesn't seem to honor it in any way.

This may be a user problem. However, the behavior is as if the "rate" parameter is not implemented for Oracle 9.2.0.6 as it is installed on my site.

The solution of using a single channel will work. If the "rate" parameter worked, it would allow me more control over the impact of rman. It has become a challenge to find out of "rate" is really not functional, or if this is a "user" problem.
0
mrjoltcolaCommented:
>>However, the behavior is as if the "rate" parameter is not implemented for Oracle 9.2.0.6 as it is installed on my site.

That is entirely possible, Oracle bugs / issues do happen. I will check Metalink. I can report it works well on 10g. I can set to 500k and the backup runs for an hour in the background.

>>The solution of using a single channel will work.

I wouldn't prefer 1 channel, I am sorry I insinuated 1, I was referring to try and test. If I had your bandwidth, I would only scale back 1 channel at a time. With the transaction volume you have, 1 is not enough. I said 1 because that is the fastest way to determine impact, sort of a "binary search", if you will, try the extremes, then settle in the middle.
0
davestevensAuthor Commented:
Thanks for the suggestions. They are consistent with my attempts.

I just tried a single channel with "rate 10240." The "iostat -xnmpzM 10" isolates the output disk and shows traffic at 26Mw/s (26 MB/sec) through the interface over which the disk is mounted. The only traffic on that interface is the output from rman to the backup file system. There doesn't appear to be any throttling going on.

We operate with licenses for Oracle based on run time licenses included with software that depends on Oracle. I don't have access to Metalink, so am hampered in searching for bugs and solutions. I've been messing with this problem as a background issue for months. My interest has become intense during the last week. This should work and I haven't been successful in implementing it.
0
mrjoltcolaCommented:
According to Metalink, there is a bug in 9i for the RATE parameter, so you are correct sir.

The workaround is to use the old READRATE param, which if you recall, isn't in K or M, it is in buffers per second, and in 9i _DB_FILE_DIRECT_IO_COUNT is fixed at 1mb, so use 1 integer unit per Mb.

So to setup 2M as above, use: readrate 2


The Metalink article is 271979.1
Bug : 2492565 Channel Operand Spec Rate Does Not Work As Expected
Bug : 2649312 Channel Parameter "Rate" Doesn'T Limit Disk Reads Correctly

You have to get with Oracle on this, or use the workaround. Fixed in 10g.

Good luck, let me know how it works!
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
davestevensAuthor Commented:
Excellent! Your research and response showed the proper way to set up the limits, given that "rate" doesn't work.

I am current running four channels and they are indeed throttled. It makes tuning and data management much easier for my environment. A run block that works properly with throttling is below.

Thanks for you fast and effective help.
# back up the archive logs
  run {
   allocate channel disk1 type disk format '/proj/back32/oracle/%d/%d_%s_%p_%u' ;
   allocate channel disk2 type disk format '/proj/back33/oracle/%d/%d_%s_%p_%u' ;
   allocate channel disk3 type disk format '/proj/back34/oracle/%d/%d_%s_%p_%u' ;
   allocate channel disk4 type disk format '/proj/back35/oracle/%d/%d_%s_%p_%u' ;
 
   set limit channel disk1 readrate 1 ;
   set limit channel disk2 readrate 1 ;
   set limit channel disk3 readrate 1 ;
   set limit channel disk4 readrate 1 ;
 
 
# switch the logfile, back up the archivelogs and then delete them
   sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
   backup (archivelog all delete input);
  }

Open in new window

0
davestevensAuthor Commented:
Thanks for identifying the Oracle bug and explaining that the "readrate" parameter is in buffers/sec rather than bytes/sec.
0
mrjoltcolaCommented:
You are welcome, glad to help. Btw, my 500k/sec test case backup just finished after 3hrs and 18 minutes. :)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.