今天登陸到數據庫做了一個小測試後 忘記了用命令刪除表空間,直接在Linux下刪掉了數據文件,
結果,悲劇就開始了。(弄明白了整理出來大家共同study)
實驗環境:
[oracle@tyger ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 4.6 (Tikanga)
[oracle@tyger ~]$ . .bash_profile
[oracle@tyger ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 1 15:54:53 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SYS@ORCL>select status from v$instance;
STATUS
------------
OPEN
SYS@ORCL>select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
查看一下當前數據庫中的數據文件有哪些
用到 數據字典 (dba_data_files dba_tablespaces ) 和 v$datafile
SYS@ORCL>select tablespace_name,file_name from dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
USERS
/u01/app/oracle/oradata/ORCL/users01.dbf
SYSAUX
/u01/app/oracle/oradata/ORCL/sysaux01.dbf
UNDOTBS1
/u01/app/oracle/oradata/ORCL/undotbs01.dbf
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSTEM
/u01/app/oracle/oradata/ORCL/system01.dbf
EXAMPLE
/u01/app/oracle/oradata/ORCL/example01.dbf
SYS@ORCL>col file_name for a50
SYS@ORCL>col tablespace_name for a10
SYS@ORCL>/
TABLESPACE FILE_NAME
---------- --------------------------------------------------
USERS /u01/app/oracle/oradata/ORCL/users01.dbf
SYSAUX /u01/app/oracle/oradata/ORCL/sysaux01.dbf
UNDOTBS1 /u01/app/oracle/oradata/ORCL/undotbs01.dbf
SYSTEM /u01/app/oracle/oradata/ORCL/system01.dbf
EXAMPLE /u01/app/oracle/oradata/ORCL/example01.dbf
SYS@ORCL>select tablespace_name,status,contents from dba_tablespaces;
TABLESPACE STATUS CONTENTS
---------- --------- ---------
SYSTEM ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
EXAMPLE ONLINE PERMANENT
6 rows selected.
SYS@ORCL>select file#,ts#,name from v$datafile;
FILE# TS#
---------- ----------
NAME
--------------------------------------------------------------------------------
1 0
/u01/app/oracle/oradata/ORCL/system01.dbf
2 1
/u01/app/oracle/oradata/ORCL/undotbs01.dbf
3 2
/u01/app/oracle/oradata/ORCL/sysaux01.dbf
FILE# TS#
---------- ----------
NAME
--------------------------------------------------------------------------------
4 4
/u01/app/oracle/oradata/ORCL/users01.dbf
5 6
/u01/app/oracle/oradata/ORCL/example01.dbf
SYS@ORCL>col name for a50
SYS@ORCL>l
1* select file#,ts#,name from v$datafile
SYS@ORCL>/
FILE# TS# NAME
---------- ---------- --------------------------------------------------
1 0 /u01/app/oracle/oradata/ORCL/system01.dbf
2 1 /u01/app/oracle/oradata/ORCL/undotbs01.dbf
3 2 /u01/app/oracle/oradata/ORCL/sysaux01.dbf
4 4 /u01/app/oracle/oradata/ORCL/users01.dbf
5 6 /u01/app/oracle/oradata/ORCL/example01.dbf
開始創建測試表空間 tyger 存儲位置 '/u01/app/oracle/oradata/ORCL/tyger01.dbf' 大小為 5M。
SYS@ORCL>create tablespace tyger datafile '/u01/app/oracle/oradata/ORCL/tyger01.dbf' size 5M;
Tablespace created.
SYS@ORCL>select tablespace_name,file_name,status from dba_data_files;
TABLESPACE FILE_NAME STATUS
---------- -------------------------------------------------- ---------
USERS /u01/app/oracle/oradata/ORCL/users01.dbf AVAILABLE
SYSAUX /u01/app/oracle/oradata/ORCL/sysaux01.dbf AVAILABLE
UNDOTBS1 /u01/app/oracle/oradata/ORCL/undotbs01.dbf AVAILABLE
SYSTEM /u01/app/oracle/oradata/ORCL/system01.dbf AVAILABLE
EXAMPLE /u01/app/oracle/oradata/ORCL/example01.dbf AVAILABLE
TYGER /u01/app/oracle/oradata/ORCL/tyger01.dbf AVAILABLE
6 rows selected.
SYS@ORCL>!
[oracle@tyger ~]$ cd $ORACLE_BASE/oradata/ORCL/
[oracle@tyger ORCL]$ ll
total 1068456
-rw-r----- 1 oracle oinstall 7061504 Mar 1 16:06 control01.ctl
-rw-r----- 1 oracle oinstall 7061504 Mar 1 16:06 control02.ctl
-rw-r----- 1 oracle oinstall 7061504 Mar 1 16:06 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 Mar 1 15:47 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 Mar 1 15:47 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Mar 1 16:06 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Mar 1 15:47 redo03.log
-rw-r----- 1 oracle oinstall 251666432 Mar 1 16:05 sysaux01.dbf
-rw-r----- 1 oracle oinstall 503324672 Mar 1 16:05 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Mar 1 08:42 temp01.dbf
-rw-r----- 1 oracle oinstall 5251072 Mar 1 16:03 tyger01.dbf
-rw-r----- 1 oracle oinstall 26222592 Mar 1 16:05 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Mar 1 15:47 users01.dbf
[oracle@tyger ORCL]$ rm tyger01.dbf ----------干掉 tyger01.dbf
[oracle@tyger ORCL]$ ll
total 1063316
-rw-r----- 1 oracle oinstall 7061504 Mar 1 16:08 control01.ctl
-rw-r----- 1 oracle oinstall 7061504 Mar 1 16:08 control02.ctl
-rw-r----- 1 oracle oinstall 7061504 Mar 1 16:08 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 Mar 1 15:47 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 Mar 1 15:47 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Mar 1 16:08 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Mar 1 15:47 redo03.log
-rw-r----- 1 oracle oinstall 251666432 Mar 1 16:05 sysaux01.dbf
-rw-r----- 1 oracle oinstall 503324672 Mar 1 16:05 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Mar 1 08:42 temp01.dbf
-rw-r----- 1 oracle oinstall 26222592 Mar 1 16:08 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Mar 1 15:47 users01.dbf
[oracle@tyger ORCL]$ exit
SYS@ORCL>select tablespace_name,file_name,status from dba_data_files;
TABLESPACE FILE_NAME STATUS
---------- -------------------------------------------------- ---------
USERS /u01/app/oracle/oradata/ORCL/users01.dbf AVAILABLE
SYSAUX /u01/app/oracle/oradata/ORCL/sysaux01.dbf AVAILABLE
UNDOTBS1 /u01/app/oracle/oradata/ORCL/undotbs01.dbf AVAILABLE
SYSTEM /u01/app/oracle/oradata/ORCL/system01.dbf AVAILABLE
EXAMPLE /u01/app/oracle/oradata/ORCL/example01.dbf AVAILABLE
TYGER /u01/app/oracle/oradata/ORCL/tyger01.dbf AVAILABLE ------- 數據庫中還存在是因為沒有識別到文件丟失
6 rows selected.
SYS@ORCL>shutdown immediate
ORA-03113: end-of-file on communication channel 這個錯誤也有很多原因,這裡不做討論
SYS@ORCL>exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@tyger ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 1 16:11:27 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance. --------很顯然已經連接到了空閒實例
SYS@ORCL>startup
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 125830736 bytes
Database Buffers 155189248 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u01/app/oracle/oradata/ORCL/tyger01.dbf' ---------good ! 問題出現了。
解決辦法:
SYS@ORCL>alter database datafile 6 offline drop;
Database altered.
SYS@ORCL>alter database open;
Database altered.
SYS@ORCL>select ts#,file#,name from v$datafile;
TS# FILE# NAME
---------- ---------- --------------------------------------------------
0 1 /u01/app/oracle/oradata/ORCL/system01.dbf
1 2 /u01/app/oracle/oradata/ORCL/undotbs01.dbf
2 3 /u01/app/oracle/oradata/ORCL/sysaux01.dbf
4 4 /u01/app/oracle/oradata/ORCL/users01.dbf
6 5 /u01/app/oracle/oradata/ORCL/example01.dbf
8 6 /u01/app/oracle/oradata/ORCL/tyger01.dbf
6 rows selected.
SYS@ORCL>select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
TYGER ONLINE
7 rows selected.
SYS@ORCL>drop tablespace tyger including contents and datafiles;
Tablespace dropped.
SYS@ORCL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@ORCL>startup
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 130025040 bytes
Database Buffers 150994944 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.