oracle undo表空间被删除,数据库无法启动,请问如何恢复

oracle undo表空间被删除,数据库无法启动,请问如何恢复,第1张

首先,undo表空间满是正常的,oracle自然会重用或者扩展它,一般不用管它。

然后,现在要解决的话,需要先把undo tablespace设置成手动,启动数据库,创建新的undo tablespace。把新的设置成默认的。

假设你的库现在是mounted状态

1 创建PFILE(如果已有就是更新)

SQL>create pfile from spfile;

2 关闭数据库

SQL>shutdown immediate

3 在你的$ORACLE_HOME/dbs目录下面找个叫做

init<数据库>ora的文件,把其中有undo_management=AUTO的一行改成

undo_management=MANUAL

如果没有就在文件末尾填一行

4 以sysdba身份连接数据库

SQL>connect "/ as sysdba"

用刚才改过的文件启动数据库

SQL> startup pfile=<刚才的文件全路径和名字>

这步是最关键的,如果成功,后面就没问题了

5 drop掉原来的表空间

SQL> drop tablespace <原来的undo表空间名字> including contents;

6 创建新的undo表空间

SQL> create UNDO tablespace undotbs2 datafile '/u01/app/oracle/oradata/orcl/undotbs02dbf' size 100M autoextend on;

7 关闭数据库,

SQL>shutdown immediate

在开始那个init文件里设置UNDO_MANAGEMENT=AUTO

和 UNDO_TABLESPACE=UNDOTBS2

8 再做一次第四步

9 更新spfile

SQL>create spfile from pfile;

10 关闭数据库,正常重新启动

SQL>shutdown immediate

SQL>startup

11 去网上教你删undo那个地方骂它。非常想当然的做法。没有任何理由这么做

12 让你的工程师去学oracle 培训

以上步骤的中的第5步可能会出问题。我不确认。。。 但是即使第5步不成功,问题应该也不大

 强制停止实例和数据库

如果您需要使数据库或数据库管理器配置更改立即生效,而您所更改的参数并非动态,那么就需要停止并重启数据库或整个实例。若存在连接并使用此实例中一个或多个数据库的应用程序,您就无法停止并重启数据库或实例。此时,您可使用如下 DB2 命令,强行使用户断开 与数据库的连接:

force application all

您也可以在停止实例的同时断开所有用户的连接,命令如下:

db2stop force

若您只希望强制停止一个特定的应用程序,则需要了解该应用程序的句柄。 使用以下命令查找句柄:

list applications

您将看到形式如下的输出结果:

Auth Id Application Appl Application Id DB # of

Name Handle Name Agents

-------- -------------- ---------- ------------------------------ -------- -----

DSNOW db2bpexe 8 LOCALDB2020205193946 SAMPLE 1

若您仅希望强制停止命令行处理器(或命令窗口),即本例中的 db2bpexe 应用程序,可使用如下 DB2 命令:

force application (8)

pg停止压缩表有三种模式:smart 模式:会等待活动的事务提交结束,并等待客户端主动断开连接之后关闭数据库服务

fast 模式:会回滚所有的活动的事务,并强制断开客户端的连接然后关闭数据库(默认就是使用fast 相当于oracle 中的 immediate模式关闭)

immediate 模式: 会立即终止所有服务器进程,当下一次数据库启动的时候会首先进入恢复状态( 相当于使用 kill 工具杀死进程[此方式不会干净的关闭数据库且会造成数据丢失] )

*** 作数据库命令

1、 启动数据库实例

  #db2start

2、 停止数据库实例

  #db2stop

  如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了 /db2stop force

3、 创建数据库

  #db2 create db [dbname]

4、 连接到数据库

  #db2 connect to [dbname] user[username] using [password]

5、 断开数据库连接

  #db2 connect reset

*** 作数据表命令

1、 列出所有用户表

  #db2 list tables

2、列出所有系统表

 #db2 list tables for system

3、列出所有表

  #db2 list tables for all

4、 列出系统表

  #db2 list tables for system

5、列出用户表

  #db2 list tables for user

6、 列出特定用户表

  #db2 list tables for schema[user]

参考资料来源:百度百科—DB2

还原数据库是不需要暂停的

具体要看你是怎么还原

1备份文件还原,用企业管理器点要恢复的备份数据库然后执行恢复

2mdf文件还原,用企业管理器点数据库分离你要还原的数据库然后点上级数据库点附件

具体要看你怎么还原了

首先启动windows命令。在开始菜单中输入cmd命令

输入启动命令:"net start oracleservieYAOYY" [Yaoyy代表实例名称,不区分大小写]

使用sqlplus方式登录数据库,测试启动是否正常。

登录成功后,会有以下页面,并且命令前缀变成:“SQL >”方式

使用简单的查询语句可以看到系统正常执行sql语句

*** 作完之后,退出系统使用命令:"exit;"进行退出

停止oracle服务 使用命令:"net stop oracleserviceyaoyy"注意后面没有分号

以上就是关于oracle undo表空间被删除,数据库无法启动,请问如何恢复全部的内容,包括:oracle undo表空间被删除,数据库无法启动,请问如何恢复、如何对db2的数据库实例进行强制关闭、如何pg停止压缩表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9349575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存