ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用Catalog命令注册RMAN备份集

使用Catalog命令注册RMAN备份集

原创 Linux操作系统 作者:fengjin821 时间:2009-07-26 17:44:37 0 删除 编辑

使用Catalog命令注册RMAN备份集

有朋友问在Oracle 10G R2版本中:

只有原库数据文件的RMAN备份集(此备份集不包含控制文件,log,参数文件等等,单纯只有数据库的所有数据文件的备份集),主库废了(可以理解为机房所在地地震了).

现在要求在新实例中恢复这个RMAN的数据文件备份集.

1.原数据库的表空间名称,数据文件结构\名称\数量--未知.

2.原数据文件的FILE#也许是不连续的.(可能5号文件后6.7.8都空闲,然后是9号数据文件.)

这样说吧,可以说你对原数据库一无所知.

我试过dbms_backup_restore抽取RMAN备份集中数据文件,再建立控制文件,确实可以恢复但,这个方法有局限性,不够完美.

抽取的时候需要指明FILE#,NEW_DATAFILE_NAME...

可以说抽取是尝试的抽取.FILE#=5,6,7这样一个一个的尝试,这就对多数据文件的库很麻烦,而且文件号不连续会报错停止抽取动作.下一条抽取动作就无法继续执行.要手动关闭通道后再次抽取.

迫切的想知道如何查出RMAN的备份集中的数据文件信息.

想知道如何收集全建立出支持这个备份集的控制文件.

我们知道Oracle10g丰富了catalog命令,使用这个命令,可以将RMAN的备份集注册到控制文件(或者目录数据库中)

类似的一系列命令有:

CATALOG ARCHIVELOG '?/oradata/archive1_30.dbf', '?/oradata/archive1_31.dbf',

                  '?/oradata/archive1_32.dbf';

CATALOG DATAFILECOPY '?/oradata/users01.bak' LEVEL 0;

CATALOG START WITH '/tmp/arch_logs';

CATALOG RECOVERY AREA NOPROMPT;

CATALOG BACKUPPIECE '?/oradata/01dmsbj4_1_1.bcp';

但是注意这些命令是有限制的,其中的一个限制是不能注册备份文件到不同的数据库:

You cannot use CATALOG to catalog a file that belongs to a different database.

也就是说你至少还需要原数据库的控制文件。

否则就会出现类似如下的错误:

[oracle@standby ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Thu May 22 01:02:56 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database (not started)

RMAN> set dbid=1490303982

executing command: SET DBID

RMAN> startup mount;

Oracle instance started

database mounted

Total System Global Area    285212672 bytes

Fixed Size                    1218992 bytes

Variable Size                92276304 bytes

Database Buffers            188743680 bytes

Redo Buffers                  2973696 bytes

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of startup command at 05/22/2008 01:03:08

RMAN-06189: current DBID 1490303982 does not match target mounted database (1492784050)

是否没有办法呢?当然是有的,

我们可以先修改一个恢复数据库的DBID,然后再来注册这个备份集。

修改DBID可以使用之前我曾经写过的,Oracle10g 的 dbms_backup_restore 包。

修改之后就可以用来注册了,看看我注册一个种子数据库备份集的过程:

C:\>rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期三 5月 21 22:25:34 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库 (未启动)

RMAN> startup mount;

Oracle 实例已启动

数据库已装载

系统全局区域总计    251658240 字节

Fixed Size                    1289988 字节

Variable Size                171966716 字节

Database Buffers              75497472 字节

Redo Buffers                  2904064 字节

RMAN> catalog start with 'd:\obak';

使用目标数据库控制文件替代恢复目录

搜索与样式 d:\obak 匹配的所有文件

数据库未知文件的列表

=====================================

文件名: D:\obak\FULL20080520

文件名: D:\obak\Seed_Database.dfb

是否确实要将上述文件列入目录 (输入 YES 或 NO)? YES

正在编制文件目录...

目录编制完毕

已列入目录的文件的列表

=======================

文件名: D:\obak\Seed_Database.dfb

未列入目录的文件的列表

=======================================

文件名: D:\obak\FULL20080520

  RMAN-07518: 原因: 外部数据库文件 DBID: 1052376487  数据库名: EEYGLE

RMAN> list backup;

备份集列表

===================

BS 关键字  类型 LV 大小

------- ---- -- ----------

2      Full    91.88M

  备份集 2 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间  名称

  ---- -- ---- ---------- ---------- ----

  1      Full 538267    19-11月-06 D:\ORACLE\ORADATA\EYGLE\DATAFILE\O1_MF_SYSTEM_3V7YLH8S_.DBF

  2      Full 538267    19-11月-06 D:\ORACLE\ORADATA\EYGLE\DATAFILE\O1_MF_UNDOTBS1_3V7YLHHN_.DBF

  3      Full 538267    19-11月-06 D:\ORACLE\ORADATA\EYGLE\DATAFILE\O1_MF_SYSAUX_3V7YLH9R_.DBF

  4      Full 538267    19-11月-06 D:\ORACLE\ORADATA\EYGLE\DATAFILE\O1_MF_USERS_3V7YLHJ3_.DBF

  备份集 副本号 1 属于备份集 2

  设备类型 经过时间 完成时间  压缩标记

  ----------- ------------ ---------- ---------- ---

  DISK        00:00:00    21-5月 -08 YES

    备份集 2 副本号 1的备份段列表

    BP 关键字  Pc# 状态      段名称

    ------- --- ----------- ----------

    1      1  AVAILABLE  D:\OBAK\SEED_DATABASE.DFB

  备份集 副本号 2 属于备份集 2

  设备类型 经过时间 完成时间  压缩标记

  ----------- ------------ ---------- ---------- ---

  DISK        00:00:00    21-5月 -08 YES

    备份集 2 副本号 2的备份段列表

    BP 关键字  Pc# 状态      段名称

    ------- --- ----------- ----------

    2      1  AVAILABLE  D:\OBAK\SEED_DATABASE.DFB

RMAN>

 

------------------------------------------------

 

如果不是异机恢复,并且物理位置变了可以重新把备份集再注册一下,使得控制文件能够支持这个备份集

 

 

 

使用Dbnewid更改oracledbiddbname

平台;redhat linux as5, oracle10g
内容介绍:本文介绍如何使用dbnewid修改oracle10gdbiddbname及操作程中常见的故障排除,其中dbid是标识数据库的内部标识符,dbname是标识数据库的名称.使用dbnewid可以避免重建控制文件。更改db_name的时候,由于数据库名还存在于参数文件中,因此,更改数据库名时也要更改相应的参数。如果使用了spfile,那么要重建它。另外,还需要重建密码文件。最后介绍了如何更改global_nameinstance_naem

1.更改dbnamedbid

查看现在的dbnamedbid
SQL> show parameter name;
NAME                                   TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert              string
db_name                                 string          denver
global_names                           boolean      denver
instance_name                          string         denver
oracle_trace_collection_name   string
oracle_trace_facility_name        string        oracled
plsql_native_make_file_name    string
service_names                          string         denver
可见dbname,dbid,instance_name, global_names都为denver
1.修改DBIDDBNAME
如果只更改dbid
SQL>! nid target=sys/password@denver
如果只更改db_name
SQL>! nid TARGET=sys/password@denver dbname=taaa setname=y
如果你想同时更改数据库名(db_name)和数据库IDdbid),
SQL> ! nid target=sys/password@denver dbname=aaa
:
SQL> ! nid target=sys dbname=aaa
本文同时更改dbiddbname
SQL> shutdown immediate
SQL> startup mount;
SQL> ! nid target=sys dbname=aaa
DBNEWID: Release 9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
Password: (输入密码)
Connected to database DENVER (DBID=3973837782)
Control Files in database:
    /u01/oradata/denver/control01.ctl
    /u01/oradata/denver/control02.ctl
    /u01/oradata/denver/control03.ctl
Change database ID and database name DENVER to AAA? (Y/[N]) => y
Proceeding with operation
Changing database ID from 3973837782 to 1841424434
#省略一部分
Shut down database and open with RESETLOGS option.
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.
简单排错
1.如果数据文件不正常这一步很可能执行不成功,如下
SQL> select file#,status from v$datafile;
     FILE# STATUS
---------- -------------------
         1 SYSTEM
         2 ONLINE
         3 ONLINE
         4 ONLINE
         5 ONLINE
         6 RECOVER
把文件6恢复
SQL> recover datafile 6;
2.查看归档日志
有时候在归档方式下,没有归档日录,这时要新建一个归档日录
SQL> archive log list;
SQL> host ls -l /home/oracle/oracle/oradata/db2/arch
ls: /home/oracle/oracle/oradata/db2/arch: No such file or directory
[oracle@oracle ~]$ cd /home/oracle/oracle/oradata/db2/
[oracle@oracle db2]$ mkdir arch
2.重建参数文件
查看使用什么参数文件
SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                                   string      ?/dbs/spfile@.ora
重建spfile
SQL> create pfile from spfile;
 
[oracle01@vfast dbs]$ vi initdenver.ora
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='aaa'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=denverXDB)'
*.fast_start_mttr_target=300
 
[oracle01@vfast dbs]$ mv spfiledenver.ora spfiledenver.ora.bak
SQL> create spfile from pfile;
3.修改密码文件
[oracle01@vfast ~]$ cd $ORACLE_HOME/dbs
[oracle01@vfast ~]$mv orapwdenver orapwdever.bak
[oracle01@vfast dbs]$ orapwd file=orapwdenver password=123456
4.resetlogs参数启动
SQL> shutdown immediate;
SQL>startup mount;
SQL> alter database open resetlogs;
SQL> show parameter name;
Database altered.
db_name                              string      aaa
global_names                          boolean     denver
instance_name                         string      denver
service_names                         string      aaa
数据库能启动了,db_nameservice_name也修改成功了
:更改global_names
修改global_names
SQL> alter database rename global_name to aaa;
Database altered.
:更改instance_name
SQL>alter system set instance_name=’aaa’ scope=spfile;
SQL>shutdown immediate;
SQL>startup;
现在再查看:
SQL> show parameter name;
Database altered.
db_name                              string      aaa
global_names                          boolean     aaa
instance_name                         string      aaa
service_names                         string      aaa
可见global_nameinstnace_name也更改了.

 

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

上一篇: VXVM 管理逻辑卷
请登录后发表评论 登录
全部评论

注册时间:2009-04-29

  • 博文量
    191
  • 访问量
    507758