由于突然断电,oracle 数据库无法启动 提示ORA-01092:oracle实例终止。强制断开连接 然后查看alter日志如

由于突然断电,oracle 数据库无法启动 提示ORA-01092:oracle实例终止。强制断开连接 然后查看alter日志如,第1张

SQL>conn / as sysdba;

SQL>shutdown immediate;

SQL>startup mount;

SQL>show parameter undo;(这里可以查看undo的表空间管理方式应该是auto)

SQL>alter system set undo_management=manualscope=spfile;

SQL>shutdown immediate;

SQL>startup;

我们的思路是新建一个undo表空间,替换原来损坏的表空间删除掉原来的坏的undo表空间如果不放心,还可以建个和以前损坏的表空间同名的undo表空间再替换回来这里设新建undo表空间名为undo2,原来环掉的表空间名为undotbs1

SQL>create undo tablespace undo2 datafile'd:\oracle\oradata\orcl\undo2dbf' size 200M;

SQL>alter system set undo_tablespace=undo2scope=spfile;

SQL>drop tablespace undotbs1 including contents anddatafiles;

SQL>create undo tablespace undotbs1datafile 'd:\oracle\oradata\orcl\undotbs01dbf' size 200M;

SQL>alter system set undo_tablespace=undotbs1scope=spfile;

SQL>drop tablespace undo2 including contents anddatafiles;

到这里原来的undo表空间就恢复了记得把管理方式设置为auto很简单不再罗嗦

idle时断开:

可能1:

每个数据库用户会对应一个profile,profile中有一项叫做IDLE_TIME,这项控制最大连续空闲时间,当用户连接空闲时间超过这个限制时就自动断开了。

可能2:

数据库启用了resource manager。资源管理器中有一项叫做max_idle_time,这项控制单个连接的总空闲时间,当用户连接空闲时间超过这个限制时就自动断开了。

可能3:

数据库启用了resource manager。资源管理器中有一项叫做max_idle_blocker_time,这项控制连接处于idle状态且阻塞了其他连接的最大时间,当用户连接处于idle状态且阻塞了其他连接的时间超过这个限制时就自动断开了。

运行时断开:

可能1:

同上,profile或者resource manager中对应项限制的用户连接使用的资源总量,当用户执行的程序使用资源总量超过限制时就被断开了。

可能2:

遇到数据库bug或者第三方软件与oracle的不兼容问题。

我只会在unix下面写,嘿嘿win的我还不会呢。。

把代码贴上。至于怎么 编译,再查查吧~

int main()

{

EXEC SQL BEGIN DECLARE SECTION;

char oc_passwd[101]; /数据库密码/

char oc_userid[101]; /数据库用户名/

char oc_dbname[101]; /数据库名/

char oc_coad[101];

EXEC SQL END DECLARE SECTION;

memset(oc_passwd, 0x00, sizeof(oc_passwd));

memset(oc_userid, 0x00, sizeof(oc_userid));

memset(oc_dbname, 0x00, sizeof(oc_dbname));

/取数据库用户名/

strcpy(oc_userid, "userid");

/取数据库用户密码/

strcpy(oc_passwd, "passwd") ;

/取数据库名/

strcpy(oc_dbname, "dbname");

EXEC SQL CONNECT :oc_userid

IDENTIFIED BY :oc_passwd

USING :oc_dbname;

if (sqlcasqlcode != 0)

{

printf("用户名[%s]密码[%s]数据库[%s]\n", oc_userid, oc_passwd, oc_dbname);

printf("连接数据库失败,sqlcode=%d\n", sqlcasqlcode);

return -1;

}

/读table取coad字段/

memset(oc_coad, 0x00, sizeof(oc_coad));

EXEC SQL SELECT coad

INTO :oc_coad

FROM table

WHERE 1=1;

if (sqlcasqlcode == NORECORD)

{

printf("查询无记录\n");

return -1;

}

else if (sqlcasqlcode != 0)

{

printf("查询失败,sqlcode=%d\n", sqlcasqlcode);

return -1;

}

return 0;

}

如用户一段时间没有作 *** 作或会话没有同数据库交换数据,通过 *** 时控制断开联接

假设你的用户名为 user_a,你要设计的时间是 50分钟没有 *** 作就断开。

create profile my_profile limit idle_time 50;

alter user user_a profile my_profile;

以上就是关于由于突然断电,oracle 数据库无法启动 提示ORA-01092:oracle实例终止。强制断开连接 然后查看alter日志如全部的内容,包括:由于突然断电,oracle 数据库无法启动 提示ORA-01092:oracle实例终止。强制断开连接 然后查看alter日志如、局域网内连接服务端oracle数据库,用数据库工具例如(obj9 ,plsql)连接一定时间就断开了,怎么保持连接、oracle数据库突然断开时 sqlca.sqlcode是多少等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存