ITPub博客

首页 > Linux操作系统 > Linux操作系统 > nocatalog的rman备份与恢复的常用命令

nocatalog的rman备份与恢复的常用命令

原创 Linux操作系统 作者:hjgluguo 时间:2009-09-07 21:42:20 0 删除 编辑

查看数据库是否处于归档状态
$sqlplus /nolog
SQL> conn /as sysdba
SQL> startup
SQL> archive log list
如果不是处于归档状态,则把它改为归档状态
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog
SQL> alter database open;
SQL> archive log list;

$rman nocatalog
RMAN> connect target /
查看是否做过备份
RMAN> list backupset;

做全备份
RMAN> backup database;
查看已做的备份
RMAN> list backupset;
查看执行backup database时的默认选项
RMAN> show all;
0级增量备份
RMAN> backup incremental level=0 database;
查看已做的备份
RMAN> list backupset;
1级增量备份
RMAN> backup incremental level 1 database;
查看已做的备份
RMAN> list backupset;
相关的备份信息已经添加到控制文件
$ strings $ORACLE_BASE/oradata/SID/control01.ctl | more
把归档也进行备份
$ rman target /
RMAN> backup database plus archivelog delete input;
查看已备份的信息
RMAN> list backupset;
查看数据库表空间的信息
RMAN> report schema
备份某一表空间
RMAN> backup tablespace users;
备份控制文件
RMAN> backup current controlfile;
查看已备份的信息
RMAN> list backupset;
镜像备份
RMAN> copy datafile 4 to '/u01/app/user01.dbf';
查看已做的镜像备份
RMAN> list copy;

单命令
RMAN> backup database;
批命令
RMAN> run {
    allocate channel cha1 type disk;
    backup
    format "/u01/app/rmanbak/full_%t"
    tag full-backup
    database;
    release channel cha1;
    }

一个典型的增量备份案例如下:
星期天晚上  - level 0 backup performed
星期一晚上  - level 2 backup performed
星期二晚上  - level 2 backup performed
星期三晚上  - level 1 backup performed
星期四晚上  - level 2 backup performed
星期五晚上  - level 2 backup performed
星期六晚上  - level 2 backup performed

脚本文件分别为baklev0, baklev1, baklev2
baklev0的内容为:
run {
allocate channel c1 type disk;
backup
incremental level 0
format "/u01/app/rmanbak/inc0_%u_%T"
tag monday_inc0
database;
release channel c1;
baklev1和baklev2的脚本跟0的差不多
执行脚本:
$rman target / mslog=baklev0.log cmdfile=baklev0
$rman target / mslog=baklev1.log cmdfile=baklev1
$rman target / mslog=baklev2.log cmdfile=baklev2

可以用crontab -e 增加一个自动执行的备份计划

查看已做的rman备份的备份文件信息
RMAN> crosscheck backup;
删除所有的备份
RMAN> delete backup;
查看已做的镜像备份文件信息
RMAN> crosscheck copy;
删除所有的镜像备份
RMAN> delete copy;
查看是否还有备份信息
RMAN> list backupset;
RMAN> list copy;

查看控制文件是否自动备份
RMAN> show all;
若控制文件没有自动备份,可以把它设为自动备份
RMAN> configure controlfile autobackup on;
再次查看
RMAN> show all;

指定文件存放路径和包含归档文件的备份
RMAN> backup format '/u01/app/rmanbak/full_%T_%u.bak' database plus archivelog;
查看已做的备份
RMAN> list backupset;

重装密码文件
$cd $ORACLE_HOME/dbs
$orapwd file=orapwddb password=pass123456 entries=5

参数文件spfile丢失的恢复
RMAN> shutdown immediate;
RMAN> startup
因为丢失了控制文件,所以不能打开数据库
以下进行恢复
RMAN> set dbid 1457116806  (注:这个dbid号在备份时可以看到)
RMAN> restore spfile from '/u01/app/oracle/flash_recovery_area/DB/autobackup/2009_09_06/o1_mf_s_696864885_5b6lhoqn_.bkp';(注:此备份文件用list backupset可以看到)
或者
RMAN> restore spfile from autobackup db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' db_name='DB'; (注:DB为数据库SID)

控制文件的恢复
$sqlplus /nolog
SQL> conn /as sysdba
SQL> shutdown immediate;
因为控制文件丢失了,不能正常关闭数据库,只能用以下命令关闭
SQL> shutdown abort;
退出sqlplus进入到rman
$rman
RMAN> connect target /
恢复数据库要让数据库处于nomount状态
RMAN> startup nomount;
RMAN>restore controlfile from autobackup;
RMAN> alter database mount;
此时执行以下命令,但会报错:
RMAN> alter database open resetlogs;
执行数据库的全部恢复
RMAN>recover database;
再执行如下命令就可以
RMAN> alter database open resetlogs;
(注意:假如恢复要重置logs文件,则必须在执行完些命令做个全备份.否则的话,以后恢复数据库时,用旧的备份,但logs文件重置了,恢复会出现问题)

重做日志文件的恢复
$sqlplus /nolog
SQL> conn /as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> recover database until cancel;
SQL> alter database open resetlogs;
(注意:假如恢复要重置logs文件,则必须在执行完些命令做个全备份.否则的话,以后恢复数据库时,用旧的备份,但logs文件重置了,恢复会出现问题)
检测恢复结果
SQL> SELECT * FROM scott.emp;

查看connect的权限
SQL> SELECT * FROM dba_sys_privs WHERE grantee='CONNECT';
查看resource的权限
SQL> SELECT * FROM dba_sys_privs WHERE grantee='RESOURCE';
查看recovery_catalog_owner的权限
SQL> SELECT * FROM dba_sys_privs WHERE grantee='RECOVERY_CATALOG_OWNER';

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7865774/viewspace-614131/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 序列的回顾
请登录后发表评论 登录
全部评论

注册时间:2008-07-11

  • 博文量
    97
  • 访问量
    181598