首页 > 数据库 >Oracle数据库添加索引注意事项

Oracle数据库添加索引注意事项

时间:2023-09-08 19:11:25浏览次数:45  
标签:NAME 查看 -- 空间 索引 注意事项 Oracle SELECT

1、确定是否有专门的索引空间。

--查看表所在的表空间
SELECT * FROM user_tables t WHERE t.table_name='TABLENAME';
--查看索引所在的索引空间
SELECT TABLESPACE_NAME FROM DBA_INDEXES WHERE INDEX_NAME='INDEXNAME';

2、预估建立索引所需的空间大小。

3、查看表空间剩余或者索引空间剩余。

--查看空间剩余
SELECT tablespace_name,sum(bytes)/1024/1024 free_space FROM dba_free_space where
TABLESPACE_NAME='TABLESPACENAME' GROUP BY tablespace_name;

4、如果表空间不足,则考虑增加表空间。根据实际情况预估所要增加的表空间大小。

ALTER TABLESPACE TABLESPACENAME ADD DATAFILE '\oracle\oradata\anita_20180123.dbf' SIZE 3000m;

5、执行建立索引的sql脚本。

CREATE INDEX SCHEMA.INDEXNAME ONSCHEMA.TABLENAME(COLUMN) TABLESPACETABLESPACENAME ONLINE;

6、收集统计信息。

EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'SCHEMA',TABNAME => 'TABLENAME',CASCADE
=> TRUE);

7、查看统计信息更新时间是否为当前时间。

SELECT A.OWNER,A.TABLE_NAME,A.LAST_ANALYZED FROM DBA_TABLES A WHERE
A.TABLE_NAME='TABLENAME';

8、查看索引的更新时间是否为当前时间。

SELECT B.OWNER,B.INDEX_NAME,B.LAST_ANALYZED FROM DBA_INDEXES B WHERE
B.INDEX_NAME='INDEXNAME';

9、查看一下sql语句的执行计划,索引是否生效。

--先设置一下session
alter session set statistics_level=all
--执行完要查看计划的sql后,执行下面脚本
select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));

注意事项:

1、建立索引过程中可能会发生锁表现象。建议加上online关键字。
2、如果数据量很大,则建立索引和收集统计信息的时间会很长。(5kw的数据量建立索引花费332s,收集统计信息花费448s,仅供参考)。
3、注意大小写,表名,表空间名,索引名要全部大写。
4、添加索引会引起更新和插入速度变慢,这个需要DBA自己估算可行性。
5、如果发生锁表情况,则杀死锁表的进程,尝试执行下面sql:

--查看哪个对象锁表。

select session_id from v$locked_object;
select sid,serial#,username,osuser from v$session where sid =1999;
alter system kill session '1999,29133';
————————————————
版权声明:本文为CSDN博主「L-zoe」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w515165137/article/details/79256742

标签:NAME,查看,--,空间,索引,注意事项,Oracle,SELECT
From: https://www.cnblogs.com/turnip/p/17688369.html

相关文章

  • oracle导出导入数据库
    先捋一下oracle的概念oracle的概念稍微有点复杂:用户账号和表空间绑定,表空间分为永久表空间和临时表空间,通过表空间设置数据库的大小等参数,在表空间里面进行新建数据表等操作,oracle的表空间等同于mysql的数据库tnsname里面的server是oracle服务端的连接配置,是用来连接数据库的......
  • 网站优化搜索引擎与关键词
    网站优化搜索引擎与关键词人们不应该高估搜索引擎的智商。这不利于seo的研究,事实上,搜索引擎是非常愚蠢的,让我们举一个非常简单的例子,你在搜索引擎中输入“教师”这个词,搜索引擎就会给出一个准确的搜索列表。我们不会给出“教师”一词的检索信息,但我们认为,“教师”和“教师”的含义......
  • 3. Oracle数据库异常关闭,导致错误3. Oracle数据库异常关闭,导致错误ERROR: ORA-01034:
    之前由于电脑没电,强制关机,导致Oracle数据库异常关闭,再次启动电脑登陆数据库时,发生以下错误:当我尝试重新启动数据库时,发生错误:经过查阅资料后得知:缺少INITXE.ORA文件,需要从下图目录中复制到上图指定目录中,并重命名为initXE.ora即可(这里initxxx.ora中的xxx要取决于你的SID)再......
  • 4. Oracle数据库提示ERROR: ORA-12560: TNS: 协议适配器错误
    造成ORA-12560:TNS:协议适配器错误的问题的原因有三个:有关服务没有启动windows平台个一如下操作:开始—程序—管理工具—服务,打开服务面板,启动TNSlistener服务。注册表问题我这里错误的原因是之后又创建了一个数据库,似乎是将之前ORACLE_SID的值冲掉了,这里改回来即可解决......
  • Oracle无法远程连接的原因及解决办法
    前提虚拟机Linux(centos7)下静默安装Oracle数据库,本地能访问。文章参考:Linux-CentOS7下安装Oracle11g-sankuoshu-博客园(cnblogs.com)。问题:安装完成后无法用数据库连接工具连接1、使用Oracle用户,lsnrctlstatus命令查看监听的状态红框内显示监听没有服务2、解决......
  • 国产化操作系统改造oracle proc依赖库文件缺失处理
    国产化操作系统改造oracleproc依赖库文件缺失处理1场景国产化操作系统升级改造过程中,RedHatEnterpriseLinuxServerrelease7.6(Maipo)在线升级迁移到BigCloudEnterpriseLinuxForEulerrelease21.10(LTS-SP2),oracle用户下执行proc报错:[oracle@superman~]$procpr......
  • MyBatis操作Oracle(实现兼容Oracle和MySQL)
    MyBatis操作Oracle(实现兼容Oracle和MySQL)以Oracle11g来演示,只需要创建序列,不需要创建触发器,通过ORM框架操作来生成主键MySQL版本是8.x代码地址:https://gitee.com/zhang-zhixi/springboot-mp-oracle-auto.git1、分别创建Student表Oracle:CREATETABLE"STUDENT"("ID"N......
  • Learn Git in 30 days——第 13 天:暂存工作目录与索引的变更状态
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn有没有遇过这种情境,某个系统开发写到一半,结果被老板或客戶「插单」,被要求紧急修正一个现有系统的Bug或添加一个功能,眼前的程序即将完成,老板的「急件」又不......
  • Oracle为什么写阻塞读导致Buffer Busy Waits
     Oracle为什么写阻塞读导致BufferBusyWaits 这之前需要了解在内存中定位并读取一个buffer的流程,先看看为什么读不阻塞写。 读不阻塞写:假设会话s1在读取dbbuffercache中读取需要的buffer过程中,会获取CBCLatch后查找定位buffer后,以共享S模式获取BH(BufferHeader)的Buff......
  • ORACLE中行锁问题排查手段
    ORACLE中行锁问题排查手段原文:https://blog.51cto.com/u_13482808/6535486概念描述行锁,对应等待事件’enq:TX-rowlockcontention’。是应用环境中经常碰到的故障现象。当发生行锁时,往往意味着大量业务会话被阻塞。造成业务功能无法进行。因此需要尽快排查出问题源头......