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;

 

转载于:https://www.cnblogs.com/hanzhiyong/p/11170441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值