自學自用的腳本,還望各位看官大佬不吝賜教。(求交流,求關注。)
--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;
