是否可以通过在Oracle 12c中的sys表上执行SELECT来执行ALTER INDEX。请看下面
我试图通过下面的select子句找到我已经准备好alter语句的未使用索引 -
SELECT 'alter index ' || owner || '.' || index_name || ' monitoring usage;'
FROM dba_indexes
WHERE owner NOT in (
'SYSTEM',
'SYS');
接下来,我将手动将此SQL的输出复制到新的SQL命令选项卡并执行它们。而是可以直接执行这些语句而不是显示它们?
我试图在SQL中实现这一点,作为来自任何SQL实用程序(如DBViz或SQL +)和NOT IN PL / SQL或Unix的单个语句可执行文件。
你可以这两种方式:
1-将结果欺骗到文件并运行文件。
set pages 0 lines 200 feed off term off
spool _file
SELECT 'alter index ' || owner || '.' || index_name || ' monitoring usage;'
FROM dba_indexes
WHERE owner NOT in ('SYSTEM','SYS');
spool off
@_file
1-或通过PL / SQL
BEGIN
FOR rec in (select owner, index_name FROM dba_indexes WHERE owner NOT in ('SYSTEM','SYS'))
LOOP
query := 'alter index ' || rec.owner || '.' || rec.index_name || ' monitoring usage'
execute immediate query;
END LOOP;
end;
/