oracle数据库删除数据解决办法

oracle数据库删除数据解决办法,第1张

通过闪回来解决问题,但可闪回的时间长度和undo表空间大小相关,如果时间过长无法闪回的数据,会报错ora-01555。闪回语句示例,其中时间就是要获取某个时间点该表数据。

select from table_name as of timestamp

to_timestamp('2012-02-02 13:30:00','yyyy-mm-dd hh24:mi:ss') t;

重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。Oracle数据库重复数据删除技术有如下优势:更大的备份容量、数据能得到持续验证、有更高的数据恢复服务水平、方便实现备份数据的容灾。

一、删除部分字段重复数据先来谈谈如何查询重复的数据吧。

下面语句可以查询出那些数据是重复的:

select

字段1,字段2,count()

from

表名

group

by

字段1,字段2

having

count()

>

1

将上面的>号改为=号就可以查询出没有重复的数据了。

想要删除这些重复的数据,可以使用下面语句进行删除

delete

from

表名

a

where

字段1,字段2

in

(select

字段1,字段2,count()

from

表名

group

by

字段1,字段2

having

count()

>

1)

上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:

CREATE

TABLE

临时表

AS

(select

字段1,字段2,count()

from

表名

group

by

字段1,字段2

having

count()

>

1)

上面这句话就是建立了临时表,并将查询到的数据插入其中。

下面就可以进行这样的删除 *** 作了:

delete

from

表名

a

where

字段1,字段2

in

(select

字段1,字段2

from

临时表);

这种先建临时表再进行删除的 *** 作要比直接用一条语句进行删除要高效得多。

这个时候,大家可能会跳出来说,什么你叫我

首先用oui删除数据库,然后用oui卸载数据库软件,接着就是后续处理

1关闭oracle所有的服务。可以在windows的服务管理器中关闭;

2打开注册表:regedit 打开路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\

删除该路径下的所有以oracle开始的服务名称

3打开注册表,找到路径:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 删除该oracle目录

4删除注册的oracle事件日志,打开注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application

删除注册表的以oracle开头的所有项目。

5删除环境变量path中关于oracle的内容。

鼠标右键右单击“我的电脑-->属性-->高级-->环境变量-->PATH 变量。

删除Oracle在该值中的内容。注意:path中记录着一堆 *** 作系统的目录,在windows中各个目录之间使用分号(;)隔开的,删除时注意。

建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。

6重新启动 *** 作系统。

以上1~5个步骤 *** 作完毕后,重新启动 *** 作系统。

7重启 *** 作系统后各种Oracle相关的进程都不会加载了。这时删除Oracle_Home下的所有数据。(Oracle_Home指Oracle程序的安装目录)

8删除C:\Program Files下oracle目录。 (该目录视Oracle安装所在路径而定)

9删除开始菜单下oracle项,如: C:\Documents and Settings\All Users\「开始」菜单\程序\Oracle

- Ora10g 不同的安装这个目录稍有不同。

基本语法:delete 表名 where 条件

说明:

1如果不使用where子句,将删除表中所有数据

2delete语句不能删除某一列的值(可使用update删除某列的值)

3使用delete语句仅删除记录,不删除表本身。如果要删除表,使用drop table语句

4同insert和update一样,从一个表中删除记录将引起其他表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题

删除表的几种方法比较:

1delete from 表名;

删除所有记录,表结构还在,写日志,可以恢复,删除速度慢

2drop table 表名

删除表的结构和数据

3truncate table 表名;

删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。和delete相比,truncate无法添加where字句

以上就是关于oracle数据库删除数据解决办法全部的内容,包括:oracle数据库删除数据解决办法、Oracle数据库重复数据删除的几种方法、如何彻底删除oracle数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存