KingbaseES V8R6数据库运维案例之---创建extension提示函数存在

案例说明:
在创建extension时提示“unction or procedure "get_raw_page" already exists”函数已存在。

适用版本:
KingbaseES V8R6

一、问题现象
如下图所示,创建扩展提示“get_raw_page" already exists”函数已存在,查询数据库无此函数。

二、问题分析

数据库GUC参数:
ora_forbid_func_polymorphism 是否是否禁用多态on表示开启禁用多态,同模式下不能创建同名的函数或存储过程。off(默认),则表示启用多态
默认配置:

prod=# show ora_forbid_func_polymorphism;
 ora_forbid_func_polymorphism
------------------------------
 off
(1 row)

问题复现:
如下所示,如果ora_forbid_func_polymorphism=on,禁用多态,将导致创建扩展失败。

prod=# set ora_forbid_func_polymorphism=on;
SET

prod=# show ora_forbid_func_polymorphism;
 ora_forbid_func_polymorphism
------------------------------
 on
(1 row)

prod=# create extension pageinspect;
ERROR:  function or procedure "get_raw_page" already exists

如下所示,如果ora_forbid_func_polymorphism=off,启用多态,创建扩展成功,并创建两个不同态的同名函数“get_raw_page ”。

prod=# set ora_forbid_func_polymorphism=off;
SET
prod=# create extension pageinspect;
CREATE EXTENSION

prod=# select proname,prokind,proisstrict,provolatile from sys_proc
prod-# where proname like '%get_raw_page%';
   proname    | prokind | proisstrict | provolatile
--------------+---------+-------------+-------------
 get_raw_page | f       | t           | v
 get_raw_page | f       | t           | v
(2 rows)

三、问题解决
对于生产环境,没有特殊需求,尽量将ora_forbid_func_polymorphism=off,配置为默认值,支持函数多态。

posted @ 2024-03-06 11:44  天涯客1224  阅读(99)  评论(0)    收藏  举报