测试现象:
SQL> exec dbms_tts.transport_set_check('USERS',TRUE);
BEGIN dbms_tts.transport_set_check('USERS',TRUE); END;
*
ERROR at line 1:
ORA-25153: Temporary Tablespace is Empty
SQL> select * from dba_objects order by object_name;
select * from dba_objects order by object_name
*
ERROR at line 1:
ORA-25153: Temporary Tablespace is Empty
检查原因:
看了一下DBA_TABLESPACES,嗯...TEMP的status还online....不过是假象。
www.ixdba.net
SQL> SELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACES;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
CWMLITE ONLINE
DRSYS ONLINE
EXAMPLE ONLINE
INDX ONLINE
ODM ONLINE
TOOLS ONLINE
SQL> select tablespace_name, file_name from dba_temp_files;
no rows selected
dba_temp_files里可是空空如也~~
解决问题:
我们会遇到两种情况,一种是OS level的physical datafile不见了,一种是logical tempfile不见了,我不知道我之前曾做了 啥,不过似乎遇到的是第二种情况,验证一下。
$ ls -al
total 11642092
drwxr-xr-x 5 oracle dba 1024 Sep 2 16:43 .
drwxrwxrw- 8 oracle dba 512 Sep 24 17:55 ..
-rw-r----- 1 oracle dba 1925120 Oct 5 13:56 control01.ctl
-rw-r----- 1 oracle dba 1925120 Oct 5 13:56 control02.ctl
-rw-r----- 1 oracle dba 1925120 Oct 5 13:56 control03.ctl
-rw-r----- 1 oracle dba 20979712 Oct 5 13:17 cwmlite01.dbf
-rw-r--r-- 1 oracle dba 415486976 Aug 5 18:01 dba.dmp
-rw-r----- 1 oracle dba 20979712 Oct 5 13:17 drsys01.dbf
-rw-r----- 1 oracle dba 144842752 Oct 5 13:17 example01.dbf
-rw-r----- 1 oracle dba 69476352 Oct 5 13:17 indx01.dbf
-rw-r----- 1 oracle dba 20979712 Oct 5 13:17 odm01.dbf
-rw-r----- 1 oracle dba 52445184 Oct 5 13:17 oem_repository.dbf
-rw-r----- 1 oracle dba 20979712 Mar 3 2004 ram_01.dbf
drwxrjkr-x 2 oracle dba 512 Dec 17 2003 redo01
drwxr-xr-x 2 oracle dba 512 Dec 17 2003 redo02
drwxr-xr-x 2 oracle dba 512 Dec 17 2003 redo03
-rw-r----- 1 oracle dba 20979712 Oct 5 13:17 rman_tbs01.dbf
-rw-r--r-- 1 oracle dba 664 Aug 5 18:03 sqlnet.log
-rw-r----- 1 oracle dba 429924352 Oct 5 13:49 system01.dbf
-rw-r----- 1 oracle dba 99622912 Aug 16 14:16 temp01.dbf
-rw-r----- 1 oracle dba 38019072 Oct 5 13:17 tools01.dbf
-rw-r----- 1 oracle dba 351281152 Oct 5 13:56 undotbs01.dbf
-rw-r----- 1 oracle dba 1048584192 Oct 5 13:17 users01.dbf
-rw-r----- 1 oracle dba 1048584192 Oct 5 13:17 users02.dbf
-rw-r----- 1 oracle dba 47194112 Oct 5 13:17 xdb01.dbf
-rw-r----- 1 oracle dba 5251072 Oct 5 13:17 xyz.dbf
这temp01.dbf datafile最后access时间怎么还停留在8月勒...可见我两个月没上来数据库玩了,都没发现到。不管了,先救回来再说。
SQL> alter tablespace temp add tempfile '/oradata/elife02/temp01.dbf'
Tablespace altered.
SQL> select FILE_NAME,TABLESPACE_NAME,STATUS from dba_temp_files;
FILE_NAME TABLESPACE_NAME STATUS
----------------------------------- ------------------------------ ---------
/oradata/elife02/temp01.dbf TEMP AVAILABLE
模拟现象:
现在来恶搞,先模拟第一种drop physical datafile
#rm temp01.dbf
SQL> select file_name , TABLESPACE_NAME, STATUS from dba_temp_files;
FILE_NAME
------------------------------------------------------------------------------
TABLESPACE_NAME STATUS
------------------------------ ---------
/oradata/elife02/temp01.dbf
TEMP AVAILABLE
此时temp file还是保留 AVAILABLE
SQL> select * from dba_objects order by object_name;
select * from dba_objects order by object_name
*
ERROR at line 1:
ORA-01116: error in opening database file 201
ORA-01110: data file 201: '/oradata/elife02/temp01.dbf'
ORA-27041: unable to open file
SVR4 Error: 2: No such file or directory
Additional information: 3
不过只要有process在进行sorting,就会出现错误了,那此时数据库仍可正常开关机吗?
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 337086968 bytes
Fixed Size 731640 bytes
Variable Size 318767104 bytes
Database Buffers 16777216 bytes
Redo Buffers 811008 bytes
Database mounted.
Database opened.
SQL> select file_name , TABLESPACE_NAME, STATUS from dba_temp_files;
select file_name , TABLESPACE_NAME, STATUS from dba_temp_files
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/oradata/elife02/temp01.dbf'
显然是可以,不过在开机时候,DBWR会把找不到temp file的信息写入trace file内。
由于我只是砍掉physical file,对于Oracle来说他仍然认为这个tempfile需要存在,故原本我想 依照文件所说,先drop掉仍然存在的metadata,只是当我下这指令时,系统似乎会hang住不动。
SQL> alter database tempfile '/oradata/elife02/temp01.dbf' drop;
....................
我只好先把他offline,再试试看可不可以drop。
SQL> alter database tempfile '/oradata/elife02/temp01.dbf' offline;
Database altered.
SQL> alter database tempfile '/oradata/elife02/temp01.dbf' drop;
^Calter database tempfile '/oradata/elife02/temp01.dbf' drop
*
ERROR at line 1:
ORA-01013: user requested cancel of current operation
还是不能drop,好吧,重新启动试试 看。
SQL> startup force
ORACLE instance started.
Total System Global Area 337086968 bytes
Fixed Size 731640 bytes
Variable Size 318767104 bytes
Database Buffers 16777216 bytes
Redo Buffers 811008 bytes
Database mounted.
Database opened.
SQL> alter database tempfile '/oradata/elife02/temp01.dbf' drop;
Database altered.
可以了,我不知道为什么,但后来我不死心又一次砍掉tempfile再立刻drop掉却又是可行的~~
$ rm temp02.dbf
$ sqlplus '/ as sysdba'
SQL*Plus: Release 9.2.0 .5.0 - Production on 星期二 10月 5 14:42:46 2004
Connected to:
Oracle9i Enterprise Edition Release 9.2.0 .5.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0 .5.0 - Production
SQL> alter database tempfile '/oradata/elife02/temp02.dbf' drop;
Database altered. (又可以了)
SQL> alter tablespace temp add tempfile '/oradata/elife02/temp01.dbf' size 5m ;
Tablespace altered.
分享到:
相关推荐
### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...
### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...
ORA-32001:write to spfile requested but no spfile is in use请求写入spfile,但没有使用spfile的解决方法 在输入以下语句中报了这样的错误: SQL>alter system set control_files=’/u01/app/oracle/oradata/prod/...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
ORA-12154: TNS: 无法解析指定的连接标识符的解决方法
调整参数后引起,ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 3 2768M 的解决方案
在Oracle数据库管理中,"ORA-00990: 权限缺失或无效"是一个常见的错误代码,它表示用户尝试执行的操作没有足够的权限。这个错误通常发生在试图访问、修改或者管理数据库对象(如表、视图、索引等)时。在本篇文章中...
#### ORA-00001: Unique Constraint Violated 当尝试插入或更新违反唯一约束的数据时触发此错误。例如,在具有唯一索引的列上插入重复数据。 #### ORA-00017: Rollback Segment Full 在进行事务回滚操作时,如果...
在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...
在Oracle数据库系统中,"ORA-01036:非法的变量名/编号"是一个常见的错误,通常出现在PL/SQL代码或者SQL查询语句中,当你尝试使用一个不正确或者未定义的变量时,Oracle数据库会抛出这个错误。这个错误可能是由于...
在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
标题 "ORA-01688:unable to extend table name" 指的是在执行Oracle数据库存储过程时遇到的一个特定错误。这个错误通常发生在尝试扩展一个表或分区时,由于表空间已满,无法分配更多的空间。表空间是Oracle数据库中...
然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-01704: 文字字符串过长”的错误。这个错误通常意味着你试图插入的字符串超过了Oracle数据库允许的最大长度,对于VARCHAR2类型...
-- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
### Oracle回收站功能详解与彻底删除表方法 #### 一、Oracle回收站功能概述 Oracle数据库自10g版本开始引入了回收站功能...同时,需要注意避免因SQL语句编写不当而导致的ORA-00933错误,以确保操作的顺利进行。
在处理Oracle数据库时,我们经常遇到错误代码ORA-00031,它表明指定的会话已经被标记为终止。这个错误通常与数据库锁定和会话管理有关。本文将详细解析这一问题的解决方案,并提供一系列SQL语句和命令来处理和解决...
ORA-12737: Instant Client Light: unsupported server character set CHS16GBK/ZHS16GBK解决方案oci sqlplus instantclient_12_2
NULL 博文链接:https://springlin.iteye.com/blog/1520668