首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【DB笔试面试469】Oracle如何删除重复记录

题目部分 Oracle如何删除重复记录? 答案部分 平时工作可能会遇到这种情况,当试图对表某一列或几列创建唯一索引时,系统提示ORA-01452 :不能创建唯一索引,发现重复记录。...删除重复记录结果也分为两种,第一种是重复记录全部删除,第二种是重复记录只保留最新一条记录一般业务,第二种情况较多。...1、删除重复记录方法原理 Oracle,每一条记录都有一个ROWID,ROWID整个数据库是唯一,ROWID确定了每条记录Oracle哪一个数据文件、块、行上。...重复记录,可能所有列上内容都相同,但ROWID不会相同,所以,只要确定出重复记录那些具有最大ROWID就可以了,其余全部删除。...SELECT 字段1,字段2 FROM 名 GROUP BY 字段1,字段2 HAVING COUNT(1) > 1); 也可以利用临时方式,先将查询到重复数据插入到一个临时,然后进行删除

2.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

Oracle 23c 设置

Oracle 23c ,数据库或视图中允许最大列数已增加到 4096。此功能允许您构建可以单个存储超过之前 1000 列限制属性应用程序。...某些应用程序(例如机器学习和流式 IoT 应用程序工作负载)可能需要使用包含超过 1000 列非规范化。 您现在可以单行存储大量属性,这对于某些应用程序来说可以简化应用程序设计和实现。...这与 Oracle Database 23c 之前版本行为相匹配。 可以随时将 MAX_COLUMNS 值从 STANDARD 更改为 EXTENDED。...但是,仅当数据库所有和视图包含 1000 或更少列时,才可以将 MAX_COLUMNS 值从 EXTENDED 更改为 STANDARD。...较旧客户端版本(Oracle Database 23c 之前版本)不支持增加列限制,并且无法访问或视图中超过 1000 列。 此参数从 Oracle Database 23c 开始可用。

22020

【DB笔试面试564】Oracle,什么是索引选择性?

♣ 题目部分 Oracle,什么是索引选择性? ♣ 答案部分 索引选择性(Index Selectivity,索引选择度或索引选择率)是指索引列不同值记录数与记录比值。...索引选择取值范围是[0,1]。例如,某个记录数是1000条,而该索引列值只有900个不同值(有100个是相同或是空),所以,该列索引选择性为900/1000=0.9。...对于索引选择性,值越高那么表示该列索引效率也就越高。...可以使用如下SQL来计算索引选择性: SELECT COUNT(DISTINCT NAME)/COUNT(*) FROM TB_A; 这种方法优点是创建索引前就能评估索引选择性。...选择性越接近1,那么该索引就越好。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

87830

Oracle,如何正确删除空间数据文件?

DROP DATAFILE 可以使用如下命令删除一个空间里数据文件: ALTER TABLESPACE TS_DD_LHR DROP DATAFILE n; --n为数据文件号 ALTER TABLESPACE...② 该语句只能是相关数据文件ONLINE时候才可以使用。...PURGE;”或者已经使用了“DROP TABLE XXX;”情况下,再使用“PURGE TABLE "XXX回收站名称";”来删除回收站,否则空间还是不释放,数据文件仍然不能DROP...需要注意是,据官方文档介绍说,处于READ ONLY状态空间数据文件也不能删除,但经过实验证明,其实是可以删除。...数据文件相关信息还会存在数据字典和控制文件。 对于归档模式而言,“OFFLINE FOR DROP”和“OFFLINE”没有什么区别,因为Oracle会忽略FOR DROP选项。

6.4K30

【DB笔试面试592】Oracle之间关联方式有哪几种?

♣ 题目部分 Oracle之间关联方式有哪几种?...嵌套循环连接Oracle读取驱动(外部每一行,然后在被驱动(内部检查是否有匹配行,所有被匹配行都被放到结果集中,然后处理驱动下一行。...做驱动时候,逻辑读为98517,而用T_20161014_LHR_02(大)做驱动时候,逻辑读为301061,差异非常大,所以,使用NL连接时候,尽量选择结果集较小作为驱动。...(三)哈希连接(HJ) HJ连接原理如下:首先把小哈希操作存放到内存,然后用大每条记录做哈希,与之前小哈希值匹配。...这个阶段如果被驱动连接列值没有与驱动连接列值相等的话,那么这些记录将会被丢弃而不进行探测。 这种方式适用于较小完全可以放于内存情况,这样总成本就是访问两个成本之和。

2.1K10

【DB笔试面试593】Oracle访问方式有哪几种?

♣ 题目部分 Oracle访问方式有哪几种?...当Oracle执行全扫描时,会按顺序读取每个块且只读一次,如果能够一次读取多个块,那么可以有效地提高效率,初始化参数DB_FILE_MULTIBLOCK_READ_COUNT用来设置一次I/O可以读取多少个数据块...通常应该避免全扫描,但是检索大量数据时全扫描优于索引扫描,这正是因为全扫描可以一次I/O读取多个块,从而减少了I/O次数。使用全扫描同时也可以使用并行来提高扫描速度。...全扫描Hint为:FULL(T)。 CBO优化器以下几种情况下会选择扫描: ① 无合适索引。 ② 检索绝大多数数据。 ③ 非常小。...对Oracle而言,可以通过Oracle内置ROWID伪列得到对应行记录所在ROWID值,然后通过DBMS_ROWID包相关方法(DBMS_ROWID.ROWID_RELATIVE_FNO

1.2K40

【DB笔试面试630】Oracle,怎样收集统计信息?怎样收集分区统计信息?

♣ 题目部分 Oracle,怎样收集统计信息?怎样收集分区统计信息?...=>'PARTITION',CASCADE=>TRUE);--针对分区单个分区进行收集统计信息 除此之外,还有一些其它用法,如下所示: l EXEC DBMS_STATS.GATHER_DATABASE_STATS...();--收集当前数据库下所有用户统计信息 l EXEC DBMS_STATS.GATHER_SCHEMA_STATS(USER);--收集用户下所有对象统计信息 当系统分区数据量很大时,如果每次都收集全部分区必然会导致统计信息收集非常慢...,Oracle 11g之后可以通过设置INCREMENTAL来只针对数据有变动分区做收集: EXEC DBMS_STATS.SET_TABLE_PREFS(USER,'TABLE_NAME','INCREMENTAL...INCREMENTAL值 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

96730

【DB笔试面试643】Oracle,如何查询和索引历史统计信息?

♣ 题目部分 Oracle,如何查询和索引历史统计信息?...♣ 答案部分 从Oracle 10g开始,当收集统计信息时候,旧统计数据被保留,如果因为新统计信息而出现性能问题,旧统计信息就可以被恢复。...历史统计信息保存在以下几张: l WRI$_OPTSTAT_TAB_HISTORY 统计信息 l WRI$_OPTSTAT_IND_HISTORY 索引统计信息 l WRI$_OPTSTAT_HISTHEAD_HISTORY...列统计信息 l WRI$_OPTSTAT_HISTGRM_HISTORY 直方图信息 从视图DBA_TAB_STATS_HISTORY可以查询历史收集统计信息时间,但是不能查询到行数,所以需要结合基来查询...这些统计信息SYSAUX空间中占有额外存储开销,所以应该注意并防止统计信息将空间填满。

2.3K20

【DB笔试面试547】Oracle,什么是用户空间配额(User tablespace Quota)?

♣ 题目部分 Oracle,什么是用户空间配额(User tablespace Quota)? ♣ 答案部分 用户空间配额也叫空间限额,指的是用户可以使用指定空间最大大小。...控制用户空间配额也就等于控制用户所占用空间大小。...,因此,新建用户对所有空间都是没有配额,即不受空间限制。...空间配额可以创建用户时候指定,也可以创建用户后再修改用户配额。...③ 目标用户必须不能含有UNLIMITED TABLESPACE系统权限,否则空间配额对用户设置无效,也就会出现在DBA_TS_QUOTASBYTES大于MAX_BYTES情况。

87610

【DB笔试面试668】Oracle,什么是高水位?如何回收高水位?

题目部分 Oracle,什么是高水位?如何回收高水位? 答案部分 Oracle数据库通过跟踪段块状态来管理空间。...HWM说法;段空间是自动管理方式(ASSM)时,Oracle是通过BITMAP来管理段内空间分配,此时Oracle引入了LHWM(Low HWM,低高水位)概念。...MSSM,当数据插入以后,如果是插入到新数据块,那么数据块就会被自动格式化等待数据访问;而在ASSM,数据插入到新数据块以后,数据块并没有被格式化,而是第一次访问这个数据块时候才格式化这个块...一个ASSM段每个数据块处于以下状态之一: ① HWM之上,这些块是未分配、未格式化,且从未使用过。...当使用DELETE删除表记录时,HWM并不会下降,随之导致是全扫描实际开销并没有任何减少。

1.8K40

【DB笔试面试650】Oracle,如何查询DML操作数据变化量?

♣ 题目部分 Oracle,如何查询DML操作数据变化量?...♣ 答案部分 DBA_TAB_MODIFICATIONS视图(基为SYS.MON_MODS_ALL$)记录了从上次收集统计信息以来DML操作变化数据量,包括执行INSERT、UPDATE和DELETE...Analyzed)之后发生INSERT、UPDATE、DELETE以及是否被TRUNCATE截断操作,并且Oracle数据库SMON后台进程每15分钟会将这些操作数量近似值(内存SGA记录...DML操作)写入到数据字典基MON_MODS$(从SGA写入到MON_MOD$),但是这个写入过程只持续1分钟,因此,可能不是所有DML操作都会记录到MON_MODS$。...需要注意是,作者实际测试过程中发现,Oracle并不是严格按照每15分钟将SGADML刷新到MON_MODS$,而且也不是严格按照每天1次规律刷新MON_MODS$数据到MON_MODS_ALL

2.1K20

【DB笔试面试645】Oracle,当收集统计信息时应该注意哪些问题?

♣ 题目部分 Oracle,当收集统计信息时应该注意哪些问题?...② 导入大量数据后应及时收集统计信息后才能进行相关后续业务处理(包括查询和修改),否则可能会由于实际数据量和统计信息里记录数据量存在巨大差异而导致CBO选择错误执行计划。...如果数据倾斜度较大,那么收集直方图能最大程度帮助优化器计算出准确Cardinality,从而避免产生差执行计划;再进一步,如果存在倾斜多个列共同构成了Predicate里等值连接且这些列间存在较强列相关性的话...,那么生成带有直方图多列统计信息是一个上佳选择,能够最大程度帮助优化器准确预测出Cardinality。...21 如果加载数据量比较大,并且是分区,每个分区业务数据呈现是均匀Oracle 11g可以考虑采用DBMS_STATS.COPY_TABLE_STATS先把统计信息做个快速设置,然后,再收集该分区统计信息

1.1K30

【DB笔试面试649】Oracle,分区统计信息更新机制是怎样

♣ 题目部分 Oracle,分区统计信息更新机制是怎样?...♣ 答案部分 分区统计信息更新机制如下所示: ① 当某个分区数据变化达到10%,自动收集统计信息任务运行时,Oracle会更新该分区统计信息。...② 当分区中所有分区数据变化量总和达到分区总数据量10%,Oracle会更新该分区统计信息。...另外,需要注意是,更新分区统计信息时,10.2.0.5之前必须要扫描该所有的分区或整个数据,而从10.2.0.5开始,可以设置分区按增量变化统计,只收集有数据变化分区。...DUAL;--查看分区INCREMENTAL值 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

94810

【DB笔试面试779】Oracle,SYS.SMON_SCN_TIME基作用是什么?

♣ 题目部分 Oracle,SYS.SMON_SCN_TIME基作用是什么?...♣ 答案部分 SYS.SMON_SCN_TIME基用于记录过去时间段SCN与具体时间戳(timestamp)之间映射关系,因为是采样记录这种映射关系,所以SMON_SCN_TIME可以较为粗糙地定位某个...Oracle 11g,该创建SQL$ORACLE_HOME/rdbms/admin/dtxnspc.bsq文件,可以直接查看: create cluster smon_scn_to_time_aux...10g开始,SMON会定时清理SMON_SCN_TIME记录。...SMON后台进程会每5分钟被唤醒一次,检查SMON_SCN_TIME磁盘上映射记录总数,若总数超过144000条,则会使用以下语句删除最老一条记录(TIME_MP列最小): delete from

58820
领券