# 常见问题

## 机器环境初始化问题

## `ulimit` 设置不生效

+ 现象

```bash
ulimit -a
...
stack size              (kbytes, -s) 1024
...
```

此时，使用 admin 用户通过 ulimit -s 命令修改栈大小，操作系统报错 `cannot modify limit: Operation not permitted` 。

`ulimit` 问题设置不对，可能导致进程 OBSERVER 无法启动。

+ 原因

admin 用户 ulimit 配置未生效的原因可能是由于操作系统关闭了 PAM，PAM 用于限制登录用户的 ulimit 配置，如果不开启 PAM，则会使用 SSHD 的默认值（即 1024）。

+ 解决办法

修改 SSHD 配置文件 `sshd_config` ，取消对 `UsePAM yes` 的注释。

```bash
sudo vim /etc/ssh/sshd_config
UsePAM yes

```

重启 SSHD 服务。

```bash
sudo systemctl restart sshd
```

再次修改 `ulimit.conf` 文件

```
vim  /etc/security/limits.conf
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited
```

重新登录检查实际值，用命令：`ulimit -a` 。

## OBD 部署问题

## 目录非空

+ 现象

```bash
Initializes cluster work home x
[ERROR] fail to init zone1(172.20.249.53) data path: /data is not empty
```

+ 原因

CentOS 8.0 刚初始化的文件系统里目录里会有一个默认文件夹 `lost+found` 。

+ 解决办法

清空刚建的文件系统目录。

`sudo /bin/rm -rf /data/* /redo/*`

## 其他通用报错

+ 现象

`obd` 命令出错。

+ 原因

查看 `obd` 命令日志。

```bash
vim ~/.obd/log/obd + R
```

+ 解决办法

根据错误描述去解决。

## OBSERVER 启动失败

## 找不到共享库

+ 现象

手动启动进程 OBSERVER ，提示 共享库找不到。

```bash
[admin@obce02 ~]$ cd oceanbase-ce/
[admin@obce02 oceanbase-ce]$ bin/observer
bin/observer: error while loading shared libraries: libmariadb.so.3: cannot open shared object file: No such file or directory
```

+ 原因

没有将 OceanBase 的 LIB 加到环境变量 `LD_LIBRARY_PATH` 里。

LIB 目录如下：

```bash
[admin@obce02 ~]$ tree oceanbase-ce/
oceanbase-ce/
├── admin
├── bin
│   └── observer -> /home/admin/.obd/repository/oceanbase-ce/3.1.0/84bd2fe27f8b8243cc57d8a3f68b4c50f94aab80/bin/observer
<....>
├── lib
│   ├── libaio.so -> /home/admin/.obd/repository/oceanbase-ce/3.1.0/84bd2fe27f8b8243cc57d8a3f68b4c50f94aab80/lib/libaio.so
│   ├── libaio.so.1 -> /home/admin/.obd/repository/oceanbase-ce/3.1.0/84bd2fe27f8b8243cc57d8a3f68b4c50f94aab80/lib/libaio.so.1
│   ├── libaio.so.1.0.1 -> /home/admin/.obd/repository/oceanbase-ce/3.1.0/84bd2fe27f8b8243cc57d8a3f68b4c50f94aab80/lib/libaio.so.1.0.1
│   ├── libmariadb.so -> /home/admin/.obd/repository/oceanbase-ce/3.1.0/84bd2fe27f8b8243cc57d8a3f68b4c50f94aab80/lib/libmariadb.so
│   └── libmariadb.so.3 -> /home/admin/.obd/repository/oceanbase-ce/3.1.0/84bd2fe27f8b8243cc57d8a3f68b4c50f94aab80/lib/libmariadb.so.3
```

+ 解决办法

将 OceanBase 的 LIB 加到环境变量 `LD_LIBRARY_PATH` 里。也可以写到 `.bash_profile` 中。

```bash
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce/lib/' >> ~/.bash_profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce/lib/

```
