A. 如何重编译ORACLE数据库的无效对象
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没法橡袜,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。1.下面的语句用来查询哪些对象被锁:selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id=o.object_idandl.session_id=s.sid;2.下面的语句用来杀死一个进程:altersystemkillsession'24,111';(其中24,111分别是上面查询出的sid,serial#)【注】以上两步,可以通过Oracle的管理控制台来执行。3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行闹液下面的语句获得进程(线程)号:selectspid,osuser,s.programfromv$sessions,v$processpwheres.paddr=p.addrands.sid=24(24是上面的sid)4.在OS上杀死这个进程(线程):1)在unix上,用root身份执行命令:#kill-912345(即第3步查询出的spid)2)在windows(unix也适用)用orakill杀死线梁弯激程,orakill是oracle提供的一个可执行命令,语法为:orakillsidthread其中:sid:表示要杀死的进程属于的实例名thread:是要杀掉的线程号,即第3步查询出的spid。例:c:>orakillorcl12345
B. 如何重编译ORACLE数据库的无效对象
Oracle中出现无效对象,就是因为在创建函数或存储过程等,里边的内容书写不正确导致。如果要重新编译,需要先修正错误,然后编译。
工具:Oracle 10g、PL/sql
步骤:
1、在PL/SQL中打开灶拍猜出现编译错误的函数或存储过程,这里以存储过程为例。
C. sql运行问题
sql运行问题?
数据库运行过程中常见的故障有3类:事物故障、系统故障、介质故障。
恢复策略:
1、事物故障:
发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚该事务,将数据库恢复到修改前的初始状态。
为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变,这类恢复操作称为事务撤销。
2、系统故障:
系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。
3、介质故障:
介质故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。
“数据故障恢复”和“完整性约束”、“并发控制”一样,都是数据库数据保护机制中的一种完整性控制。所有的系统都免不了会发生故障,有可能是硬件失灵,有可能是软件系统崩溃,也有可能是其他外界的原因,比如断电等等。
数据库运行的突然中断会使数据库处在一个错误的状态,而且故障排除后没有办法让系统精确地从断点继续执行下去。这就要求DBMS要有一套故障后的数据恢复机构,保证数据库能够回复到一致的、正确地状态去。
D. C#中在对数据库记录更新函数时总提示未将对象引用设置到对象的实例
BindingSource bs = dataGridView1.DataSource as BindingSource;
if (bs == null) { return;}
DataTable dt = bs.DataSource as DataTable;
if (dt == null) { return;}
DataTable dtchange = dt.GetChanges();
if (dtchange == null) { return; }
DataTable dtUpdate = dtchange.GetChanges(DataRowState.Modified);
if (dtUpdate == null) { return; }
多加些判断吧亲,写代码卖衡其实逻辑都不复杂念旅,关键是健壮仔配凳性