---
title: OceanBase 数据库没有生成 core 文件的情况-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 OceanBase 数据库没有生成 core 文件的情况相关的常见问题和使用技巧，帮助您快速解决 OceanBase 数据库没有生成 core 文件的情况的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库没有生成 core 文件的情况

更新时间：2024-04-25 09:26

适用版本： V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

在 OceanBase 数据库环境中，如果没有生成 core 文件，可能是由于以下原因导致的。

## ulimit -c 等于 0

大多数部署工具都会在启动 OBServer 时加上 ulimit -c unlimited 以保证生成完整的 coredump 文件，不过有时出现宕机，人为的手动重启 OBServer 时直接执行 `./bin/observer`，这样拉起来的 OBServer 将重读新的 ulimit，如果 ulimit 是 0，后续将无法生成 coredump 文件。

示例。

```shell
ulimit -c
unlimited

```

上述示例中 `-c` 用于控制 core 文件的大小，此处 ulimt -c 的输出结果为 unlimited，所以只要磁盘空间足，core 文件生成是完整的，如果该 ulimt -c 的输出结果值很小或者等于 0，那么生成的 core 文件不完整，甚至不生成 core 文件。

启动 OBServer 时的 `-c` 状态可以从 `observer.log` 日志中获取（存在启动日志）。

```shell
grep 'RLIMIT' observer.log*

```

输出结果如下：

```shell
INFO  print_limit (main.cpp:340) [20475][][T0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=5] [operator()] RLIMIT_CORE              = unlimited

```

OBServer 打印 crash error 日志时，包含 ulimt -c 的结果，当无法生成coredump 时，可以通过 crash error 日志判断是否是 ulimit 是 0 造成的。

```shell
grep ‘CRASH ERROR' observer.log*

```

输出结果如下：

```shell
observer.log:CRASH ERROR!!! sig=6, sig_code=-6, sig_addr=14fcfc0000a3f9, RLIMIT_CORE=unlimited, timestamp=1663683871180567, tid=41977, tname=observer, trace_id=0-0-0-0, extra_info=((null)), lbt=0x1357aca9 0x135502d3 0x135501ba 0x13550116 0x7fcf35eae61f 0x7fcf35687277 0x7fcf35688967 0x4a4cdbd 0x4a3bf92 0x4a3ad64 0x7fcf35673444 0x4a383a8

```

## core 文件目录权限不足

1. 查看 core 文件的目录模式。

   ```shell
   sysctl -a | grep pattern

   ```

   输出结果如下：

   ```shell
   kernel.core_pattern = /data/core-%e-%p-%t

   ```
 2. 显示当前目录内文件的详细属性信息。

   ```shell
   ll /

   ```

   输出结果如下：

   ```shell
   total 56
   rwxrwxrwx    1 root root    7 Jun  2  2017 bin -> usr/bin
   dr-xr-xr-x    1 root root 4096 Nov 14  2019 boot
   drwxr-xr-x    4 root root 4096 Jun 15 21:10 data

   ```

core 文件的目标目录（由 kernel.core_pattern 指定），data 目录只有 root 用户有读写权限，如果是非 root 用户的进程将无法产生 core 文件。

## 磁盘空间不足

如果磁盘空间不足，可能导致 core 文件不完整或无法生成。

## 存在删除 core 文件的定时任务或人为误判存在 core 文件

- 当系统中存在定期删除 core 文件的任务，导致 core 文件被删除。
 - 由于人为误判认为存在 core 文件。

## 磁盘扩容后无法生成 core 文件

在某些特殊情况下，例如磁盘扩容之后无法生成 core 文件。

## 进程在 coredump 期间被 kill -9

通常情况下，在 coredump 期间进程无法被强杀的，但在某些环境中碰到 coredump 期间执行了 kill -9 命令，最终导致生成的 core 文件不完整。

## 适用版本

OceanBase 数据库所有版本。

Previous

[OBServer 节点报错：easy_consume_negotiation_msg](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207683)

Next

[两地三中心五副本架构下，同城两机房网络故障后的应急预案注意事项](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000322507) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
