首页 > 其他分享 >重建索引

重建索引

时间:2023-09-05 17:01:17浏览次数:39  
标签:app db12c 索引 file oracle block 重建

alert日志报错信息:

[oracle@hd04 trace]$ cat alert_db12c.log |grep "corrupt" -A 2 -B 2|more
Hex dump of (file 11, block 704337) in trace file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_p006_20208.trc
Reading datafile '/app/oracle/oradata/orcl/db12cpdb/undotbs01.dbf' for corruption at rdba: 0x024abf51 (file 11, block 704337)
2019-08-22T15:30:39.594783+08:00
Hex dump of (file 3, block 97921) in trace file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_p004_20204.trc
Reading datafile '/app/oracle/oradata/orcl/sysaux01.dbf' for corruption at rdba: 0x00c17e81 (file 3, block 97921)
Reread (file 3, block 97921) found same corrupt data (logically corrupt)
2019-08-22T15:30:39.614714+08:00
Reread (file 11, block 704337) found same corrupt data (logically corrupt)
2019-08-22T15:30:39.637609+08:00
*****************************************************************
--
2019-08-22T15:30:48.232309+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_p003_20202.trc  (incident=146194) (PDBNAME=CDB$ROOT):
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
ORA-10564: tablespace SYSAUX
--
2019-08-22T15:30:49.761279+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_p003_20202.trc:
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
ORA-10564: tablespace SYSAUX
--
2019-08-22T15:30:54.735880+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_ora_20194.trc  (incident=146162) (PDBNAME=CDB$ROOT):
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
ORA-10564: tablespace SYSAUX
--
2019-08-22T15:30:56.296743+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_ora_20194.trc:
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
ORA-10564: tablespace SYSAUX
--
Hex dump of (file 3, block 97921) in trace file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_ora_20194.trc
Reading datafile '/app/oracle/oradata/orcl/sysaux01.dbf' for corruption at rdba: 0x00c17e81 (file 3, block 97921)
Reread (file 3, block 97921) found same corrupt data (logically corrupt)
*****************************************************************
An internal routine has requested a dump of selected redo.
--
2019-08-22T15:35:00.962427+08:00
Completed redo application of 0.96MB
Reading datafile '/app/oracle/oradata/orcl/sysaux01.dbf' for corruption at rdba: 0x00c17e81 (file 3, block 97921)
Reread (file 3, block 97921) found same corrupt data (logically corrupt)
*****************************************************************

 

1.查询Oracle坏块方法
set lines 120

select * from v$database_block_corruption;

[oracle@hd04 trace]$ sqlplus / as sysdba'
SQL*Plus: Release 12.2.0.1.0 Production on Sat Sep 18 14:45:29 2021
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select * from v$database_block_corruption;
     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO     CON_ID
---------- ---------- ---------- ------------------ --------- ----------
         3      60630          1          115606079 CORRUPT            1
SQL>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.分析Oracle坏块对应的对象内容

执行如下命令:

set pagesize 2000
set linesize 250
col OWNER for a15
col SEGMENT_NAME for a25
col PARTITION_NAME for a25
SELECT e.owner,
       e.segment_type,
       e.segment_name,
       e.partition_name,
       c.file#,
       greatest(e.block_id, c.block#) corr_start_block#,
       least(e.block_id + e.blocks - 1, c.block# + c.blocks - 1) corr_end_block#,
       least(e.block_id + e.blocks - 1, c.block# + c.blocks - 1) -
       greatest(e.block_id, c.block#) + 1 blocks_corrupted,
       null description
  FROM dba_extents e, v$database_block_corruption c
 WHERE e.file_id = c.file#
   AND e.block_id <= c.block# + c.blocks - 1
   AND e.block_id + e.blocks - 1 >= c.block#
UNION
SELECT s.owner,
       s.segment_type,
       s.segment_name,
       s.partition_name,
       c.file#,
       header_block corr_start_block#,
       header_block corr_end_block#,
       1 blocks_corrupted,
       'Segment Header' description
  FROM dba_segments s, v$database_block_corruption c
 WHERE s.header_file = c.file#
   AND s.header_block between c.block# and c.block# + c.blocks - 1
UNION
SELECT null owner,
       null segment_type,
       null segment_name,
       null partition_name,
       c.file#,
       greatest(f.block_id, c.block#) corr_start_block#,
       least(f.block_id + f.blocks - 1, c.block# + c.blocks - 1) corr_end_block#,
       least(f.block_id + f.blocks - 1, c.block# + c.blocks - 1) -
       greatest(f.block_id, c.block#) + 1 blocks_corrupted,
       'Free Block' description
  FROM dba_free_space f, v$database_block_corruption c
 WHERE f.file_id = c.file#
   AND f.block_id <= c.block# + c.blocks - 1
   AND f.block_id + f.blocks - 1 >= c.block#
 order by file#, corr_start_block#;

 

结果:

3.查看创建索引语句。

查看创建索引语句:
set linesize 200
set pagesize 200
set long 999999
select dbms_metadata.get_ddl('INDEX','SMON_SCN_TIME_TIM_IDX') from dual;

 

 

 

 4.重建索引

mark一下,不建议使用rebuild online选项。

alter index "SYS"."SMON_SCN_TIME_TIM_IDX" rebuild ;

analyze index "SYS"."SMON_SCN_TIME_TIM_IDX" validate structure;

select * from v$database_block_corruption; 

 

 

5.再次查看alert 日志,不再报错。

2021-09-18T14:59:56.023510+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_smon_17951.trc  (incident=587538) (PDBNAME=CDB$ROOT):
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
2021-09-18T14:59:56.031705+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_smon_17951.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
2021-09-18T15:04:29.724393+08:00
--
2021-09-18T15:05:06.491927+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_smon_17951.trc  (incident=587539) (PDBNAME=CDB$ROOT):
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
2021-09-18T15:05:06.495228+08:00
Errors in file /app/oracle/diag/rdbms/orcl/db12c/trace/db12c_smon_17951.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 3, block # 60630)
ORA-01110: data file 3: '/app/oracle/oradata/orcl/sysaux01.dbf'
2021-09-18T15:05:28.860120+08:00
[oracle@hd04 trace]$ date

Sat Sep 18 15:24:34 CST 2021

[oracle@hd04 trace]$ 

 

版权声明:本文为CSDN博主「qyq88888」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qyq88888/article/details/120385424      

1. 根据表名,查询一张表的索引

select * from user_indexes where table_name=upper('表名');

 

2. 根据索引号,查询表索引字段

select * from user_ind_columns where index_name=('索引名');

 

3.根据索引名,查询创建索引的语句

select dbms_metadata.get_ddl('INDEX','索引名', ['用户名']) from dual ; --['用户名']可省,默认为登录用户

 

PS:dbms_metadata.get_ddl还可以得到建表语句,如:

SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用户名']) FROM DUAL ; //取单个表的建表语句,['用户名']可不输入,默认为登录用户
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用户下所有表的建表语句

 

当然,也可以用pl/sql developer工具来查看相关的表的各种信息。

参考技术A可以查看数据字典 dba_indexes all_indexes user_indexes 来查看索引这三个字典都可以查到执行查询的当前用户的索引信息,不同的是查询范围依次减少 user_indexes 只能看到当前用户的索引对象,还可以结合dba_ind_columns(all_\user_)视图来查看更详细的信息参考技术B如果不太熟悉oracle,建议使用工具软件,如pl/sql developer,连接以后,选择查看索引对象。参考技术C你也可以查看EM,在Administration中Schema对象中Database Objects下有个Indexes,里面是各用户表的索引信息,很全很清晰的。参考技术Dselect * from all_objects where object_type='INDEX' AND OWNER='SCOTT';
OR
SELECT * from all_indexes;

 

怎么查看索引oracle,建索引

 

参考技术A一、查看和建立索引
select * from user_indexes where table_name = 'student'
create index i_student_num on student(num)

二、使用索引的注意点
①类型匹配
若student中num列是varchar类型,语句select * from student where num = 100
该语句被转化为select * from student where to_number(num) = 100,该列的索引就失效了。

②避免索引列参与计算
索引失效:select * from student where num * 10 > 10000
索引有效:select * from student where num > 10000 / 10

③不要对索引列使用IS NULL或IS NOT NULL
原则上对某一个列建立索引的时候,该列就不应该允许为空。
索引失效:select * from student where num is null

以上是关于oracle数据库中如何查看已经创建的索引信息?的主要内容,如果未能解决你的问题,请参考以下文章

查看Oracle的表中有哪些索引

如何查看oracle 用户权限

oracle中,索引是干啥用的?

如何查看oracle失效的索引

在oracle中如何查询一张表的所有数据结构,包括字段,视图,索引,约束

mysql怎么看索引状态

标签:app,db12c,索引,file,oracle,block,重建
From: https://www.cnblogs.com/redarmy/p/17680153.html

相关文章

  • mongo 数据库建索引不规范导致奔溃
    2023年9月5日,在给3亿条数据库新建索引时,因为没有采用后台索引的方式导致数据库奔溃20分钟。前台建索引容易阻塞主线程,大的表一定要做background执行,否则堵塞全部读写建议后期操作:db.test.createIndex({name:1},{background:true}) ......
  • 【面试题精讲】MySQL中覆盖索引是什么
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址系列文章地址在MySQL中,覆盖索引是一种特殊类型的索引,它包含了查询所需的所有列,而不仅仅是索引列本身。当一个查询可以完全使用覆盖索引来满足时,MySQL可以直接从......
  • 在应用中加入全文检索功能——基于Java的全文索引引擎Lucene简介 [摘]
    作者:车东关键词:Lucenejavafull-textsearchengine Chinese wordsegment内容摘要:Lucene是一个基于Java的全文索引工具包。基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史全文检索的实现:Luene全文索引和数据库索引的比较中文切分词机制简介:基于词库和自动切分......
  • 搜索引擎搜藏
    www.jarhoo.com 一个根据类名查找类所在包的搜索引擎,这又实现了我的思路。必将成为java程序员的必备工具之一,不过好像目前是收费的。www.jguru.com专门搜索与java相关的资源。......
  • MYSQL数据库 索引、事务
    索引定义:索引是对数据库表中一列或多列的值进行排序的一种结构(类似书的目录)。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度索引的优点:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快数据的检索速度,这也是创建索引......
  • xunsearch 搜索时按字段索引词加权
    在使用Xunsearch进行搜索时,我们可以通过XSSearch::addWeight针对某个字段添加权重索引词。该字段是否包含这个词都不影响搜索匹配结果,但如果包含会参与计算结果权重,使结果的相关度更高。常用于针对某一类数据提升搜索结果排序位置。如搜索包含"杭州"的结果,并且提升subjec......
  • 【聚集索引】和【非聚集索引】
    其实数据库软件中索引的设计灵感可以说来源于现实世界,书本前面的目录和后面的附录对应了聚簇索引和非聚簇索引,当身处计算机硬软世界里,概念过于抽象,而无法理解时,不妨跳脱出来,在现实世界中寻找参照物,或许可以豁然开朗。 ......
  • P4198 楼房重建题解
    传送门一眼数据结构。考虑线段树,记录该区间能看到最多的建筑数量\(ans_{wz}\)以及看到区间中最大的斜率(或者说,该区间内最后看到的建筑)\(xl_{wz}\)。很明显,假如我现在的修改操作是\((x,y)\),那么会改变\(\log_n\)个节点,即包含\(x\)的节点,考虑如何修改他们的\(ans\)和\(......
  • 向量搜索技术:基于Elasticsearch/PostgreSQL/Redis扩展的向量搜索数据库或独立向量搜索
    理论基础与研究向量数据库用于非结构化文本、图片、音频、视频搜索、推荐,将他们转换为数字向量表示来进行相似性(ANN)搜索。存储和搜索高维向量是其特征之一,通常采用高级索引技术和算法如HNSW,Annoy,或Faiss来实现。不同于SQL数据库,向量数据库更像nosql,用户接受使用sdk/API......
  • 重复索引检查mysql pt-duplicate-key-checker
    索引对于优化数据库中的查询执行时间至关重要,但是索引数量过多或冗余会对性能产生负面影响。虽然pt-duplicate-key-checker是识别MySQL中重复或冗余索引的首选工具,但它可能无法捕获所有重复。测试环境,mysql5.7.27建表结mysql[localhost:5727]{root}(sbtest)>CREATETABLE`sbt......