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

Oracle索引是否必须定期重建?索引重建有哪些影响?

题目部分 Oracle索引是否必须定期重建?索引重建有哪些影响? ♣ 答案部分 一般而言,极少需要重建B树索引,基本原因是B树索引很大程度上可以自我管理或自我平衡。...结果,重做活动增加,且索引分割更有可能对性能产生直接影响,因为需要将更多的I/O、CPU等用于索引重建。经过一段时间索引可能会再次遇到“问题”,因此可能会再被标记为重建,从而陷入恶性循环。...l 无需重建索引结构,而是尽快地合并索引叶块,这样可避免系统开销过大。 如果将索引转移到其它表空间,那么需要重建索引。 综上所述,Oracle强烈建议不要定期重建索引,而应使用合适的诊断工具。...为此,OracleMos给出了相关分析的脚本:“研究 b-tree 索引结构的脚本 (文档 ID 1577374.1)”。...2.执行脚本的代码 如果脚本以SYS外的其他用户执行,创建包体时,将遭遇ORA-942错误。

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

【DB笔试面试568】Oracle索引是否必须定期重建?索引重建有哪些影响?

♣ 题目部分 Oracle索引是否必须定期重建?索引重建有哪些影响? ♣ 答案部分 一般而言,极少需要重建B树索引,基本原因是B树索引很大程度上可以自我管理或自我平衡。...结果,重做活动增加,且索引分割更有可能对性能产生直接影响,因为需要将更多的I/O、CPU等用于索引重建。经过一段时间索引可能会再次遇到“问题”,因此可能会再被标记为重建,从而陷入恶性循环。...l 无需重建索引结构,而是尽快地合并索引叶块,这样可避免系统开销过大。 如果将索引转移到其它表空间,那么需要重建索引。 综上所述,Oracle强烈建议不要定期重建索引,而应使用合适的诊断工具。...为此,OracleMos给出了相关分析的脚本:“研究 b-tree 索引结构的脚本 (文档 ID 1577374.1)”。...2.执行脚本的代码 如果脚本以SYS外的其他用户执行,创建包体时,将遭遇ORA-942错误。

74920

【DB笔试面试561】Oracle,如何预估即将创建索引的大小?

♣ 题目部分 Oracle,如何预估即将创建索引的大小? ♣ 答案部分 如果当前表大小是1TB,那么某一列上创建索引的话索引大概占用多大的空间?...对于这个问题,Oracle提供了2种可以预估将要创建索引大小的办法: ① 利用系统包DBMS_SPACE.CREATE_INDEX_COST直接得到。...第二种办法:Oracle 11g新特性:NOTE RAISED WHEN EXPLAIN PLAN FOR CREATE INDEX 这是一个非常实用的小特性,Oracle 11gR2使用EXPLAIN...创建真实索引查看占用的字节数: SQL> CREATE INDEX IDX_T ON SYS.TEST_INDEX_SIZE(OBJECT_ID); Index created....& 说明: 有关如何预估即将创建索引的大小可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-1381160/ 本文选自《Oracle程序员面试笔试宝典

1.3K20

Oracle数据库常用操作命令

1、索引的特点 适当地使用索引可以提高查询速度 可以对表的一列或多列建立索引 建立索引的数量没有限制 索引需要磁盘存储,可以指定表空间,由oracle自动维护 索引对用户透明,检索时是否使用索引oracle...唯一索引索引关键字只能指向表的一行。 (3)创建反向键索引 与常规B树索引相反,反向键索引保持列顺序的同时反转索引列的字节。...5.维护索引 (1)重建索引 索引需要维护,如果建立了索引的表中有大量的删除和插入操作,会使得索引很大,因为删除操作,删除值的索引空间不能被自动重新使用,对于大表和DML操作很频繁的表,索引的维护是很重要的...REPLACE:如果视图已存在,此选项将重新创建视图。...FORCE:oracle刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE方式。 NEVER:物化视图不进行任何刷新。 默认值是FORCE刷新类型。

3K10

Oracle数据库常用十一大操作指令

为了使客户端用户能连接到Oracle实例,要启动监听 1.启动监听 启动(START)监听是Oracle用户操作系统下执行的命令,可以直接在LSNRCTL加参数,也可以该命令提示符进行操作。...1、索引的特点 适当地使用索引可以提高查询速度 可以对表的一列或多列建立索引 建立索引的数量没有限制 索引需要磁盘存储,可以指定表空间,由oracle自动维护 索引对用户透明,检索时是否使用索引oracle...索引的列不必与表的列顺序一致,也不必相互邻接。 基于函数的索引需要创建索引需要使用表中一列或多列的函数或表达式,也可以将基于函数的索引创建为B树索引或位图索引 ? 3....维护索引 (1)重建索引 索引需要维护,如果建立了索引的表中有大量的删除和插入操作,会使得索引很大,因为删除操作,删除值的索引空间不能被自动重新使用,对于大表和DML操作很频繁的表,索引的维护是很重要的...参数解释: OR REPLACE:如果视图已存在,此选项将重新创建视图。 FORCE:如果使用此关键字,则无论基表是否存在,都将创建视图

2.1K30

【DB笔试面试516】Oracle视图分为哪几类?

Oracle,如果要在当前用户创建视图,那么用户必须具有CREATE VIEW的系统权限。如果要在其他用户创建视图,那么用户必须具有CREATE ANY VIEW的系统权限。...Oracle创建视图的语法如下所示: CREATE [ OR REPLACE ] [ FORCE ] VIEW [SCHEMA.]VIEW_NAME...② FORCE:强制创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限。 ③ COLUMN1,COLUMN2,...:视图的列名,列名的个数必须与SELECT查询列的个数相同。...默认情况下,增、删、改之前并不会检查这些行是否能被SELECT检索到。 ⑤ WITH READ ONLY:创建视图只能用于查询数据而不能用于更改数据。...在这种情况下,要使用视图需要重新编译;但一般进行查询时,视图会自动重新编译,所以,手动编译其实并不常用。

1K10

Oracle 在线重定义(上)

如果要使用 rowid 重新定义表,则该表不能是索引组织表。 重新定义具有物化视图日志的表,任何依赖物化视图的后续刷新都必须是完全刷新。 此限制有一个例外。...没有必要在重新定义表的所有索引、约束、授权和触发器的情况下创建临时表,因为这些将在您复制相关对象时步骤 7 定义。 4). 如果您使用 rowid 方法重新定义分区表,则在临时表上启用行移动。...方法二:手动创建依赖对象 您可以临时表上手动创建依赖对象,然后注册它们。 注意: Oracle9i ,您需要在临时表上手动创建触发器、索引、授权和约束,并且可能仍然存在您想要或必须这样做的情况。...以下是需要您手动创建依赖对象的示例更改: 将索引移动到另一个表空间 修改索引的列 修改约束 修改触发器 修改物化视图日志 运行 REGISTER_DEPENDENT_OBJECT 过程时,必须使用 dep_type...当该参数设置为 true 时,Oracle数据库将在重定义完成维护重定义过程创建的临时表。

17021

Oracle事务和对象详解

函数索引:使用函数涉及正在创建索引的列的索引 3、创建索引 操作时我们可以使用Oracle的scott用户进行测试,首先解锁,改一个密码,登陆进去就可以操作了 create [unique] index...表;然后编译错误视图,使其生效 3、视图中使用DML语句(insert、update、delete)的限制 1)DML语句只能修改视图中的一个基表 2)如果修改违反了check option约束,则无法修改...分布式环境Oracle数据库链接是必须的。有一点,oracle数据库链接是单向的;一个链接,能从a数据库链接到b数据库,那么无法从b数据库链接到a数据库。...函数索引:使用函数涉及正在创建索引的列的索引 3、创建索引 操作时我们可以使用Oracle的scott用户进行测试,首先解锁,改一个密码,登陆进去就可以操作了 create [unique] index...表;然后编译错误视图,使其生效 3、视图中使用DML语句(insert、update、delete)的限制 1)DML语句只能修改视图中的一个基表 2)如果修改违反了check option约束,则无法修改

1.1K20

Oracle面试题集锦

用Facade可以降低编译依赖性,限制重要系统较小的变化所需的重编译工作。Facade模式同样也有利于简化系统不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。...分别指出创建的物化视图是否支持查询重写。...STATSPACK需要安装。安装我们需要设置一下检查的时间间隔,实际上就是创建一个oracle的JOB。...◆创建无效触发器(Disabled Trigger) 11g,开发人员可以可以闲创建一个invalid触发器,需要时再编译她。...◆PLSQL的可继承性 可以oracle对象类型通过super(和java类似)关键字来实现继承性。 ◆编译速度提高 因为不在使用外部C编译器了,因此编译速度提高了。

2.6K21

【异常处理】几个Datapump迁移的异常处理(LOB、index数量差异等)

最后: 源库回收站1070+user_lobs360=1430,这样就跟dba_objects表的数量对起来了,所以这部分忽略即可 obj表是user_objects视图的同义词 --dba_objects...,但是导入日志并没有报错,排查的思路是 先查看日志是否有错误抛出 找出差异的是哪几条索引 检查索引的ddl语句、依赖的表等信息 首先检查日志未发现报错 ?...通过minus方式对比dba_indexes表找出具体索引: --migrate_username是源库创建的待迁移用户表,XTTS迁移那篇里有建表语句 --SYS_C开头的索引是主键索引,DBA_CONSTRAINTS...GXXXXXXXXXESS_SEQ" created with compilation warnings 编译告警一般是这些对象源库就已经是INVALID状态了,可以到dba_objects视图确认下...一般迁移完成需要重新编译,执行下方编译脚本: @?

1K30

新手上路之oracle 视图 索引(了解)笔记

视图 视图:建立表|结果集|视图上的虚拟表,有以下作用 1、简化:select 查询语句 2、重用:封装select语句 命名 3、隐藏:内部细节 4、区分:相同数据不同查询...在数据库索引可以减少数据 库程序查询结果时需要读取的数据量,类似于书籍我们利用索引可以不用翻阅整本书即可找到 想要的信息。... 索引是建立表上的可选对象;索引的关键在于通过一组排序索引键来取代默认的全表扫描检 索方式,从而提高检索效率  索引逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表...;  索引一旦建立,表上进行 DML 操作时(例如在执行插入、修改或者删除相关操作时),oracle 会 自动管理索引索引删除,不会对表产生影响  索引对用户是透明的,无论表上是否索引...,sql 语句的用法不变  oracle 创建主键时会自动该列上创建索引 索引: 提高查询速度的一种手段 –>目录 1、唯一性较好字段适合建立索引 2、大数据量才有效果 3、主键

61620

Oracle数据库学习笔记(五 —— 函数、视图索引、同义词)

答: Oracle,函数分为系统函数 和 自定义函数。...当一个表含有大量的记录时,Oracle 查找该表的特写记录需要花费大量时间 (类比花费大量的时间来查找书中的主题一样)。我们可以 Oracle 建立一个次隐藏表,该表包含主表中一个或多个重要的列。...视图主要用来存储 需要查询的复杂的 数据关系 ,而不希望用户通过视图修改数据,所以通常可以加上 READ ONLY 3.4 视图的修改和删除 修改视图: 通过 or replace 重新创建同名视图即可...Oracle数据库的大部分数据库对象,如表、视图、物化视图、序列、函数、存储过程、包、同义词等等,数据库管理员都可以根据实际情况为他们定义同义词。...2)Oracle私有同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。

85510

oracle基本面试题_mongodb面试题

使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 缺点: 1. 索引创建在表上,不能创建视图上 2....当对表的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度 22. 怎样创建一个视图,视图的好处, 视图可以控制权限吗?...简化查询 可以控制权限的,使用的时候需要视图的使用权限grant给用户 23....使用图形工具创建表 2. 使用数据ddl语句创建表 3. 可以plsql代码动态创建表 应该注意: 是否创建表的权限, 使用什么表空间等 25....当一个事务修改或删除了共享池持有分析锁的数据库对象时,ORACLE使共享池中的对象作废,下次引用这条SQL/PLSQL语句时,ORACLE重新分析编译此语句。

3.3K20

Oracle数据的序列、索引视图、事务操作详解以及rowid 和 rownum的简单介绍

序列(sequence) 序列是 Oracle 特有的对象, 用于生成一个自动递增的数列....索引(index) 为了提高查询效率, 可以建立类似目录的数据库对象, 实现数据快速查询, 这就是索引(Index) 2.1 索引创建 2.1.1 自动创建 Oracle 对 primary...key 和 unique 约束的列, 会自动创建索引. 2.1.2 手动创建 对于不是 primary key 和 unique 约束的列, 如果经常会被查询或用于排序, 可以手动给其创建索引,...例如: create index idx_sname on student (sname desc); 2.2 索引的使用 索引创建, 查询时会自动生效, 提高查询效率. 2.3 索引的删除...; b) 索引会降低 DML 的效率, 因为数据发生变化时, 还需要重新维护索引; c) 对于唯一性不好的数据, 不适合创建索引. 3.

1.2K10

【DB笔试面试550】Oracle,函数索引是什么?

♣ 题目部分 Oracle,函数索引是什么?...♣ 答案部分 Oracle,有一类特殊的索引,称为函数索引(Function-Based Indexes,FBI),它基于对表列进行计算的结果创建索引。...函数索引不修改应用程序的逻辑基础上提高了查询性能。如果没有函数索引,那么任何在列上执行了函数的查询都不能使用这个列的索引。当在查询包含该函数时,数据库才会使用该函数索引。...D.INDEX_TYPE LIKE 'FUNCTION-BASED%'; 函数索引必须遵守下面的规则: ① 必须使用基于成本的优化器,而且创建必须对索引进行分析。...这时,可以重新修改自定义函数并在编译无报错通过后,该表上所有的DML和查询操作将恢复正常。 ③ 创建函数索引的函数必须是确定性的。即,对于指定的输入,总是会返回确定的结果。

1.5K10

珍藏 | Java 岗位 【数据库】 面试题及答案详解

· 存储过程存在于大型数据库系统,是一个预编译的SQL语句(为了完成特定功能的SQL 语句集),经过第一次编译再次调用不需要再次编译。...- 优点是: - 允许模块化的设计,就是说只需创建一次,以后该程序中就可以调用多次。 - 如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...· 主键本表是唯一的、不可唯空的,外键可以重复可以唯空; · 外键和另一张表的主键关联,不能创建对应表不存在的外键。 12:在数据库查询语句速度很慢,如何优化?...堆内存是程序从堆为其分配的,大小任意的,使用完要显示释放内存。...- 当应用程序用关键字new等 创建对象时,就从堆为它分配一块内存,使用完程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。

3.4K20

【DB笔试面试553】Oracle,什么是不可见索引

♣ 题目部分 Oracle,什么是不可见索引? ♣ 答案部分 索引维护是DBA的一项重要工作。...Oracle 11g里,Oracle提供了一个新的特性来降低直接删除索引或者禁用索引的风险,那就是不可见索引(Invisible Indexes)。 从Oracle 11g开始,可以创建不可见索引。...还可以创建最初不可见索引,执行测试,然后确定是否使该索引可见。可以查询DBA_INDEXES数据字典视图的VISIBILITY列来确定该索引是VISIBLE还是INVISIBLE。...不可见索引是从Oracle 11g开始出现的,所以,Oracle 11g之前的版本索引没有INVISIBLE的功能,那么应该如何处理呢?...这样的话,索引的定义并未删除,只是索引不能再被使用,也不会随着表数据的更新而更新。当需要重新使用该索引时,需要用REBUILD语句重建、然后更新统计信息。对于一些大表来说,这个时间可能就非常长。

62420
领券