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,配置为默认值,支持函数多态。

浙公网安备 33010602011771号