免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4082 | 回复: 4
打印 上一主题 下一主题

rman四篇小结 基础 rac dup 恢复 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-13 13:58 |只看该作者 |倒序浏览
本帖最后由 xhellfire 于 2011-06-13 14:01 编辑

http://unixman.tk/?p=588


rman总结1 基础



1. 连接到数据库

rman target /

rman target usr/pwd@tnsnames

2. 指定log位置

rman log /tmp/rman.log

3. 指定cmdfile

rman target / cmdfile=’/path/bak.sh’

4. 显示所有配置

>show all;

5. 配置默认backupset存放位置(磁盘)

>configure channel device type disk format ‘c:\%f’;

>configure channel device type disk format ‘+dg_uniquename’;

6.自动备份controlfile

>configure controlfile autobackup format for device type disk to ‘/path/ctl_%F’

7.清除配置

>configure controlfile autobackup format for device type disk clear;

其他的类似

————————————————————————————–

rman 备份数据库

1.备份整库

>backup database plus archivelog;

>backup database plus archivelog delete all input   ##注意在dg的环境下,不要这么做.

>backup database format ’/backup/dbf_%T_%U.bkp’  plus archivelog  format=’/backup/arc_%T_%U.bkp’;

以上是备份整库和archivelog,并手工指定位置



其他什么增量备份,备份某个tablespace,又啥啥的自己去看guide。

————————————————————————————–

rman  backupset&archivelog 管理

1.

> report obsolete;

>report expired;

显示过期的和失效的backupset.  这个看你怎么设置了。具体查询guide.

2.  > crosscheck backup;

> crosscheck archivelog all;

> delete noprompt expired backup;

>delete noprompt expired archivelog all;

检查 backupset和archivelog ,删除失效的archivelog和backupset.



3. 显示backupset

> list backup;

>list backup summary;

4. 删除 backupset

> delete backupset  ID1,ID2,ID3

>delete all;

5.  删除archivelog

> delete archivelog all;

什么都不管,全删。

>delete noprompt archivelog all backed up 1 times to device type disk;

删除所以已经被备份过一次的archivelog

>delete noprompt archivelog all completed before ‘sysdate-7′;

删除所有7天前的archivelog

>delete noprompt archivelog  until time ‘sysdate-7′  backuped up 1 times to device type disk;

删除7天前已经被备份过一次的archivelog



6.导入backupset

> catalog start with ‘+disk’;

>catalog  start with ‘/path’;

以上是道路目标路径下的所有backupset

>catalog backuppiece ‘/path/to/set.bkp’,'set2.bkp’;

以上是导入某个/几个 backupset

附个view ,v$backup_piece

rman的某个备份脚本


  1. run{

  2. allocate channel c1 device  type disk format '/backup/dbf_%T_%U.bkp';
  3. allocate channel c2 device  type disk format '/backup/dbf_%T_%U.bkp';

  4. delete noprompt obsolete;
  5. crosscheck backup;
  6. crosscheck archivelog all;
  7. delete noprompt expired backup;
  8. delete noprompt expired archivelog all;

  9. backup database plus archivelog  format='/backup/arc_%T_%U.bkp';

  10. delete noprompt obsolete;
  11. crosscheck backup;
  12. crosscheck archivelog all;
  13. delete noprompt expired backup;
  14. delete noprompt expired archivelog all;

  15. delete noprompt archivelog all completed before 'sysdate-7';
  16. }


  17. ############以下是调用脚本

  18. #!/bin/sh

  19. PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.
  20. export PATH
  21. export ORACLE_BASE=/oracle/app
  22. export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
  23. export ORACLE_SID=orcl1
  24. export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
  25. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
  26. export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATH
  27. export AIXTHREAD_SCOPE=S


  28. echo "===================== `date`=================" >>/backup/scripts/rman.log

  29. rman target / cmdfile='/backup/scripts/dbbak.sql'>>/backup/scripts/rman.log

  30. echo "================================">>/backup/scripts/rman.log

  31. echo "manual delete archivelog backuped by rman ,7 days ago">>/backup/scripts/rman.log

  32. find /backup -xdev -mtime  +7 -name "arc*" -exec ls -ltr {} \; >>/backup/scripts/rman.log

  33. find /backup -xdev -mtime +7 -name "arc*" -exec rm -rf {} \;
  34. ######因为都是全库备份,而且rman不会通过时间判断来删除archivelog的backupset,所以需要os层来删除。
  35. ######如果谁有好的方法,还望不吝赐教~

  36. echo "delete complete `date`">>/backup/scripts/rman.log
  37. echo "================================">>/backup/scripts/rman.log

  38. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-06-13 14:02 |只看该作者
http://unixman.tk/?p=593

rman总结2 rac环境

rac环境下比较特殊,备份和恢复的时候都比较麻烦。
如果是用ASM或者cluster FS 会很简单,跟单节点没什么区别。

假设环境是ORACLE 10G RAC WITH RAW

1) 本地存储,这是最麻烦的。 在恢复的时候必须把db2的backupset 拷贝到 db1.
database和archivelog的backupset会分别放置在db1和db2上(具体路径看的rman设置,注意两边路径要一致).
RMAN> run
2> {
3> allocate channel c1 device type disk connect sys/oracle@orcl1;
4> allocate channel c2 device type disk connect sys/oracle@orcl2;
5> backup database ;
6> }

以上是备份

RMAN> run
2> {
3> allocate channel c1 device type disk connect sys/oracle@orcl1;
4> allocate channel c2 device type disk connect sys/oracle@orcl2;
5> restore database ;
6> recover database;
7> }

以上是恢复

2) 共享存储 这种就简单多了. ASM,OCFS,NFS

操作同单机,不详述。
有一点要注意,两个节点的log_archive_dest_x路径要一致。

在10G RAW的情况下,没有ASM,也没有第三方软件,ORACLE推荐用NFS的方式来解决。但是个人认为这中方式效率低,风险也很大.

———————
补充在AIX环境下,NFS mount的参数

options=rw,hard,rsize=32769,wsize=32769,noac,bg,nointr,timeo=600,vers=3

记得用smitty nfs 来增加,最好不要手工写

————

总结下,如果有ASM最好用ASM,但是一般来说10G 都是裸设备多。 如果存储带NAS功能,最好从存储上划分个LUN,通过nfs的方式挂到db server,这样可以避免因NFS SERVER 挂掉导致的问题。 但是网络连通的隐患依旧存在的。

论坛徽章:
0
3 [报告]
发表于 2011-06-13 14:03 |只看该作者
http://unixman.tk/?p=600

rman总结3 dup

it’s not setup by setup

1. 创建目标实例
$ export ORACLE_SID=dupdb1

##如果是windows,需要oradim先新建一个服务

2. 创建目录
$ cd /oracle/admin/
$ mkdir adump bdump cdump dpdump udump

3 创建,配置pfile

从原来的库弄一个出来
SQL> create pfile=’/home/oracle/pfile.dup’ from spfile;

修改参数
注意: 如果目标和源库的dbfile,logfile存放位置不一致,需要增加2个参数.
db_file_name_convert,log_file_name_convert
exp:

.db_file_name_convert=’/dev’,'/oradata/orcl’
.log_file_name_convert=’/dev’,'/oradata/orcl’
再从pfile.dup创建spfile

SQL>create spfile from pfile=’/home/oracle/pfile.dup’

4.创建密码文件

$orapwd file=/oracle/product/10.2.0.db_1/dbs/PWDdupdb1.ora

5.启动到nomount

SQL>startup nomount;

6. 创建dupdb1的listener

7. 修改源库的tnsname.ora

增加一个dupdb1的连接.

8. 在源裤创建一个full database backupset

9. 把源库的备份set scp到目标库,注意存放位置要跟源库一致.(也可以用nfs mount)

10. 执行复制

>rman target / auxliary sys/oracle@dupdb1

>duplicate target database to “dupdb1″ nofilenamecheck;

需要注意的是,如果源和目标库的dbfile和logfile路径一致,那么需要增加 nofilenamecheck的参数.
如果不一致,需要修改目标库的pfile,增加 db_file_name_convert,log_file_name_convert这2个参数.

下面是个目标库pfile的例子 ,供参考

  1. stb.__db_cache_size=1207959552
  2. stb.__java_pool_size=16777216
  3. stb.__large_pool_size=16777216
  4. stb.__shared_pool_size=352321536
  5. stb.__streams_pool_size=0
  6. *.audit_file_dest='/oracle/app/admin/orcl/adump'
  7. *.background_dump_dest='/oracle/app/admin/orcl/bdump'
  8. *.compatible='10.2.0.3.0'
  9. *.control_files='/oradata/orcl/control01','/oradata/orcl/control02'#Restore Controlfile
  10. *.core_dump_dest='/oracle/app/admin/orcl/cdump'
  11. *.db_block_size=8192
  12. *.db_domain=''
  13. *.db_file_multiblock_read_count=16
  14. *.db_file_name_convert='/dev','/oradata/orcl'
  15. *.db_name='orcl'
  16. *.db_unique_name='stb'
  17. *.fal_client='STB'
  18. *.fal_server='ORCL'
  19. orcl1.instance_number=1
  20. orcl2.instance_number=2
  21. *.job_queue_processes=10
  22. *.log_archive_config='dg_config=(orcl,stb)'
  23. *.log_archive_dest_1='LOCATION=/archive valid_for=(all_logfiles,all_roles)
  24. db_unique_name=stb'
  25. *.log_archive_dest_state_1='ENABLE'
  26. *.log_archive_format='%t_%s_%r.arc'
  27. *.log_archive_max_processes=4
  28. *.log_file_name_convert='/dev','/oradata/orcl'
  29. *.open_cursors=300
  30. *.pga_aggregate_target=3304062976
  31. *.processes=1000
  32. *.remote_login_passwordfile='EXCLUSIVE'
  33. *.sessions=1105
  34. *.sga_target=1610612736
  35. *.standby_file_management='AUTO'
  36. *.undo_management='AUTO'
  37. *.undo_tablespace='UNDOTBS1'
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-06-13 14:04 |只看该作者
http://unixman.tk/?p=609

rman总结4 恢复

正常的情况下 restore之后再recover就好了.

1. 恢复到指定的sequence

> restore database until sequence 123 thread 2;
> recover database;

2. 恢复到不能恢复为止
>recover database until cancel;

3. 从某个backupset恢复controlfile
>restore controlfile from ‘/path/to/backupset’;

4. 恢复某个表空间

1)先offline掉它
SQL>ALTER TABLESPACE TS_NAME1 OFFLINE IMMEDIATE;
2)恢复
> restore tablespace TS_NAME1;
> recover tablespace TS_NAME1;
3) online

SQL>ALTER TABLESPACE TS_NAME1 ONLINE IMMEDIATE;

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2011-06-13 22:04 |只看该作者
学习了啊。我还没有搞过RMAN呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP