Oracle删除重复数据
在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来很多的不便,那么怎么删除这些重复没有用的数据呢?
重复数据删除技术可以提供更大的备份容量,实现更长时间的数据保留,还能实现备份数据的持续验证,提高数据恢复服务水平,方便实现数据容灾等。 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。Oracle数据库重复数据删除技术有如下优势:更大的备份容量、数据能得到持续验证、有更高的数据恢复服务水平、方便实现备份数据的容灾。
一、删除部分字段重复数据
先来谈谈如何查询重复的数据吧。
下面语句可以查询出那些数据是重复的:
Sql代码
select 字段1,字段2,count(*)
from 表名 group by 字段1,字段2
having count(*) > 1
select 字段1,字段2,count(*)
from 表名 group by 字段1,字段2
having count(*) > 1
将上面的>号改为=号就可以查询出没有重复的数据了。
想要删除这些重复的数据,可以使用下面语句进行删除
Sql代码
delete from 表名 a where 字段1,字段2 in
(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)
上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
Sql代码
CREATE TABLE 临时表 AS
(select 字段1,字段2,count(*)
from 表名
group by 字段1,字段2
having count(*) > 1)
CREATE TABLE 临时表 AS
(select 字段
相关文档:
修改列属性
alter table tablename modify(name ,varchar2(10)) 列宽度不得小于修改前的宽度
日志管理
视图 v$logfile
alter database add logfile 'd:\orcl01.log' size 10m;//添加组
alter database add logfile member 'd:\orcl02.log' to group 4;//向4组中添加成员
alter database drop logfile member 'd: ......
背景:在windows 2003 server上安装了Oracle 9.2.0.1.0,现打算将其升级到9.2.0.8版本。
1.升级oracle(administrator用户权限)
(1)到metalink下载升级压缩包,patch号为4547809,压缩包名称为 p4547809_92080_WINNT.zip,for windows 32bit。
(2)解压缩zip,下边包含一个Disk1和readme.html文件。 ......
Oracle 是一个庞大的系统,里面的知识点很多,在学习的时候,看到一些知识点,就贴了下来,尽不知中贴了这么多,就先做个小结吧。 里面有的知识点已经单独拿出来写成单篇的blog(http://blog.csdn.net/tianlesoftware)了。有的还没有进行整理。 好记性不如烂笔头,不过我用的不是笔。 ^_^ ......
2010年5月25日 富士康11跳楼自杀的这天。传闻oracle 10g r203自动分析作业不是很靠谱,具体为什么不得而知!今天老库的机器要被搬走,看到上面有个目录是DBA导数据而用的,还留着老库迁到新库的DMP数据文件309G。想老库真正用到的表比较少,数据量会小很多。为了知道具体量,所以自己试玩下EXP导数据。先试了下用户表590万1. ......
在创建数据库时,SPFile文件中部分必须考虑的参数值:
基本规则
a.在SPFile文件中,所有参数都是可选的,也就是说只需要在初始化参数文件中列出那些需要修改的参数,其它保持默认值即可。
b.SPFile文件中只能包含参数赋值语句和注释语句。注释语句以“#”符合开头,是单行注释。
c.SPFile文 ......