• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > 如何解决Greenplum中无法通过标准命令修复的元数据错误,greenplum元数据

如何解决Greenplum中无法通过标准命令修复的元数据错误,greenplum元数据

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含如何解决Greenplum中无法通过标准命令修复的元数据错误,greenplum元数据等服务器相关知识,网友希望可以进行参考

如何解决Greenplum中无法通过标准命令修复的元数据错误,greenplum元数据


Greenplum的可靠性还是没法和传统商业数据库相比,它跑着跑着就会把自己的元数据给跑乱,有些是可以通过命令修复的,有些则只能直接去增删改system catalog。本文结合一个具体错误,介绍如何操作system catalog解决元数据错误。

现象

使用gpcheckcat -p 5432 databasename检查数据库时,将报出类似如下的输出:

Relation oid: 12345678
Relation name: None.None

    Name of test which found this issue: foreign_key_pg_class
        No pg_class entry for gp_distribution_policy {'localoid':12345678 } on master (mdw:5432)

在master host的OS里,用Greenplum的管理员用户,比如gpadmin,执行:

psql -d databasename -c 'select * from gp_distribution_policy where localoid=12345678;'

见得到类似如下输出:

localoid | attrnums
----------+----------
  12345678 | {1}
(1 row)

分析

这个错误表示在master node中记录分布策略的gp_distribution_policy元数据表中,存在一行记录表示Relation(oid=12345678)的分布策略(按column 1分布),而在记录所有数据库对象的pg_class元数据表中根本就没有oid=12345678的relation,因此,也无从获取到relation的名字(错误信息中只好显示为None.None)。在这种情况下,没有任何数据库命令能drop掉这个oid=12345678的relation。只好直接去操作system catalog。

解决

基本思路当然就是将gp_distribution_policy的这条记录删除,但是Greenplum是不允许直接操作system catalog的:

databasename=# delete from gp_distribution_policy where localoid=12345678;
ERROR:  permission denied: "gp_distribution_policy" is a system catalog

要操作system catalog,数据库必须已maintenance mode启动,psql要使用utility mode连接到数据库上,具体操作步骤如下,这些操作需要在维护窗口做,因为涉及到数据库停机:

  • root登陆master host
  • 切换到Greenplum的管理员用户,比如gpadmin:
su - gpadmin
  • 停止数据库:
gpstop -M fast
  • 将数据库启动到维护模式:
gpstart -m
  • 使用utility模式连接数据库:
PGOPTIONS='-c gp_session_role=utility' psql databasename
  • 在psql中设置system catalog可以编辑:
databasename=# set allow_system_table_mods=DML;
  • 在psql中删除gp_distribution_policy中的记录:
databasename=# delete from gp_distribution_policy where localoid=12345678;
  • 退出psql:
databasename=# \q
  • 停止数据库维护模式:
gpstop -m
  • 启动数据库生产模式:
gpstart

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何解决Greenplum中无法通过标准命令修复的元数据错误,greenplum元数据

相关文章

  • error: internal error: unable to execute QEMU command 'migrate': this feature or command is not cur,qemumigrate
  • Zookeeper 在Hadoop中的应用,zookeeperhadoop
  • Spark的日志配置,Spark日志配置
  • HIVE的数据存储,HIVE数据存储
  • openstack 用nova API 指定 compute node 创建 instance,openstackcompute
  • Flume 配置文件概述
  • HBase安装配置
  • 机器学习基础,学习基础
  • openstack中Nova组件Networks的所有python API 汇总,openstacknova
  • MapReduce 按照Value值进行排序输出,mapreducevalue

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Hadoop集群性能优化一,Hadoop集群性能优化
    • 什么是OpenStack,OpenStack
    • 关于Openstack的浅层次认知,openstack认知
    • hive schema详解,hiveschema
    • MemStore刷写线程—MemStoreFlusher源代码分析,hbasememstore
    • Nodejs课堂笔记-第六课 在DynamoDB中如何创建表,nodejsdynamodb
    • Storm计算结果是如何存放的,Storm计算结果存放
    • Dynamics CRM 2015 Update 1 系列(2): Upsert API,dynamicsupsert
    • 玩转OpenStack网络Neutron(3)--配置多种不同类型网络,openstackneutron
    • Docker image的工作原理,dockerimage

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有