暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(41 —— 50)

高斯精选 2023-08-08
462

接上篇 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(1 —— 30)

华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云

接上篇 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(31 —— 40)

华为云论坛_云计算论坛_开发者接上篇 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(1 —— 30)

华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云

接上篇 【FAQ合集贴】GaussDB "常见问题" 及 "解决方案"(31 —— 40)

华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云

  1. OpenGauss 新建的存储过程客户端看不到内容,这个是要授予什么权限吗?

答:要获得函数的定义,可以使用pg_get_functiondef():

select pg_get_functiondef(oid)
from pg_proc
where proname = 'foo';

有类似的函数来检索索引,视图,规则等的定义。有关详细信息,请参阅手册: http://www.postgresql.org/docs/current/static/functions-info.html

获取用户类型的定义有点棘手,需要查询 information_schema.attributes:

select attribute_name, data_type
from information_schema.attributes
where udt_schema = 'public'
  and udt_name = 'footype'
order by ordinal_postion;

从那里你需要重新组装create type声明

  1. 高斯数据库的Primary key支持多个字段吗 答:支持

  2. GaussDB删除存储过程报错 错误为:ERROR: function prmecat.insert_copy_partprice asks parameters

答:这是因为你这存储过程定义了多个,属于重载的函数,删的时候要指定参数,指明要删除哪一个,语法为:

DROP FUNCTION [ IF EXISTS ] function_name  
[ ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) [ CASCADE | RESTRICT ] ];
  1. GaussDB报 Error: insert partition key does not map to any partition 错误为:ERROR: inserted partition key does not map to any partition,详细 inserted partition key cannot be NULL for interval-partitioned table

答:排查下分区键插入的值是否有空值

  1. Oracle数据库转高斯数据库问题 问题描述:Oracle数据库转高斯数据库,原Oracle中的all_users无法识别,查资料之后替换为db_users(oracle中all_users是对应的高斯里面的db_users吗,这样替换对不对),替换成db_users后高斯能够识别 了,但是, 报permission denied for relation db_users异常

答:Gaussdb是用pg_roles

  1. 自建sys_guid()函数时报“ permission denied for schema public”,怎么解决

答:这是因为安全原因,不允许普通客户在public模式下操作。可以创建你自己的schema下创建 参考:https://zhuanlan.zhihu.com/p/365139070

  1. memory is temporarily unavailable 该怎么解决 错误为: ``` Caused by: com.huawei.opengauss.jdbc.util.PSQLException: [X.X.X.X:47714/X.X.X.X:8000] ERROR: memory is temporarily unavailable

failed on request of size 8388608 bytes under queryid 3659178092607942 in nodeHash.cpp:419.


答:用下面几个SQL分析下: 
1.当前占用内存TOP 20的会话 

select
m.used_mem, pid, sessionid, datname, usename, application_name, client_addr, xact_start, query_start, (now() - xact_start)::text as xact_runtime, query from gs_session_memory m join pg_stat_activity a on (split_part(m.sessid, '.', 2) = a.sessionid) where pid <> pg_backend_pid() order by m.used_mem desc limit 20;


2.指定会话内存占用详细 

select * from gs_session_memory_detail where split_part(sessid, '.', 2) = 会话ID order by totalsize desc;

注意: 
(1)used_mem的单位为MB
(2)没有sysadmin/monadmin权限的普通用户只能看到自己的会话

  1. python连OpenGauss有方案吗?psycopg2可以用吗 答:官网文档里有做详细的介绍:https://support.huaweicloud.com/qs-opengauss/opengauss_Psycopg_connect.html

Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、GaussDB数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode和Python 3。

GaussDB数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式链接。

  1. LOWER 函数对应高斯数据库的哪个函数 答:一样是lower(string) 描述:把字符串转化为小写。 返回值类型:varchar 示例:


    openGauss=#SELECT lower('TOM') lower




    tom (1 row)


  2. 不小心把表数据删除了,高斯数据库怎么恢复 答:如果误删数据数据,试一下闪回查询。需要提前开启闪回功能,同时建议保留时间不超过3小时


    select * from t1 timecapsule timestamp to_timestamp('2021-10-12 10:03:08.272344','YYYY-MM-DD HH24:MI:SS.FF')

论坛_技术论坛-华为云

  1. OpenGauss 新建的存储过程客户端看不到内容,这个是要授予什么权限吗?

答:要获得函数的定义,可以使用pg_get_functiondef():

select pg_get_functiondef(oid)
from pg_proc
where proname = 'foo';

有类似的函数来检索索引,视图,规则等的定义。有关详细信息,请参阅手册: http://www.postgresql.org/docs/current/static/functions-info.html

获取用户类型的定义有点棘手,需要查询 information_schema.attributes:

select attribute_name, data_type
from information_schema.attributes
where udt_schema = 'public'
  and udt_name = 'footype'
order by ordinal_postion;

从那里你需要重新组装create type声明

  1. 高斯数据库的Primary key支持多个字段吗 答:支持

  2. GaussDB删除存储过程报错 错误为:ERROR: function prmecat.insert_copy_partprice asks parameters

答:这是因为你这存储过程定义了多个,属于重载的函数,删的时候要指定参数,指明要删除哪一个,语法为:

DROP FUNCTION [ IF EXISTS ] function_name  
[ ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) [ CASCADE | RESTRICT ] ];
  1. GaussDB报 Error: insert partition key does not map to any partition 错误为:ERROR: inserted partition key does not map to any partition,详细 inserted partition key cannot be NULL for interval-partitioned table

答:排查下分区键插入的值是否有空值

  1. Oracle数据库转高斯数据库问题 问题描述:Oracle数据库转高斯数据库,原Oracle中的all_users无法识别,查资料之后替换为db_users(oracle中all_users是对应的高斯里面的db_users吗,这样替换对不对),替换成db_users后高斯能够识别 了,但是, 报permission denied for relation db_users异常

答:Gaussdb是用pg_roles

  1. 自建sys_guid()函数时报“ permission denied for schema public”,怎么解决

答:这是因为安全原因,不允许普通客户在public模式下操作。可以创建你自己的schema下创建 参考:https://zhuanlan.zhihu.com/p/365139070

  1. memory is temporarily unavailable 该怎么解决 错误为: ``` Caused by: com.huawei.opengauss.jdbc.util.PSQLException: [X.X.X.X:47714/X.X.X.X:8000] ERROR: memory is temporarily unavailable

failed on request of size 8388608 bytes under queryid 3659178092607942 in nodeHash.cpp:419.


答:用下面几个SQL分析下: 
1.当前占用内存TOP 20的会话 

select
m.used_mem, pid, sessionid, datname, usename, application_name, client_addr, xact_start, query_start, (now() - xact_start)::text as xact_runtime, query from gs_session_memory m join pg_stat_activity a on (split_part(m.sessid, '.', 2) = a.sessionid) where pid <> pg_backend_pid() order by m.used_mem desc limit 20;


2.指定会话内存占用详细 

select * from gs_session_memory_detail where split_part(sessid, '.', 2) = 会话ID order by totalsize desc;

注意: 
(1)used_mem的单位为MB
(2)没有sysadmin/monadmin权限的普通用户只能看到自己的会话

  1. python连OpenGauss有方案吗?psycopg2可以用吗 答:官网文档里有做详细的介绍:https://support.huaweicloud.com/qs-opengauss/opengauss_Psycopg_connect.html

Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、GaussDB数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配PostgreSQL数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode和Python 3。

GaussDB数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式链接。

  1. LOWER 函数对应高斯数据库的哪个函数 答:一样是lower(string) 描述:把字符串转化为小写。 返回值类型:varchar 示例:


    openGauss=#SELECT lower('TOM') lower




    tom (1 row)


  2. 不小心把表数据删除了,高斯数据库怎么恢复 答:如果误删数据数据,试一下闪回查询。需要提前开启闪回功能,同时建议保留时间不超过3小时


    select * from t1 timecapsule timestamp to_timestamp('2021-10-12 10:03:08.272344','YYYY-MM-DD HH24:MI:SS.FF')
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论