1.RAC为表空间增加数据文件,增加到本地
bash
SQL> alter tablespace TEST add datafile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/test02.dbf' size 100m;
Tablespace altered
2.在test 表空间中插入测试数据
bash
SQL>create table test as select * from dba_objects;
3.查询数据所在的表空间并查询数据条数
bash
SQL>SELECT
DISTINCT
file_id,
tablespace_name,
blocks
FROM dba_extents
WHERE segment_name = 'TEST';
FILE_ID TABLESPACE_NAME BLOCKS
---------- ------------------------------------------------------------
7 TEST 128
7 TEST 8
6 TEST 128
SQL>select name from v$datafile where FILE# in('7','6');
FILE# NAME
---------- ------------------------------------------------------------
6 +DATA/orcl/datafile/test.568.1219407793
7 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/test02.dbf
SQL> select count(*) from test.test;
COUNT(*)
----------
86296
4.将加错的数据文件offline
bash
SQL> alter database datafile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/test02.dbf' offline ;
Database altered.
5.查询数据文件状态
bash
SQL> select name,file#,bytes/1024/1024 MB,status from v$datafile;
NAME FILE# MB STATUS
------------------------------------------------------------ ---------- ---------- ---
+DATA/orcl/datafile/system.260.1210785207 1 740 SYSTEM
+DATA/orcl/datafile/sysaux.558.1210785207 2 510 ONLINE
+DATA/orcl/datafile/undotbs1.559.1210785207 3 35 ONLINE
+DATA/orcl/datafile/users.560.1210785207 4 5 ONLINE
+DATA/orcl/datafile/undotbs2.565.1210785325 5 25 ONLINE
+DATA/orcl/datafile/test.568.1219407793 6 500 ONLINE
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/test02.dbf 7 100 RECOVER
6.将文件恢复到+data
bash
<rac1:orcl1:/home/oracle>$rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Tue Dec 9 13:21:09 2025
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1738566025)
RMAN> backup as copy datafile 7 format '+DATA/orcl/datafile/test02.297';
Starting backup at 09-DEC-2025 13:22:00
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=27 instance=orcl1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/test02.dbf
output file name=+DATA/orcl/datafile/test02.297 tag=TAG20251209T132201 RECID=1 STAMP=1219411323
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 09-DEC-2025 13:22:04
7.重命名
bash
SQL> alter database rename file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/test02.dbf' to '+DATA/orcl/datafile/test02.297';
Database altered.
SQL> alter database recover datafile 7;
Database altered.
SQL> alter database datafile 7 online;
Database altered.
8.结果查询
bash
SQL> select name,file#,bytes/1024/1024 MB,status from v$datafile;
NAME FILE# MB STATUS
--------------------------------------------- ---------- ----------
+DATA/orcl/datafile/system.260.1210785207 1 740 SYSTEM
+DATA/orcl/datafile/sysaux.558.1210785207 2 510 ONLINE
+DATA/orcl/datafile/undotbs1.559.1210785207 3 35 ONLINE
+DATA/orcl/datafile/users.560.1210785207 4 5 ONLINE
+DATA/orcl/datafile/undotbs2.565.1210785325 5 25 ONLINE
+DATA/orcl/datafile/test.568.1219407793 6 500 ONLINE
+DATA/orcl/datafile/test02.297 7 100 ONLINE
SQL> select count(*) from test.test;
COUNT(*)
----------
86296