扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
删除表里面的数据:
创新互联建站于2013年创立,先为海伦等服务建站,海伦等地企业,进行企业商务咨询服务。为海伦企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
delete table 表名; Oracle会记录日志,可恢复 速度慢
truncate table 表名; 不记录日志,速度快,不可恢复
drop table 表名; 直接删除掉表
第一种:
SQLselect session_id from v$locked_object;
49
SQLSELECT sid, serial#, username FROM v$session where sid = 49;
49 554 system
SQLALTER SYSTEM KILL SESSION '49, 554';
第二种:
如果用的是客户端登录,直接关掉客户端就可以了,因为你的客户端也是个session
普通用户也可以,因为是你这个用户开启这个进程,那么你也可以关闭这个进程
删除表的数据有很多种方法,如果是只删除某一特定的部分,用delete语句
delete from 表名 where 条件;
如果是全表删除可以用delete和truncate
delete from 表名;
或者用
truncate table 表名;
二者都能达到清空表的目的,区别是delete 记录日志,速度比较慢,不会回收空间,可以恢复
truncate速度快,不急了日志,回收分配的空间,不可恢复
如果是分区表,还可以对分区进行操作
首先在表中获得这个文件的存放位置,然后通过文件系统和ORCLE数据库的相关数据(包括.db文件的物理位置,这个表在文件中的位置)找到文件的所在的扇区区间(开始扇区和结束扇区),(扇区是磁盘文件的最小存储单位),对这个扇区写数据3次,可以从/dev/radom或者自己构造的数据,基本就没办法恢复了。有个专门搞这个软件是读写30次,觉得没必要。在你确定作这件事情的时候一定要看一下,有没有这方面的应用程序,要是有就直接用应用程序,如果不免费也一定是划算的(我的意思是开源不免费的那种)。我对ORCLE不太清楚,对那个软件也只是听说。我也没有那样重要的数据。对了我一直觉得对你没必要说的是读写30次之后要从数据库中删除那个表项的记录。因为自己作的话,一定就与表项不符合了。而且在这之前一定不能删,因为删了之后你就别再想着找出那个扇区了。
尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉。
但通常情况下,出现死锁时,想通过命令行或者通过oracle的管理工具删除有死锁的session,oracle只会将该session标记为killed,但无法清除掉,往往需要通过第二步在操作系统层级进行删除。
altersystemkillsession29,57107。--删除进程,如已经删除过,则会报ora-00031的错误,否则oracle会将该session标记为killed状态,等待一段时间看能否会自动消失,如长时间消失不掉,则需要做后续步骤。一些ORACLE中的进程被杀掉后,状态被置为killed,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
这个比较简单了,1、先确认你已经以dba的身份登录了,user/password@database as sysdba
2、drop table scott.tableName当然,还要注意看看是否有外键约束,其实还有更简单的操作方式,
3、直接用oracle的可视化操作工具,在oracle中进入enterprise manager console
4、toder 这个是oracle管理工具,下载一个就可以方便操作了
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流