阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

RAC中误将数据文件创建在本地盘时的修正

331次阅读
没有评论

共计 5585 个字符,预计需要花费 14 分钟才能阅读完成。

用户创建表空间时误将数据文件放到了本地盘,重启数据库时一个实例启动不了,只能 offline 该表空间后启动数据库。现用户想知道怎样能把这个表空间数据文件中的数据恢复出来。

测试目的:验证 RAC 中误将数据文件创建在本地盘时的修复办法
环境说明:
两节点 RAC,数据库名为 db10g 版本 10.2.0.5
使用了 ASM 作为共享存储解决方案。

1,场景准备

1)节点 2:创建表空间 test1,数据文件不放到 ASM,而是放到本地盘:

SQL> create tablespace test1 datafile ‘/home/Oracle/test1.dbf’ size 10m;

Tablespace created.

SQL> select name,status from v$datafile;

NAME                                                                          STATUS

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

+DG/db10g/datafile/system.256.821723567                    SYSTEM
+DG/db10g/datafile/undotbs1.258.821723569                ONLINE
+DG/db10g/datafile/sysaux.257.821723569                    ONLINE
+DG/db10g/datafile/users.259.821723569                      ONLINE
+DG/db10g/datafile/undotbs2.264.821723755                ONLINE
/home/oracle/test1.dbf                                                ONLINE

6 rows selected.

2)节点 2:在表空间 test1 中创建表没问题

SQL> create table test1 (id int) tablespace test1;

Table created.

SQL> create table test2 tablespace test1 as select * from dba_tables;

Table created.

3)节点 1:能查到表空间 test1,但创建表报错

SQL> select name ,status from v$datafile;

NAME                                                                    STATUS

———————————————————    ——————
+DG/db10g/datafile/system.256.821723567              SYSTEM
+DG/db10g/datafile/undotbs1.258.821723569          ONLINE
+DG/db10g/datafile/sysaux.257.821723569              ONLINE
+DG/db10g/datafile/users.259.821723569                ONLINE
+DG/db10g/datafile/undotbs2.264.821723755          ONLINE
/home/oracle/test1.dbf                                          ONLINE

6 rows selected.

SQL> create table test1 (id int) tablespace test1;

create table test1 (id int) tablespace test1

*
ERROR at line 1:

ORA-01157: cannot identify/lock data file 6 – see DBWR trace file

ORA-01110: data file 6: ‘/home/oracle/test1.dbf’

4)重启数据库,会发现节点 1 实例起不来,因为节点 1 无法读取节点 2 本地盘上的 /home/oracle/test1.dbf

[oracle@rac10g2 ~]$ srvctl stop database -d db10g

[oracle@rac10g2 ~]$ srvctl start database -d db10g

PRKP-1001 : Error starting instance db10g1 on node rac10g1

CRS-0215: Could not start resource ‘ora.db10g.db10g1.inst’.

[oracle@rac10g2 ~]$ crs_stat -t

Name          Type          Target    State    Host       

————————————————————

ora.db10g.db  application    ONLINE  ONLINE    rac10g1   

ora….g1.inst application    ONLINE  OFFLINE           

ora….g2.inst application    ONLINE  ONLINE    rac10g2   

ora….SM1.asm application    ONLINE  ONLINE    rac10g1   

ora….G1.lsnr application    ONLINE  ONLINE    rac10g1   

ora….0g1.gsd application    ONLINE  ONLINE    rac10g1   

ora….0g1.ons application    ONLINE  ONLINE    rac10g1   

ora….0g1.vip application    ONLINE  ONLINE    rac10g1   

ora….SM2.asm application    ONLINE  ONLINE    rac10g2   

ora….G2.lsnr application    ONLINE  ONLINE    rac10g2   

ora….0g2.gsd application    ONLINE  ONLINE    rac10g2   

ora….0g2.ons application    ONLINE  ONLINE    rac10g2   

ora….0g2.vip application    ONLINE  ONLINE    rac10g2 

2,处理过程

由于该过程中需要从本地盘把数据文件迁移到 ASM 共享存储,ASM 文件的访问无法通过操作系统级别直接进行。

在 10gR2 中,我们可以使用 RMAN 命令备份和恢复 ASM 文件,使用 ASMCMD 命令可以浏览和操纵目录结构。不过,
Oracle 10g 包中的 DBMS_FILE_TRANSFER 是处理 ASM 的另一种方式。DBMS_FILE_TRANSFER 可以在同一台 Oracle
服务器上或两台 Oracle 服务器之间复制文件。它使用目录对象来指定源目录和目的目录,因为目录对象支持 ASM 路径
名称,所以 DBMS_FILE_TRANSFER 也支持 ASM 路径名。这使得从常规文件系统的 ASM 存储区移入和移出文件变得十分
简单,使用它可以完成如下的迁移:

ASM->ASM、ASM->OS
Flie、OS File->ASM、OS
File->OS File。

建错的表空间 test1 数据文件在节点 2,所以只能从节点 2 上打开。可在节点 2 上将表空间 offline 之后使用 dbms_file_transfer 将数据
文件移到 ASM 共享存储(如使用的是集群文件系统,直接拷贝数据文件即可)。

1)为两个数据文件路径创建目录

节点 2:创建两个 directory,一个指向本地盘该数据文件目录;一个指向 ASM 数据文件目录。

SQL> create directory test1 as ‘/home/oracle’;

Directory created.

SQL> create directory test2 as ‘+DG/db10g/datafile’;

Directory created.

2)offline 表空间

节点 2:offline 表空间 test1

SQL> alter tablespace test1 offline;

Tablespace altered.

3)拷贝数据文件到 ASM

节点 2:使用 dbms_file_transfer 拷贝该数据文件到 ASM

SQL> exec
dbms_file_transfer.copy_file(‘TEST1′,’test1.dbf’,’TEST2′,’test1.dbf’);

PL/SQL procedure successfully completed.

4)修改控制文件中的数据文件路径

节点 2:

SQL> alter database rename file ‘/home/oracle/test1.dbf’ to
‘+DG/db10g/datafile/test1.dbf’

SQL> /

Database altered.

5)online 表空间 test1

节点 2:online 表空间 test1

SQL> alter tablespace test1 online;

Tablespace altered.

6)启动实例 1

[oracle@rac10g2 ~]$ srvctl start instance -d db10g -i db10g1

[oracle@rac10g2 ~]$ crs_stat -t

Name          Type          Target    State    Host       

————————————————————

ora.db10g.db  application    ONLINE  ONLINE    rac10g1   

ora….g1.inst application    ONLINE  ONLINE    rac10g1   

ora….g2.inst application    ONLINE  ONLINE    rac10g2   

ora….SM1.asm application    ONLINE  ONLINE    rac10g1   

ora….G1.lsnr application    ONLINE  ONLINE    rac10g1   

ora….0g1.gsd application    ONLINE  ONLINE    rac10g1   

ora….0g1.ons application    ONLINE  ONLINE    rac10g1   

ora….0g1.vip application    ONLINE  ONLINE    rac10g1   

ora….SM2.asm application    ONLINE  ONLINE    rac10g2   

ora….G2.lsnr application    ONLINE  ONLINE    rac10g2   

ora….0g2.gsd application    ONLINE  ONLINE    rac10g2   

ora….0g2.ons application    ONLINE  ONLINE    rac10g2   

ora….0g2.vip application    ONLINE  ONLINE    rac10g2   

7)节点 1:检查数据文件状态和表空间内数据

SQL> select name ,status from v$datafile;

NAME                                                                    STATUS

—————————————————-          ——————

+DG/db10g/datafile/system.256.821723567            SYSTEM
+DG/db10g/datafile/undotbs1.258.821723569        ONLINE
+DG/db10g/datafile/sysaux.257.821723569            ONLINE
+DG/db10g/datafile/users.259.821723569              ONLINE
+DG/db10g/datafile/undotbs2.264.821723755        ONLINE
+DG/db10g/datafile/test1.dbf                                ONLINE

6 rows selected.

SQL> select count(*) from test2;

  COUNT(*)

———-

      1522 

3、备注

以上迁移数据文件时是采用 dbms_file_transfer.copy_file 迁移数据文件的方法,也可以使用 RMAN 来做:

SQL>select tablespace_name,file_name,status,online_status from
dba_data_files;

需要对表空间进行 OFFLINE
登录 RMAN,

 RMAN> sql “alter tablespace test1 offline”;

  RMAN> copy datafile ‘/home/oracle/test1.dbf’ to
‘+DG/rac10g/datafile/test1.dbf’;

SQL> alter database rename file ‘/home/oracle/test1.dbf’ to
‘+DG/rac10g/datafile/test1.dbf’;

SQL> alter tablespace test1 online;

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5585字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7800645
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...