[20231017]建立索引的问题.txt

来源:这里教程网 时间:2026-03-03 19:02:06 作者:

[20231017]建立索引的问题.txt --//工作需要要建立1个索引,对于生产系统我个人还是比较谨慎的,该表很大21G,记录自己操作遇到的问题。 1.环境: SYS@192.168.100.235:1521/orcl> @ pr ============================== PORT_STRING                   : x86_64/Linux 2.4.xx VERSION                       : 19.0.0.0.0 BANNER                        : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production BANNER_FULL                   : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 BANNER_LEGACY                 : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production CON_ID                        : 0 PL/SQL procedure successfully completed. --//我先在toad生成sql语句的执行模板: CREATE INDEX LIS.i_LIS_TEST_VISIT_NO ON LIS.LIS_TEST (VISIT_NO) LOGGING STORAGE    (             BUFFER_POOL      DEFAULT             FLASH_CACHE      DEFAULT             CELL_FLASH_CACHE DEFAULT            ) NOPARALLEL COMPRESS 1 ONLINE / --//生成后我不会在toad下,我很害怕执行中间出现问题,比如网络断开或者windows死机之类的事情,我一般选择登陆服务器,进入 --//tmux界面,这样的好处是即使网络断开,会话一直保持着不会断开,我以后tmux att依旧可以连上。然后在sys用户下手工打入如下命 --//令执行: create index i_LIS_TEST_VISIT_NO on lis.lis_test(visit_no) compress 1 online; --//建立完成后检查: SYS@192.168.100.235:1521/orcl> @ ind lis.i_LIS_TEST_VISIT_NO Display indexes where table or index name matches %lis.i_LIS_TEST_VISIT_NO%... --//居然没有发现.仔细检查才发现该索引建立在sys用户下,原来我前面少写owner!! SYS@192.168.100.235:1521/orcl> @ ind LIS_TEST Display indexes where table or index name matches %LIS_TEST%... TABLE_OWNER TABLE_NAME INDEX_NAME          POS# COLUMN_NAME                    DSC ----------- ---------- ------------------- ---- ------------------------------ ---- LIS         LIS_TEST   I_LIS_TEST_VISIT_NO    1 VISIT_NO INDEX_OWNER TABLE_NAME INDEX_NAME          IDXTYPE    UNIQ STATUS   PART TEMP  H     LFBLKS           NDK   NUM_ROWS       CLUF LAST_ANALYZED       DEGREE VISIBILIT ----------- ---------- ------------------- ---------- ---- -------- ---- ---- -- ---------- ------------- ---------- ---------- ------------------- ------ --------- SYS         LIS_TEST   I_LIS_TEST_VISIT_NO NORMAL     NO   VALID    NO   N     3      20908       1267866   10870343   10398063 2023-10-17 08:55:42 1      VISIBLE --//表建立在lis模式下,但是我建立的索引的owner是SYS,我看了一下,索引大小不到170M,主要原因是该字段存在大量空值,建立还是 --//很快的。安全起见,我决定重新建立,执行如下, SYS@orcl> drop index i_LIS_TEST_VISIT_NO; Index dropped. SYS@orcl> create index lis.i_LIS_TEST_VISIT_NO on lis.lis_test(visit_no) compress 1 online; Index created. --//再次检查发现,现在建立正确。 SYS@192.168.100.235:1521/orcl> @ ind2 %.I_LIS_TEST_VISIT_NO Display indexes where table or index name matches %.I_LIS_TEST_VISIT_NO... TABLE_OWNER TABLE_NAME INDEX_NAME          POS# COLUMN_NAME                    DSC ----------- ---------- ------------------- ---- ------------------------------ ---- LIS         LIS_TEST   I_LIS_TEST_VISIT_NO    1 VISIT_NO INDEX_OWNER TABLE_NAME INDEX_NAME          IDXTYPE    UNIQ STATUS   PART TEMP  H     LFBLKS           NDK   NUM_ROWS       CLUF LAST_ANALYZED       DEGREE VISIBILIT ----------- ---------- ------------------- ---------- ---- -------- ---- ---- -- ---------- ------------- ---------- ---------- ------------------- ------ --------- LIS         LIS_TEST   I_LIS_TEST_VISIT_NO NORMAL     NO   VALID    NO   N     3      20909       1267894   10871215   10398814 2023-10-17 09:11:00 1      VISIBLE --//实际上这是运维的一些细节问题,以后工作中要引起注意。

相关推荐