【 使用环境 】生产环境
【 OB or 其他组件 】OBCE-4.2.1
【 使用版本 】OBCE-4.2.1
【问题描述】OB数据库建表报错:
No memory or reach tenant memory limit Query: create index if not exists
请教下,这个执行ddl 语句跟租户内存有关系吗?还是说 ob 表数量达到一定的数量,对租户内存有要求?
内存超限了,调大租户内存的占比
租户内存跟表数量有对应关系吗?
有可能是租户的内存不大导致 SQL工作空间内存也不大
表是不是没索引
这是在oms 迁移元数据报错了。表有索引,在建报错的。
ob 在建租户的时候,unit 规格改如何设置大小,有没有最佳实践?
大小随时可以修改,我一般是在迁移得时候给的很大,迁移完成后在缩回来
发一下报错SQL,报错截图及完整的obserevr.log
同时使用obdiag搜集下内存信息
obdiag gather scene run --scene=observer.memory [memory problem] [内存问题]
https://www.oceanbase.com/docs/common-obdiag-cn-1000000000902157
我通过sql 的 trace_id 所有了observer.log 日志 看到如下报错:
这个根因是内存不足还是 表数量达到上线?
这个库很小,业务表也就71张,内存 2c8g*3 zone ,内存不应该不足。
根因确定需要相应的日志,请提供下
1.报错SQL(可脱敏后提供)
2.obdiag gather scene run --scene=observer.memory
3.obserevr.log
4.
请按如下步骤提供下日志
1.开启 Trace 功能
SET ob_enable_show_trace=ON;
2.执行问题SQL
3.获取SQL trace_id
SELECT last_trace_id() FROM DUAL;
4.登录对应 OBServer 节点,进入到日志文件所在目录
cd /home/admin/oceanbase/log
5.获取trace_id对应的日志
grep xxxxxxx observer.log --填写第3步获取的trace_id
trace_YB420A262B1B-00061AAF4835527D-0-0.log (44.7 KB)
按照如上方法 ,
cat observer.log* |grep YB420A262B1B-00061AAF4835527D-0-0 获取的日志如上,谢谢!
你这个建表语句是建了多少个分区呢
CREATE TABLE requirement_task
(
id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘表ID,主键,供其他表做外键’,
reqtask_id
bigint(20) NOT NULL COMMENT ‘需求任务编号’,
task_initiator
varchar(20) NOT NULL COMMENT ‘任务发起人’,
estcomplet_date
datetime NOT null COMMENT ‘预计完成日期’,
taskres_person
varchar(20) NOT NULL COMMENT ‘任务责任人’,
line_type
varchar(50) NOT NULL COMMENT ‘拉线类型’,
masspro_base
varchar(20) NOT NULL COMMENT ‘量产基地’,
masspro_line
varchar(20) NOT NULL COMMENT ‘量产拉线’,
reqcomplet_time
datetime NOT NULL COMMENT ‘要求完成日期’,
nmq_person
varchar(20) NOT NULL COMMENT ‘NMQ’,
npq_person
varchar(50) NOT NULL COMMENT ‘NPQ’,
pqis_person
varchar(50) NOT NULL COMMENT ‘PQIS’,
pqe_person
varchar(50) NOT NULL COMMENT ‘基地PQE’,
pqic_person
varchar(50) NOT NULL COMMENT ‘PQIC’,
other_dep
varchar(50) NOT NULL COMMENT ‘其他部门’,
other_person
varchar(50) NOT NULL COMMENT ‘其他责任人’,
task_require
varchar(50) NOT NULL COMMENT ‘任务要求’,
task_status
varchar(50) NOT NULL COMMENT ‘任务状态’,
created_by
varchar(20) DEFAULT ‘1’ COMMENT ‘创建人’,
created_by_name
varchar(50) DEFAULT ‘1’ COMMENT ‘创建人名称’,
creation_date
datetime DEFAULT NULL COMMENT ‘创建时间’,
last_updated_by
varchar(20) DEFAULT NULL COMMENT ‘修改人’,
last_updated_by_name
varchar(50) DEFAULT ‘1’ COMMENT ‘修改人名称’,
last_update_date
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘修改时间’,
object_version_number
bigint NOT NULL DEFAULT ‘1’ COMMENT ‘行版本号,用来处理锁’,
PRIMARY KEY (id
)
) AUTO_INCREMENT = 1000001 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMMENT = ‘需求任务表’;
就一个普通表,
已联系老师排查,有进展及时回复你
select t.tenant_name, p.name resource_pool_name, p.unit_count, u.name unit_name, u.max_cpu, u.min_cpu, round(memory_size/1024/1024/1024,2) memory_size_gb, round(u.log_disk_size/1024/1024/1024,2) disk_size_gb, p.zone_list from oceanbase.__all_resource_pool p right join oceanbase.__all_unit_config u on p.unit_config_id=u.unit_config_id left join oceanbase.__all_tenant t on p.tenant_id=t.tenant_id; 连sys租户执行下这sql看下实际给了租户设置了多少G内存