问题:
SQL错误: ORA-01157:无法标识/锁定数据文件 22,- 请参阅 DBWR 跟踪文件ORA-01110: 数据文件22:
'F:ORACLETABLESPACESFACTORY_DATAPDB_FACTORY_DATA.DBF'。
产生原因:
首先我们来看报这个错误的原因: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.(后台进程无法找到其中一个数据。文件或未能锁定它,因为文件已在使用中。数据库将禁止对该文件的访问,但其他文件将不受影响。但是第一个实例将打开数据库需要访问所有在线数据文件。伴随误差操作系统描述了无法识别文件的原因。)。综上所述,磁盘中对应表空间的数据文件被删除了,在启动数据库实例时,找不到对应的表空间数据文件(后缀为.dbf的文件)。
解决方案:
- 打开sqlplus,使用sys登录数据库,在c db 中执行以下操作。
- 启动数据库实例:startup ,运行结果显示启动的数据库实例已启动,此时需要我们关闭它。
3.关闭数据库实例:shutdown immediate
4.启动数据库例程:startup mount
5.删除数据库中的datafile文件:这一步要分情况进行(因为尽管oracle 12c的日志文件共享,但是cdb和各个pdb只能在各自数据库使用自己的日志)。
(1)如在磁盘中被删除的数据文件是 cdb容器中表空间对应的 .dbf文件,此时第4步之后就可以执行:
alter database datafile ’被删除的表空间数据文件的完整路径’ offline drop;
(2)如在磁盘中被删除的数据文件是 pdb容器中表空间对应的 .dbf文件,此时第4步之后需要将数据库从 c db切换到pdb:
alter session set container=pdb实例名(本人的该名称是orclpdb);
再执行删除pdb中表空间数据文件的操作:
alter database datafile ’被删除的表空间数据文件的完整路径’ offline drop;
(3) 执行完(2) 后,将数据库从pdb切换至cdb:
alter session set container=cdb$root;
(4)切换回来后,需要再次启动一次例程:startup mount
6.数据恢复:recover database
7.打开数据库:alter database open;
8.重新启动数据库实例:因为数据库数据库实例已经打开了,所以重启的操作实际上就是先关闭数据库实例,在启动它。
(1)关闭数据库实例:shutdown immediate
(2)启动数据库实例:startup
此时大功告成。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
常见资源合集和破解beqptwpmc...