MAN异机异目录恢复

Oracle异机异目录恢复

MAN异机异目录恢复

  (2014-11-21 10:04:35)
标签: 

it

 

A机备份数据到B机异目录恢复 

事先记住A机的DBID

 B机新建一个数据库,与A机相同

 DOS下更改ORACLE_ID

 

关闭数据库

SQL>shutdown immediate

 

设置DBID,与A机相同

SET DBID XXXXXXXX

 

启动到noumount 状态

 SQL> startup nomount
ORACLE 例程已经启动。

 

由备份文件恢复SPFILE文件

RMAN> restore spfile to 'D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA' from 'D:\ora_backup\C-1391059141-20141121-0021';

启动 restore 于 21-11月-14
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 设备类型=DISK

通道 ORA_DISK_1: 正在从 AUTOBACKUP D:\ora_backup\C-1391059141-20141121-0021 还原 spfile
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 11/21/2014 16:15:26 上) 失败
ORA-32011: 不能将 SPFILE 还原到已被此实例使用的位置

出现此提示,因为spfile文件正在被使用,所以需要改名,可随意更改,如SPFILEORCL01.ORA

RMAN> restore spfile to 'D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEORCL01.ORA' from 'D:\ora_backup\C-1391059141-20141121-0021';

 

再由新SPFILE生成PFILE,并用记事本打开进行修改,由于是异机异目录备份,所以必须修改相关参数。因为PFILE是基于文本格式的参数文件,可直接用记事本修改,SPFILE为二进制文件,无法直接修改。

SQL> create pfile='D:\app\Administrator\admin\ORCL\pfile\init.ora.1021201415493' from spfile='D:\app
\Administrator\product\11.2.0\dbhome_1\database\SPFILEORCL01.ORA';

文件已创建。

 

PFILE修改完成后再由PFILE重新生成SPFILE文件。

SQL> create spfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEORCL01.ORA' from pfi
le='D:\app\Administrator\admin\ORCL\pfile\init.ora.1021201415493';

文件已创建。

 

恢复控制文件

RMAN> restore controlfile from 'D:\ora_backup\C-1391059141-20141121-0021';

启动 restore 于 21-11月-14
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 设备类型=DISK

通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
输出文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL
完成 restore 于 21-11月-14

 

启动到mount状态

SQL> alter database mount;

数据库已更改。

有可能会出现ORA-00119的报错(原因不详,需要问老师), 把PFILE文件里的*.local_listener里的参数改成如下:

*.local_listener='(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=serverIP)(Port=1521)))'
 
注册A机备份文件
RMAN> catalog start with 'D:\ora_backup';
启动 implicit crosscheck backup 于 21-11月-14
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 设备类型=DISK
已交叉检验的 3 对象
完成 implicit crosscheck backup 于 21-11月-14
启动 implicit crosscheck copy 于 21-11月-14
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 21-11月-14
搜索恢复区中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_11_20\O1_MF_1_4_B6V9GV48_.ARC
文件名: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_11_21\O1_MF_1_4_B6X80LVP_.ARC
搜索与样式 D:\ora_backup 匹配的所有文件
数据库未知文件的列表
=====================================
文件名: D:\ora_backup\2BPO5J6E_1_120141121
文件名: D:\ora_backup\2CPO5J7A_1_120141121
文件名: D:\ora_backup\2DPO5J9N_1_120141121
文件名: D:\ora_backup\C-1391059141-20141121-0021
是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ora_backup\2BPO5J6E_1_120141121
文件名: D:\ora_backup\2CPO5J7A_1_120141121
文件名: D:\ora_backup\2DPO5J9N_1_120141121
文件名: D:\ora_backup\C-1391059141-20141121-0021
 
执行restore database命令
RMAN>restore database;
通道 ORA_DISK_1: 将数据文件 00001 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00002 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00003 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00004 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 将数据文件 00005 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
通道 ORA_DISK_1: 将数据文件 00006 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\USER02
通道 ORA_DISK_1: 将数据文件 00007 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\001
通道 ORA_DISK_1: 将数据文件 00008 还原到 E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 11/19/2014 11:14:50 上) 失败
ORA-19693: 已包括备份片段 D:\ORA_BACKUP\2SPNUCD9_1_120141118
ORA-19693这个报错很奇怪:
需要更改备份文件的名字,然后进行crosscheck backup;  ------意思是交叉检查备份文件位置
然后delete expired backup; ------然后删除状态为expired(有记录但本地没文件的备份文件)的备份文件。
上面还可以看到还原的位置还在原机的E盘位置,所以还需要更改控制文件中的文件路径,先查询控制文件中记录的数据文件数与数据文件位置:
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\USER02
E:\APP\ADMINISTRATOR\ORADATA\ORCL\001
E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF
已选择8行。
用以下代码格式进行更改:
run{
set newname for datafile 1 to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF';
restore datafile 1;
switch datafile 1;
}
 
完成后执行recover命令
RMAN> recover database;
启动 recover 于 21-11月-14
使用通道 ORA_DISK_1
正在开始介质的恢复
通道 ORA_DISK_1: 正在开始将归档日志还原到默认目标
通道 ORA_DISK_1: 正在还原归档日志
归档日志线程=1 序列=46
通道 ORA_DISK_1: 正在读取备份片段 D:\ORA_BACKUP\2DPO5J9N_1_120141121
通道 ORA_DISK_1: 段句柄 = D:\ORA_BACKUP\2DPO5J9N_1_120141121 标记 = TAG20141121T102351
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_11_21\O1_MF_1_46_B6Y10F
NV_.ARC 线程=1 序列=46
通道 default: 正在删除归档日志
归档日志文件名=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_11_21\O1_MF_1_46_B6Y10F
NV_.ARC RECID=80 STAMP=864235277
无法找到归档日志
归档日志线程=1 序列=47
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 11/21/2014 17:21:19 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 47 的归档日志以及起始 SCN 1643141
将数据库模式改为noarchivelog模式后修复成功(疑问不知道原因,求大神解答)
SQL> alter database noarchivelog;
数据库已更改。

 

RMAN> recover database;

启动 recover 于 21-11月-14
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156 设备类型=DISK

正在开始介质的恢复

RMAN-08187: 警告: 完成到 SCN 1643141 的介质恢复
完成 recover 于 21-11月-14

 

打开数据库

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

提示需要以resetlogs打开

SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-00344: 无法重新创建联机日志 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG'
ORA-27040: 文件创建错误, 无法创建文件
OSD-04002: 无法打开文件
O/S-Error: (OS 21) 设备未就绪。

发现控制文件中的REDO文件位置还未改变,用以下命令查询原路径:

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG
E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO04.LOG
E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO05.LOG
D:\ORA_LOG\RED01_B.LOG
D:\ORA_LOG\RED02_B.LOG
D:\ORA_LOG\RED03_B.LOG
D:\ORA_LOG\RED05_B.LOG
D:\ORA_LOG\RED04_B.LOG

已选择10行。

 

更改REDO日志的异常路径

SQL> alter database rename file 'E:\app\Administrator\oradata\ORCL\REDO03.LOG' to 'D:\app\Administrator\oradata\ORCL\REDO03.LOG';

数据库已更改。
如果报错,请重新恢复控制文件,再重复以上步骤。

 

再次打开数据库

SQL> alter database open resetlogs;

数据库已更改。

 

到这步数据库异机异目录恢复已经完成。只要再关闭数据库改完归档模式就可以了。

请大神解释下为什么完成restore database之后,在执行recover database的时候会报:RMAN-06054: 介质恢复正在请求未知的线程 1 序列 47 的归档日志以及起始 SCN 1643141 这个错误。为什么切到noarchivelog模式下之后就可以recover成功。

 

<think>我们正在处理用户关于如何下载man命令中文版本的问题。根据提供的引用,我们知道有几种方法可以安装中文man手册。主要步骤包括安装manpages-zh包,并可能配置别名来使用中文手册。 根据引用[4],在Ubuntu系统中,可以通过以下步骤安装: 1. 更新软件包索引:`sudo apt update` 2. 安装manpages-zh包:`sudo apt install manpages-zh` 安装完成后,我们可以使用`cman`命令来查看中文手册(如引用[5]所示),需要配置别名。引用[5]提到将别名写入/etc/profile.d/cman.sh文件中: `alias cman='man -M /usr/local/share/man/zh_CN'` 但是,注意引用[3]提到,安装中文手册后可能会导致`ls --help`这类命令出现问题。因此,他们建议通过设置别名的方式,保留原来的man命令为英文,而使用一个新的命令(如cman)来调用中文手册。 另外,引用[3]还提供了另一种方法:在用户配置文件(如~/.bashrc)中设置别名,例如: `alias man='man -M /usr/share/man'` # 这样man命令仍然使用英文手册 然后使用`cman`来调用中文手册。 综合以上,我们可以为用户提供以下步骤: 步骤1:安装中文man手册 在终端中执行: ``` sudo apt update sudo apt install manpages-zh ``` 步骤2:配置别名(可选,但推荐) 为了避免覆盖原有的man命令(导致一些帮助信息显示问题),我们建议设置一个别名来使用中文手册。 方法一:为当前用户设置 编辑当前用户的.bashrc文件(如果使用bash): ``` echo "alias cman='man -M /usr/share/man/zh_CN'" >> ~/.bashrc source ~/.bashrc ``` 方法二:全局设置(需要root权限) 创建或编辑/etc/profile.d/cman.sh文件: ``` echo "alias cman='man -M /usr/share/man/zh_CN'" | sudo tee /etc/profile.d/cman.sh sudo chmod +x /etc/profile.d/cman.sh source /etc/profile.d/cman.sh ``` 注意:路径可能因系统而,上述路径是常见的,但根据引用[5]是`/usr/local/share/man/zh_CN`,而引用[3]和[4]中可能是`/usr/share/man/zh_CN`。如果安装后找不到,可以使用`man -w`查看man路径,并确认中文手册的安装位置。 如果安装后不确定路径,可以尝试查找: ``` find /usr -type d -name "zh_CN*" ``` 步骤3:测试 使用`cman ls`来查看ls命令的中文手册。 另外,引用[3]提到,如果安装后英文man手册被覆盖,可以通过设置别名将man命令恢复为英文: 在~/.bashrc中添加:`alias man='man -M /usr/share/man'`,然后`source ~/.bashrc`。 因此,我们建议用户使用别名`cman`来调用中文手册,而保留原来的`man`命令为英文。 根据用户的需求,我们提供了在Ubuntu系统下的安装方法。如果用户使用的是其他Linux发行版,安装命令可能不同(例如,CentOS使用yum或dnf)。 对于非Ubuntu系统,可以尝试从源代码安装,但manpages-zh包在主流发行版的仓库中应该都有。 例如,在CentOS中: ``` sudo yum update sudo yum install man-pages-zh-CN ``` 然后类似地设置别名。 注意:如果用户已经安装了中文手册但路径不同,需要根据实际情况调整路径。 最后,我们生成相关问题。</think>### 下载man命令中文版本指南 在Linux系统中安装中文版man手册的步骤如下,以Ubuntu/Debian系统为例: #### 步骤1:更新软件源 ```bash sudo apt update ``` 确保软件包列表是最新的[^4]。 #### 步骤2:安装中文手册包 ```bash sudo apt install manpages-zh ``` 此命令会安装官方维护的中文man手册[^4][^5]。 #### 步骤3:配置中文手册路径 创建配置文件设置中文路径: ```bash echo "alias cman='man -M /usr/share/man/zh_CN'" | sudo tee /etc/profile.d/cman.sh sudo chmod +x /etc/profile.d/cman.sh source /etc/profile.d/cman.sh ``` 这将创建`cman`命令调用中文手册[^5]。 #### 步骤4:验证安装 ```bash cman ls # 查看ls命令的中文手册 ``` 若显示中文帮助文档,说明安装成功。 #### 注意事项: 1. **路径问题**:不同系统版本路径可能不同,常见路径包括: - `/usr/share/man/zh_CN`(Ubuntu默认) - `/usr/local/share/man/zh_CN`(部分系统)[^3][^5] 2. **英文手册保留**:安装后原`man`命令仍显示英文,不影响原有功能[^3] 3. **兼容性问题**:若出现`--help`命令常,可通过以下命令修复: ```bash echo "alias man='man -M /usr/share/man'" >> ~/.bashrc source ~/.bashrc ``` > ⚠️ 对于非Debian系系统(如CentOS): > ```bash > sudo yum install man-pages-zh-CN > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值