ora-01157 处理过程

本文记录了一次因磁盘空间满导致的数据文件移动问题,引发了ORA-01157错误,详细描述了解决过程,包括关闭数据库、杀死残留进程及重启系统等步骤。

    2013年6月23 日 南非某运营商数据库,因为磁盘空间爆满,前线运维同事,进行了一些数据文件的移动引发数据库不能startup,

在alter 日志也无相关的错误。

有时会报

并出现 ora-01157错误。

oracle@mos5200db1:~> oerr ora 1157
01157, 00000, "cannot identify/lock data file %s - see DBWR trace file"
// *Cause:  The background process was either unable to find one of the data
//         files or failed to lock it because the file was already in use.
//         The database will prohibit access to this file but other files will
//         be unaffected. However the first instance to open the database will
//         need to access all online data files. Accompanying error from the
//         operating system describes why the file could not be identified.
// *Action: Have operating system make file available to database. Then either
//         open the database or do ALTER SYSTEM CHECK DATAFILES.

这说明有文件已经在使用了。

再次shutdown 数据库。查看oracle 的进程,还存在几个进程。

尝试kill -9 来杀掉进程。但是还kill 不掉。

 

reboot  系统,系统正常

 

 

 

 

 

 

 

<think>我们正在处理一个关于Oracle数据库升级过程中遇到的错误:执行`utlu112s.sql`脚本时出现ORA-01157错误,该错误涉及临时文件(temp文件)。根据错误信息,ORA-01157通常表示无法识别/锁定数据文件,而这里特指临时文件。在升级前检查脚本`utlu112s.sql`运行期间,可能因为临时表空间文件(tempfile)的状态或存在性问题导致此错误。解决思路:1.确认临时表空间文件的状态:确保所有临时文件都处于在线(ONLINE)状态。2.如果临时文件丢失或损坏,可能需要重新创建临时表空间。3.检查数据库是否处于打开状态,因为`utlu112s.sql`需要在数据库打开状态下运行。具体步骤:步骤1:检查数据库状态确保数据库已经打开(OPEN)。如果数据库处于MOUNT状态,需要先打开数据库。步骤2:检查临时表空间状态我们可以查询`dba_temp_files`视图来检查临时文件的状态。执行以下SQL:```sqlSELECTfile_name,statusFROMdba_temp_files;```如果状态不是ONLINE,尝试将其在线:```sqlALTERDATABASETEMPFILE'<tempfile_path>'ONLINE;```步骤3:如果临时文件丢失如果临时文件丢失(比如被误删),那么需要重新创建临时表空间。首先,创建一个新的临时表空间(例如`temp2`):```sqlCREATETEMPORARYTABLESPACEtemp2TEMPFILE'/path/to/temp2.dbf'SIZE500MAUTOEXTENDON;```然后,将默认临时表空间切换到新的表空间:```sqlALTERDATABASEDEFAULTTEMPORARYTABLESPACEtemp2;```之后,删除有问题的原临时表空间(如果不再需要):```sqlDROPTABLESPACEtempINCLUDINGCONTENTSANDDATAFILES;```注意:在删除之前,确保没有会话还在使用原来的临时表空间。步骤4:重新运行`utlu112s.sql`在解决了临时文件的问题后,重新运行`utlu112s.sql`脚本。如果问题仍然存在,可以尝试重启数据库,然后再运行脚本。引用说明:在Oracle升级过程中,经常会遇到各种问题,其中临时表空间的问题相对常见。根据引用[1]中提到的升级后使用`dbupgdiag.sql`进行校验,我们可以知道升级过程中需要仔细检查各个组件。虽然引用[2]是关于RMAN恢复和时区问题的,但提醒我们在升级过程中要注意版本兼容性问题。因此,我们按照上述步骤操作,应该可以解决ORA-01157错误。注意:操作前请备份数据库,以防万一。相关问题:1.如何查看Oracle数据库的当前状态?2.如何创建临时表空间并设置为默认?3.Oracle升级前检查脚本utlu112s.sql的作用是什么?</think>### ORA-01157 temp 文件错误的解决方案 当执行`utlu112s.sql`脚本时遇到ORA-01157错误(涉及临时文件),通常是由于临时表空间文件状态异常或路径错误导致。以下是系统化的解决步骤: #### 1. **验证临时文件状态** ```sql SELECT file_name, status FROM dba_temp_files; ``` 若状态为`OFFLINE`或`RECOVER`,需在线化文件: ```sql ALTER DATABASE TEMPFILE '/path/to/tempfile.dbf' ONLINE; -- 替换实际路径 ``` #### 2. **检查文件系统路径** - 确认`dba_temp_files`中的路径是否存在: ```sql SELECT file_name FROM dba_temp_files; ``` - 若路径错误,重建临时表空间: ```sql CREATE TEMPORARY TABLESPACE new_temp TEMPFILE '/correct/path/new_temp.dbf' SIZE 1G; ALTER DATABASE DEFAULT TEMPORARY TABLESPACE new_temp; DROP TABLESPACE old_temp INCLUDING CONTENTS AND DATAFILES; -- 删除旧表空间 ``` #### 3. **处理文件丢失情况** 若临时文件被误删: ```sql ALTER DATABASE TEMPFILE '/path/to/missing_file.dbf' DROP INCLUDING DATAFILES; ALTER TABLESPACE temp ADD TEMPFILE '/new/path/tempfile.dbf' SIZE 2G; ``` #### 4. **执行环境验证** 确保数据库处于**OPEN**状态: ```sql SELECT status FROM v$instance; -- 应为OPEN ``` 若为MOUNT状态: ```sql ALTER DATABASE OPEN; ``` #### 5. **重新运行升级检查** ```sql @?/rdbms/admin/utlu112s.sql -- 注意脚本路径 ``` > **关键提示**: > - 操作前备份控制文件:`ALTER DATABASE BACKUP CONTROLFILE TO TRACE;` > - 路径中的`?`代表`$ORACLE_HOME` > - 若问题持续,使用`dbupgdiag.sql`进行深度诊断[^1] ### 根本原因分析 ORA-01157通常由以下原因触发: 1. 临时文件被意外删除或移动 2. 表空间状态异常(OFFLINE/RECOVER) 3. 数据库未处于OPEN状态 4. 存储路径权限问题(检查`ls -l /path`)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值