博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle查询存在外键约束但对应列索引缺失
阅读量:2043 次
发布时间:2019-04-28

本文共 3661 字,大约阅读时间需要 12 分钟。

手工输入指定对应的业务用户,从而方便DBA查询指定用户下的情况。

vi check_fk_info.sql

--外键无索引:(指定要查询的用户)column con format a20 word_wrappedcolumn idx format a20 word_wrappedcolumn table_name format a30 word_wrappedselect decode( b.table_name, NULL, '****', 'ok' ) Status,a.table_name, a.columns con, b.columns idxfrom( select substr(a.table_name,1,30) table_name,substr(a.constraint_name,1,30) constraint_name,max(decode(position, 1, substr(column_name,1,30),NULL)) ||max(decode(position, 2,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 3,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 4,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 5,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 6,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 7,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 8,', '||substr(column_name,1,30),NULL)) ||max(decode(position, 9,', '||substr(column_name,1,30),NULL)) ||max(decode(position,10,', '||substr(column_name,1,30),NULL)) ||max(decode(position,11,', '||substr(column_name,1,30),NULL)) ||max(decode(position,12,', '||substr(column_name,1,30),NULL)) ||max(decode(position,13,', '||substr(column_name,1,30),NULL)) ||max(decode(position,14,', '||substr(column_name,1,30),NULL)) ||max(decode(position,15,', '||substr(column_name,1,30),NULL)) ||max(decode(position,16,', '||substr(column_name,1,30),NULL)) columnsfrom dba_cons_columns a, dba_constraints bwhere a.constraint_name = b.constraint_nameand b.constraint_type = 'R'and a.owner = upper('&owner')group by substr(a.table_name,1,30), substr(a.constraint_name,1,30) ) a,( select substr(table_name,1,30) table_name, substr(index_name,1,30) index_name,max(decode(column_position, 1, substr(column_name,1,30),NULL)) ||max(decode(column_position, 2,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 3,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 4,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 5,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 6,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 7,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 8,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position, 9,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,10,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,11,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,12,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,13,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,14,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,15,', '||substr(column_name,1,30),NULL)) ||max(decode(column_position,16,', '||substr(column_name,1,30),NULL)) columnsfrom dba_ind_columnswhere INDEX_OWNER = upper('&index_owner')group by substr(table_name,1,30), substr(index_name,1,30) ) bwhere a.table_name = b.table_name (+)and b.columns (+) like a.columns || '%'/

SQL

Copy

测试脚本使用

比如使用修改过的脚本,查询业务SCOTT用户下的情况:

sys@DEMO> @check_fk_info.sqlEnter value for owner: scottold  25: and a.owner = upper('&owner')new  25: and a.owner = upper('scott')Enter value for index_owner: scottold  45: where INDEX_OWNER = upper('&index_owner')new  45: where INDEX_OWNER = upper('scott')STAT TABLE_NAME                     CON                  IDX---- ------------------------------ -------------------- --------------------**** EMP                            DEPTNOsys@DEMO>

SQL

Copy

上面就是查询到EMP表在DEPTNO列上存在外键约束,且没有索引,如果需要进一步查看表的建表语句,可以这样查询:

--查询建表语句;sys@DEMO> set long 999999 pages 1000select dbms_metadata.get_ddl('TABLE','EMP','SCOTT') from dual;

转载地址:http://ccsof.baihongyu.com/

你可能感兴趣的文章
【编码备份】1.9从Excel中导入用户名进行测试,用户一次进入系统进行答题测试。...
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【JMeter】如何用JMeter进行压力测试
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Python】Python基础
查看>>
【Loadrunner】性能测试报告实战
查看>>
【面试】一份自我介绍模板
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
LoadRunner-常用的函数
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>