m6米乐安卓版下载-米乐app官网下载
暂无图片
7

rac数据文件误添加到本地文件系统问题处理 -m6米乐安卓版下载

原创 李先生 2023-01-13
1164

rac数据文件误添加到本地文件系统问题处理


数据库查询数据报错,定位原因是rac库把datafile加在本地磁盘,另一个节点无法访问。
image.png

2.1 影响情况

由于该操作将影响该数据文件的使用,所以需与业务进行确认。

2.2 备份数据库

为了数据的安全性,做任何变更之前都需要对数据库进行一个全备,以防遇到不可逆转问题,也能保证数据的完整。

rman> backup database plus archivelog format '/home/oracle/backup/%u';

2.3 数据库重启操作

​ 为了保证数据库的可用性。在变更操作之前,对数据库进行进行逐台的重启操作。若启动正常,则进行后续变更操作。

​ 针对数据库db逐台重启:

sql> shutdown immediate sql> startup

​ 由于数据库处理未开启归档状态,所以需要先开启归档模式进行后续操作。

​ 归档开启需要对整个数据库进行关闭,然后启动到mount状态,再开启数据库,所以需要停止业务。

​ 如后续归档需要关闭,步骤与开启归档一致,在步骤2.5中,命令更改为:alter database noarchivelog;即可。

3.1 关闭监听

查看数据库存在哪些监听,都停掉。

两个节点同时操作

[oracle@rac1 ~]$ ps -ef |grep tns root 15 2 0 08:30 ? 00:00:00 [netns] grid 44993 1 0 16:52 ? 00:00:00 /u01/app/grid/product/11.2.0/grid/bin/tnslsnr listener_scan1 -inherit grid 45009 1 0 16:52 ? 00:00:00 /u01/app/grid/product/11.2.0/grid/bin/tnslsnr listener -inherit oracle 54254 54199 0 19:13 pts/2 00:00:00 grep tns [oracle@rac1 ~]$ su - grid password: [grid@rac1 ~]$ [grid@rac1 ~]$ lsnrctl stop lsnrctl for linux: version 11.2.0.4.0 - production on 04-jun-2019 19:14:21 米乐app官网下载 copyright (c) 1991, 2013, oracle. all rights reserved. connecting to (description=(address=(protocol=ipc)(key=listener))) the command completed successfully [grid@rac1 ~]$ lsnrctl stop listener_scan1 lsnrctl for linux: version 11.2.0.4.0 - production on 04-jun-2019 19:14:27 米乐app官网下载 copyright (c) 1991, 2013, oracle. all rights reserved. connecting to (description=(address=(protocol=ipc)(key=listener_scan1))) the command completed successfully [grid@rac1 ~]$

3.2 设置检查点

两个节点同时操作

sql> alter system checkpoint; system altered. sql>

3.3 关闭数据库

两个节点同时操作

sql> shutdown immediate database closed. database dismounted. oracle instance shut down. sql>

3.4 启动数据库mount

两个节点同时操作

sql> shutdown immediate database closed. database dismounted. oracle instance shut down. sql>

3.5 开启归档

两个节点同事操作

sql> alter database archivelog; database altered. sql>

3.6 启动数据库

sql> alter database open; database altered. sql>

3.7 设置归档路径大小

sql> archive log list database log mode archive mode automatic archival enabled archive destination use_db_recovery_file_dest oldest online log sequence 106 next log sequence to archive 107 current log sequence 107 sql> show parameter db_recovery_file_dest name type value ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string fra db_recovery_file_dest_size big integer 1g sql> sql> alter system set db_recovery_file_dest='xxxx'; sql> alter system set db_recovery_file_dest_size=2g;

​ 恢复过程中,保留归档不被删除。如有归档备份删除软件,需暂停此类软件。

4.1 数据文件offline

将存在错误路径的文件offline;

offline之后,存在该数据文件上的数据将无法读取,该表空间存在其他正常数据文件中的数据无影响。

alter database datafile 'xxxxxx' offline;

4.2 copy数据文件

​ 将错误路径的数据文件用过rman进行copy到正确的路径。

backup as copy datafile 'xxxxxx' format ' dg_index';

4.3 rename数据文件

alter database rename file 'xxxxx' to 'xxxxx'

4.4 恢复数据文件

​ 这里就需要用到归档日志,所以前面要求保留归档日志。

recover datafile xxx;

4.5 数据文件online

alter database datafile 8 online;

4.6 检查数据文件

​ 查看数据文件路径是否正常,rac各个节点访问情况是否正常。

5.1 模拟故障现象

将把环境模拟成故障现象报错的情况。

5.1.1 创建表空间、用户、表

节点一:创建表空间,创建用户,创建表,查询表数据。——正常

sql> create tablespace lyp datafile ' newdata1' size 20m; tablespace created. sql> create user lyp identified by lyp default tablespace lyp; user created. sql> grant dba to lyp; grant succeeded. sql> conn lyp/lyp connected. sql> create table lyp as select owner,table_name,tablespace_name from dba_tables; table created. sql> sql> select count(*) from lyp; count(*) ---------- 1993 sql>

节点二:查询表数据。——正常

sql> conn lyp/lyp connected. sql> select count(*) from lyp; count(*) ---------- 1993 sql>

5.1.2 添加错误路径数据文件

sql> alter tablespace lyp add datafile 'newdata1' size 20m; tablespace altered. sql> select file_id, file_name from dba_data_files where tablespace_name='lyp'; file_id file_name ---------- ------------------------------------------------------------ 6 newdata1/rac/datafile/lyp.276.1010080027 7 /u01/app/oracle/product/11.2.0/db_1/dbs/newdata1 sql>

这里可以看到7号数据文件路径错了。

5.1.3 插入数据

sql> create table test as select * from lyp; table created. sql> insert into test select * from test; 1993 rows created. sql> insert into test select * from test; 3986 rows created. sql> insert into test select * from test; 7972 rows created. sql> insert into test select * from test; 15944 rows created. sql> insert into test select * from test; 31888 rows created. sql> insert into test select * from test; 63776 rows created. sql> insert into test select * from test; 127552 rows created. sql> insert into test select * from test; 255104 rows created. sql> insert into test select * from test; insert into test select * from test * error at line 1: ora-01653: unable to extend table lyp.test by 128 in tablespace lyp sql> commit; commit complete. sql>

5.1.4 重新报错

节点一:查询正常

sql> select count(*) from lyp; count(*) ---------- 1993 sql> select count(*) from test; count(*) ---------- 510208 sql>

节点二:查询报错。

sql> select count(*) from lyp; count(*) ---------- 1993 sql> select count(*) from test; select count(*) from test * error at line 1: ora-01157: cannot identify/lock data file 7 - see dbwr trace file ora-01110: data file 7: '/u01/app/oracle/product/11.2.0/db_1/dbs/newdata1' sql>

5.2 恢复故障

5.2.1 数据文件offline

sql> select file_id,file_name,status from dba_data_files where tablespace_name='lyp'; file_id file_name status ---------- ------------------------------------------------------------ --------- 6 newdata1/rac/datafile/lyp.276.1010080027 available 7 /u01/app/oracle/product/11.2.0/db_1/dbs/newdata1 available sql> select file#,name,status from v$datafile where file#=7; file# name status ---------- ------------------------------------------------------------ ------- 7 /u01/app/oracle/product/11.2.0/db_1/dbs/newdata1 online sql> alter database datafile 7 offline; database altered. sql> select file#,name,status from v$datafile where file#=7; file# name status ---------- ------------------------------------------------------------ ------- 7 /u01/app/oracle/product/11.2.0/db_1/dbs/newdata1 recover sql> sql> select count(*) from lyp; count(*) ---------- 1993 sql> select count(*) from test; select count(*) from test * error at line 1: ora-00376: file 7 cannot be read at this time ora-01110: data file 7: '/u01/app/oracle/product/11.2.0/db_1/dbs/newdata1' sql>

offline之后,存在该数据文件上的数据将无法读取,该表空间存在其他正常数据文件中的数据无影响。

5.2.2 copy数据文件

rman> backup as copy datafile '/u01/app/oracle/product/11.2.0/db_1/dbs/newdata1' format ' newdata1'; starting backup at 04-jun-19 using target database control file instead of recovery catalog allocated channel: ora_disk_1 channel ora_disk_1: sid=24 instance=rac1 device type=disk channel ora_disk_1: starting datafile copy input datafile file number=00007 name=/u01/app/oracle/product/11.2.0/db_1/dbs/newdata1 output file name= newdata1/rac/datafile/lyp.277.1010081595 tag=tag20190604t181315 recid=25 stamp=1010081595 channel ora_disk_1: datafile copy complete, elapsed time: 00:00:01 finished backup at 04-jun-19 rman>

以上标红的就是copy生成出来的数据文件。

5.2.3 rename数据文件

sql> alter database rename file '/u01/app/oracle/product/11.2.0/db_1/dbs/newdata1' to ' newdata1/rac/datafile/lyp.277.1010081595'; database altered. sql> select file_id,file_name,status from dba_data_files where tablespace_name='lyp'; file_id file_name status ---------- ------------------------------------------------------------ --------- 6 newdata1/rac/datafile/lyp.276.1010080027 available 7 newdata1/rac/datafile/lyp.277.1010081595 available sql>

数据文件修改成功

5.2.4 恢复数据文件

sql> select file#,name,status from v$datafile where file#=7; file# name status ---------- ------------------------------------------------------------ ------- 7 newdata1/rac/datafile/lyp.277.1010081595 recover sql> recover datafile 7; media recovery complete. sql> select file#,name,status from v$datafile where file#=7; file# name status ---------- ------------------------------------------------------------ ------- 7 newdata1/rac/datafile/lyp.277.1010081595 offline sql>

5.2.5 数据文件online

sql> alter database datafile 7 online; database altered. sql> select file#,name,status from v$datafile where file#=7; file# name status ---------- ------------------------------------------------------------ ------- 7 newdata1/rac/datafile/lyp.277.1010081595 online sql>

5.2.6 检查数据文件

​ 检查数据文件路径、状态,以及数据是否可查。

一节点:查询正常。

sql> select file_id,file_name,status from dba_data_files where tablespace_name='lyp'; file_id file_name status ---------- ------------------------------------------------------------ --------- 6 newdata1/rac/datafile/lyp.276.1010080027 available 7 newdata1/rac/datafile/lyp.277.1010081595 available sql> select file#,name,status from v$datafile where file#=7; file# name status ---------- ------------------------------------------------------------ ------- 7 newdata1/rac/datafile/lyp.277.1010081595 online sql> select count(*) from lyp; count(*) ---------- 1993 sql> select count(*) from test; count(*) ---------- 510208 sql>

二节点:查询正常。

sql> select count(*) from lyp; count(*) ---------- 1993 sql> select count(*) from test; count(*) ---------- 510208 sql>

6.1 回退步骤

按照恢复步骤相反的步骤进行回退。

6.2 异常恢复

​ 对一些非正常因素导致是不可逆转的问题,从而使数据丢失的情况,就需要使用步骤二、中备份的数据进行恢复。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
2人已赞赏
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

网站地图