Oracle創建全文索引


自學自用的腳本,還望各位看官大佬不吝賜教。(求交流,求關注。)

--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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM