自学自用的脚本,还望各位看官大佬不吝赐教。(求交流,求关注。)
--1、确认索引是否存在:为空,则继续执行后续,若存在,调整对应索引名字 --drop index 索引名(删除索引) SELECT * FROM ALL_INDEXES WHERE INDEX_NAME = '索引名' GO --2、设置语法分析器和过滤词组(若报错已存在,请忽略并跳过) call ctx_ddl.create_preference ('语法分析名', 'chinese_vgram_lexer') GO call ctx_ddl.create_stoplist('过滤词组名') GO --3、给“某表”的“某字段”创建全文索引 CREATE INDEX 库名.索引名 ON 库名.某表(某字段) indextype is ctxsys.context parameters('lexer 语法分析器名 stoplist 过滤词组名') GO --4、创建同步索引的“某SP” --GRANT EXECUTE ON "CTXSYS"."CTX_DDL" TO "库名" (创建SP失败时最可能需要的是给数据库设置ctx_ddl权限) CREATE OR REPLACE PROCEDURE 库名.某SP AS BEGIN ctx_ddl.sync_index('索引名1'); ctx_ddl.sync_index('索引名2'); -- ... END 某SP; GO --5、定时同步索引的job DECLARE JOB名 NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT(JOB名, --任务名称 '某SP;',--执行的过程 sysdate,--执行时间 'sysdate+30/(24*60*60)');--下次执行时间(30秒) COMMIT; END; --其他可能用到的语句 select * from user_jobs --查找出JOB的ID,然后调用(JOB的id是user_jobs的JOB字段的值。) begin --根据id删除job sys.dbms_job.broken.remove(JOB1的ID); sys.dbms_job.remove(JOB2的ID); end;