免费注册 查看新帖 |

Chinaunix

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

关于在其它机器上恢复原来数据库的疑问! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-25 16:49 |只看该作者 |倒序浏览
目的:对Oracle数据库在一台计算机备份,在另一台计算机中进行恢复.数据库的备份采用非目录模式,直接放在控制文件中
OS Envionment:Windows 2000 Sp4
DataBase Version:Oracle 9.2.0.1  
DataBase Name:WEEKMIS
Machine Aroadvancer IP:172.16.234.200
Machine B:Adv06       IP:172.16.234.199


第一步:在Machine A机上设置数据库为归档模式
       
第二步:在Machine A机上备份控制文件,参数文件及数据文件,同时将备份文件复制到Machine B机上(注意路径名与Machine A机器上一致)

第三步:在Machine B装相同版本的数据库

第四步:在Machine B建立与Machine A相同的数据库目录
        ControlFile
        DataBaseFile
        LogFile

第五步:为Machine B数据库建立服务文件,采用ORADIM命令


第六步:为Machine B数据库建立密码文件,采用ORAPWD命令


第七步:为Machine B数据库建立Listener

第八步:为Machine B数据库建立TnsName

第九步:测试监听器及服务是否正确工作

第十步:在Machine B上恢复文件


第一步:在Machine A机上设置数据库为归档模式
(注意:更改数据库默认归档路径)

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 11月 25 14:12:45 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn /as sysdba
已连接。
SQL> archive log list;
数据库日志模式             非存档模式
自动存档             禁用
存档终点            d:\oracle\ora92\RDBMS
最早的概要日志序列     1
当前日志序列           3
SQL> show parameter log_archive_start

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_start                    boolean     FALSE
SQL> show parameter log_archive_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string
log_archive_dest_9                   string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable
SQL> alter system set log_archive_start=true scope=spfile;

系统已更改。

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      %ORACLE_HOME%\DATABASE\SPFILE%
                                                 ORACLE_SID%.ORA
SQL> archive log list;
数据库日志模式             非存档模式
自动存档             禁用
存档终点            d:\oracle\ora92\RDBMS
最早的概要日志序列     1
当前日志序列           3
SQL> alter system set log_archive_dest='D:\oracle\admin\WEEKMIS\archive';

系统已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  185670316 bytes
Fixed Size                   453292 bytes
Variable Size             134217728 bytes
Database Buffers           50331648 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            D:\oracle\admin\WEEKMIS\archive
最早的概要日志序列     1
下一个存档日志序列   3
当前日志序列           3
SQL> show parameter log_archive_start;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_start                    boolean     TRUE
SQL> show parameter log_archive_dest;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string      D:\oracle\admin\WEEKMIS\archiv
                                                 e
log_archive_dest_1                   string
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string

第二步:在Machine A机上备份控制文件,参数文件及数据文件,同时将备份文件复制到Machine B机上(注意路径名与Machine A机器上一致)

Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

C:\Documents and Settings\Administrator>rman

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

RMAN> connect target

连接到目标数据库: WEEKMIS (DBID=1350036729)

RMAN> report schema;

正在使用目标数据库控制文件替代恢复目录
数据库方案报表
文件 KB    表空间           RB segs 数据文件名称
---- ---------- -------------------- ------- -------------------
1        256000 SYSTEM               ***     D:\ORACLE\ORADATA\WEEKMIS\SYSTEM01
DBF
2        204800 UNDOTBS1             ***     D:\ORACLE\ORADATA\WEEKMIS\UNDOTBS0
.DBF
3         25600 INDX                 ***     D:\ORACLE\ORADATA\WEEKMIS\INDX01.D
F
4         10240 TOOLS                ***     D:\ORACLE\ORADATA\WEEKMIS\TOOLS01.
BF
5         25600 USERS                ***     D:\ORACLE\ORADATA\WEEKMIS\USERS01.
BF
6        512000 TCALS                ***     D:\ORACLE\ORADATA\WEEKMIS\TCALS.DB

7        102400 HICMP_CALS_TSP       ***     D:\ORACLE\ORADATA\WEEKMIS\HICMP_CA
S_TSP.DBF

RMAN> list backup;


RMAN> report obsolete;

RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
未找到已废弃的备份

RMAN> report unrecoverable;

由于操作无法被恢复,文件的报表需要备份
备份请求名称的文件类型
---- ----------------------- -----------------------------------

RMAN> list backup;


RMAN> list backup summary;


RMAN> list copy ;

说明与恢复目录中的任何存档日志均不匹配

RMAN> show all;

RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\ORA92\DATABASE\SNCFWEEKMIS.OR'; # default

RMAN> configure controlfile autobackup format for device type disk to 'D:\backu\weekmis_%F';

新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\backup\weekis_%F';
已成功存储新的 RMAN 配置参数


RMAN> allocate channel for maintenance type disk ;

分配的通道: ORA_MAINT_DISK_1
通道 ORA_MAINT_DISK_1: sid=13 devtype=DISK

RMAN> backup database format='D:\backup\weekmis_%U_%s';

启动 backup 于 25-11月-06
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
输入数据文件 fno=00006 name=D:\ORACLE\ORADATA\WEEKMIS\TCALS.DBF
输入数据文件 fno=00001 name=D:\ORACLE\ORADATA\WEEKMIS\SYSTEM01.DBF
输入数据文件 fno=00002 name=D:\ORACLE\ORADATA\WEEKMIS\UNDOTBS01.DBF
输入数据文件 fno=00007 name=D:\ORACLE\ORADATA\WEEKMIS\HICMP_CALS_TSP.DBF
输入数据文件 fno=00003 name=D:\ORACLE\ORADATA\WEEKMIS\INDX01.DBF
输入数据文件 fno=00005 name=D:\ORACLE\ORADATA\WEEKMIS\USERS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\ORADATA\WEEKMIS\TOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 25-11月-06
通道 ORA_DISK_1: 已完成段 1 于 25-11月-06
段 handle=D:\BACKUP\WEEKMIS_01I39NCI_1_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:56
完成 backup 于 25-11月-06

RMAN> release channel;

释放的通道: ORA_MAINT_DISK_1

备份完成之后,在Machine B建立与Machine A对应的数据文件目录



第五步:为Machine B数据库建立服务文件,采用ORADIM命令

C:\Documents and Settings\Administrator>oradim -new -SID WEEKMIS -INTPWD solex -MAXUSERS 10

第六步:为Machine B数据库建立密码文件,采用ORAPWD命令

C:\Documents and Settings\Administrator>orapwd file=D:\oracle\ora92\database\PWDWEEKMIS.ora password=solex entries=10

第七步:为Machine B数据库建立Listener

# LISTENER.ORA Network Configuration File: D:\oracle\ora92\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.234.199)(PORT = 1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = weekmis)
      (ORACLE_HOME = d:\oracle\ora92)
      (SID_NAME = weekmis)
    )
  )


第八步:为Machine B数据库建立TnsName

# TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

WEEKMIS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = adv06)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = WEEKMIS)
    )
  )

第九步:测试监听器及服务是否正确工作

C:\>lsnrctl status

LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 25-11月-2006 15:54
:57

Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.234.199)(PORT=1521))
)
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc
tion
启动日期                  25-11月-2006 12:58:21
正常运行时间              0 天 2 小时 56 分 37 秒
跟踪级别                  off
安全性                    OFF
SNMP                      OFF
监听器参数文件          D:\oracle\ora92\network\admin\listener.ora
监听器日志文件          D:\oracle\ora92\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.234.199)(PORT=1521)))
服务摘要..
服务 "weekmis" 包含 1 个例程。
  例程 "weekmis", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功

C:\>tnsping weekmis

TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 25-11月-2
006 15:55:17

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

已使用的参数文件:
D:\oracle\ora92\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = adv06)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = WEEKMIS)))
OK(50毫秒)




第十步:在Machine B上恢复从Machine A复制过来的文件


Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.



C:\Documents and Settings\Administrator>rman

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

RMAN> connect target sys/solex

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

正在执行命令: SET DBID

RMAN> startup force nomount

启动失败: ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND<~ 'D:\ORACLE\ORA92\DATABASE\INITWEEKMIS.ORA'

正在尝试在没有参数文件的情况下启动 Oracle 例程...
Oracle 例程已启动

系统全局区域总计      97589952 字节

Fixed Size                      453312 字节
Variable Size                 46137344 字节
Database Buffers              50331648 字节
Redo Buffers                    667648 字节

RMAN> restore spfile from 'D:\backup\WEEKMIS_01I39NCI_1_1_1'
2> ;

启动 restore 于 25-11月-06

正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=9 devtype=DISK
通道 ORA_DISK_1: 已找到的自动备份: D:\backup\WEEKMIS_01I39NCI_1_1_1
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 25-11月-06

RMAN> shutdown immediate

Oracle 例程已关闭

RMAN> startup nomount

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

系统全局区域总计     185670316 字节

Fixed Size                      453292 字节
Variable Size                134217728 字节
Database Buffers              50331648 字节
Redo Buffers                    667648 字节

RMAN> restore controlfile from 'd:\backup\WEEKMIS_01I39NCI_1_1_1';

启动 restore 于 25-11月-06

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=D:\ORACLE\ORADATA\WEEKMIS\CONTROL01.CTL
输出文件名=D:\ORACLE\ORADATA\WEEKMIS\CONTROL02.CTL
输出文件名=D:\ORACLE\ORADATA\WEEKMIS\CONTROL03.CTL
完成 restore 于 25-11月-06

RMAN> alter database mount;

数据库已加载

RMAN> restore database;

启动 restore 于 25-11月-06

使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/25/2006 14:55:09
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 7 found to restore
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore

RMAN> restore database from 'd:\backup\WEEKMIS_01I39NCI_1_1_1';

启动 restore 于 25-11月-06

使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/25/2006 14:56:10
RMAN-06509: only SPFILE or controlfile can be restored from autobackup

RMAN> restore database;

启动 restore 于 25-11月-06

使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/25/2006 14:56:34
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 7 found to restore
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore

RMAN>



疑问:


1.在客户机上密码文件后,会出现ORA-01031: insufficient privileges错误.
客户机上的Administrator用户与服务器上Administrator用户的密码一致,且都属于ORA_DBA用户组

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 11月 25 15:17:11 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges


C:\Documents and Settings\Administrator>rman

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

RMAN> connect target

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
ORA-01031: insufficient privileges

2.在Machine B机上在启动数据库为Mount状态下,采用restore Database会出现下面的错误
RMAN> restore database;

启动 restore 于 25-11月-06

使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/25/2006 14:56:34
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 7 found to restore
RMAN-06023: no backup or copy of datafile 6 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore

[ 本帖最后由 proadvancer 于 2006-11-25 16:51 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-11-26 00:18 |只看该作者
实际上异机恢复测试不用那么麻烦,你可以采用我BLOG的文章看看
http://blog.chinaunix.net/u/250/showart_138199.html

针对你现在的问题,你的controlfile已经恢复过来了。你可以用list backup of database查看,备份数据库上面到底能不能找到那个备份,如果不能,还是controfile的问题(采用catalog估计可以解决这个问题)!这是你可以采用dbms_backup_restore从备份逐个提起文件恢复。

论坛徽章:
0
3 [报告]
发表于 2006-11-26 00:19 |只看该作者
基于dbms_backup_restore也可以参考我的BLOG
http://blog.chinaunix.net/u/250/showart_100435.html

论坛徽章:
0
4 [报告]
发表于 2006-11-26 12:06 |只看该作者
谢谢imtj 先生,在此表示感谢!
"基于dbms_backup_restore也可以参考我的BLOG"文章,我已经看过了!

论坛徽章:
0
5 [报告]
发表于 2006-11-26 12:08 |只看该作者
不过,还有一疑问:
1.在客户机上密码文件后,会出现ORA-01031: insufficient privileges错误.
客户机上的Administrator用户与服务器上Administrator用户的密码一致,且都属于ORA_DBA用户组

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 11月 25 15:17:11 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn /as sysdba
ERROR:
ORA-01031: insufficient privileges


C:\Documents and Settings\Administrator>rman

恢复管理器: 版本9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

RMAN> connect target

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
ORA-01031: insufficient privileges
这个问题,相信很多人都会遇到的!还请大家提提意见!

论坛徽章:
0
6 [报告]
发表于 2006-11-26 19:43 |只看该作者
首先要确定orapwd创建SYS密码?不然你要设置INIT.ORA REMOTE_LOGIN_PASSWORDFILE参数为NONE

论坛徽章:
0
7 [报告]
发表于 2006-11-26 21:39 |只看该作者
是的,在Orapwd创建的是Sys密码!
我上网查了一下,INIT.ORA REMOTE_LOGIN_PASSWORDFILE参数为NONE 确实可以解决问题!不过,在上面 Machine A的实例上确实不要设置此参数为None而设为Exclusive,也能conn /as sysdba登录.而不向在Machine B 需要Conn sys/solex as sysdba登录数据库.否则会出现ORA-01031: insufficient privileges错误!

还有在所有的贴子中Unix或者Linux下面没有提到Oradim命令创建服务,在Windows下面创建该服务!

论坛徽章:
0
8 [报告]
发表于 2006-11-27 10:58 |只看该作者
oradim只是windows下的, Unix下没有
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP