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是多少等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)