System -ийн биш datafile сэргээх

Бид энэ удаад rman биш гар аргаар хуулж нөөцөлсөн datafile-ийг хэрхэн сэргээх талаархи жишээ үзье. Мэдээж archivelog идэвхтэй байх шаардлагатайг анхаарна уу.

[oracle@node214 DB11G]$ pwd
/u01/app/oracle/oradata/DB11G
[oracle@node214 DB11G]$
[oracle@node214 DB11G]$ mv users01.dbf users01.dbf.bak
[oracle@node214 DB11G]$

Дээрхи жишээнд users01.dbf файлыг байхгүй гэж үзэх бөгөөд нөөц файл нь users01.dbf.bak файл юм.

SQL> create table a(id number) tablespace USERS
             *
ERROR at line 1:
ORA-00955: name is already used by an existing object

SQL> select file#,name from v$datafile;
      FILE#  NAME
---------- ------------------------------------------------------------
	 1 /u01/app/oracle/oradata/DB11G/system01.dbf
	 2 /u01/app/oracle/oradata/DB11G/sysaux01.dbf
	 3 /u01/app/oracle/oradata/DB11G/undotbs01.dbf
	 4 /u01/app/oracle/oradata/DB11G/users01.dbf
	 5 /u01/app/oracle/oradata/DB11G/example01.dbf
	 6 /u01/app/oracle/oradata/DB11G/test_assm01.dbf
	 7 /u01/app/oracle/oradata/DB11G/test_mssm01.dbf
	 8 /stripe/d1/system02.dbf

8 rows selected.

SQL>

USERS tablespace-т харгалзах users01.dbf файл байхгүй учраас алдаа зааж байна. Тиймээс бид нөөцөлж хуулсан файлаас файлыг сэргээж recover хийх шаардлагатай.
Үүний тулд тухайн файлыг offline горимд сэргээсний дараа буцааж идэвхжүүлнэ.

SQL> alter database datafile 4 offline;
Database altered.

SQL>

Файлыг буцааж хуулъя.

[oracle@node214 DB11G]$ mv users01.dbf.bak users01.dbf
[oracle@node214 DB11G]$

Datafile-ийг recover хийж идэвхжүүлье.

SQL> recover datafile 4;
Media recovery complete.
SQL>
SQL> alter database datafile 4 online;
Database altered.

SQL>

Шалгая.

SQL>
SQL> create table a(id number) tablespace USERS;

Table created.

SQL>