数据库第一次启动报错

一、问题描述(虚拟机环境 red hat linux5.5 + oracle 11g r2):

       

SQL> startup

ORA-27154: post/wait create failed

ORA-27300: OS system dependent operation:semget failed withstatus: 28

ORA-27301: OS failure message: No space left on device

ORA-27302: failure occurred at: sskgpcreates

 

二、分析

  1、查看系统semaphores参数配置:

       cat /proc/sys/kernel/sem

   结果:100      100     32     128

   对应  semsl  semmns   semopm  semni

   常见参数描述:

          shmmax-共享内存段,建议设大点, 达到最大SGA 
          shmmin -
最小的共享内存段. 
          shmmni -
共享内存标志符的数量. 
          shmseg -
一个进程可分配的最大内存段数. 
          shmall -
最大可允许的内存数,比SGA还要大. 
          semmns -
信号量,跟ORACLE的PROCESS数有关. 
          semmsl -
一个信号量中最大的信号量数.

     semmsl应设置为服务器中各个实例中最大的processes参数+10,semmns参数应为semmsl* semmni

     semopm参数与semmsl相同

 

    2、查看oracle pfile文件:cat $ORACLE_HOME/admin/orcl/pfile/init.ora.9312012233717 | grepprocesses

         结果为processes=150

         因此semmsl = 150 + 10 =160 , semopm= 160, semmns =160 * 128 = 20480 

         接下来 备份sem文件,echo  "160 20480 160 128 > /proc/sys/kernel/sem"

         设置启动时自动应用: vi/etc/sysctl.conf ,将kernel.sem = 100 100 修改为:

                 kernel.sem = 160 20480 160 128

      

  三、修改参数,重启系统,oracle启动成功

       

 


<think> 我们正在处理用户关于"Linux系统下MariaDB启动报错的解决方案"的问题。用户提供的引用中包含多个可能的错误场景和解决方法。我们需要综合这些引用信息,并给出结构清晰的解决方案步骤。 根据引用信息,常见的MariaDB启动报错可能涉及以下几个方面: 1. 配置文件问题(如引用[2]中通过复制配置文件解决) 2. 权限问题(如PID文件无法更新,引用[4]提到) 3. 网络端口冲突(引用[2]中通过netstat检查端口) 4. Docker环境下的问题(引用[3]提到,但用户问题未明确在docker环境,暂时不考虑) 5. 其他错误(如引用[5]建议查看日志) 因此,我们将按照以下步骤进行排查和解决: 步骤1:检查错误日志 使用journalctl或查看MariaDB日志来确定具体错误。 步骤2:检查配置文件 确保配置文件(通常是/etc/my.cnf)正确且没有语法错误。 步骤3:检查端口冲突 确保3306端口没有被其他进程占用。 步骤4:检查数据目录和PID文件权限 确保MariaDB运行用户(通常是mysql)对数据目录和PID文件路径有写权限。 步骤5:初始化数据库(如果是新安装) 如果是第一次安装,可能需要初始化数据库。 步骤6:其他可能的问题(如SELinux、AppArmor等安全设置) 下面我们详细展开解决方案: </think> 针对Linux系统下MariaDB启动报错的解决方案,综合引用信息和常见故障场景,建议按以下步骤排查: ### 1. **检查错误日志定位问题** ```bash journalctl -xe -u mariadb.service # 查看详细系统日志 tail -n 100 /var/log/mariadb/mariadb.log # 查看MariaDB专用日志 ``` 关键错误示例: - `ERROR! The server quit without updating PID file`(引用[4]) 通常表示**权限问题**或**配置文件错误** - `Failed to start MariaDB database server`(引用[5]) 需检查依赖服务或资源冲突 --- ### 2. **配置文件问题处理(高频故障)** #### ▶ 修复配置文件路径错误 ```bash cp /usr/share/mysql/my-huge.cnf /etc/my.cnf # 重建配置文件(引用[2]) chown mysql:mysql /etc/my.cnf # 确保属主正确 ``` #### ▶ 检查配置项常见错误 - 确认`datadir`路径存在且mysql用户有写权限: ```bash ls -ld /var/lib/mysql # 检查默认数据目录 chown -R mysql:mysql /var/lib/mysql ``` - 验证`socket`和`pid-file`路径有效性 --- ### 3. **端口冲突排查** ```bash netstat -tlnp | grep 3306 # 检查3306端口占用(引用[2]) ``` 若端口被占用: ```bash systemctl stop conflicting_service # 停止冲突服务 # 或修改MariaDB端口 vim /etc/my.cnf [mysqld] port=3307 # 更改端口 ``` --- ### 4. **权限修复操作** ```bash # 重建系统表(重要!) mysql_install_db --user=mysql --datadir=/var/lib/mysql # 重置目录权限 chown -R mysql:mysql /var/lib/mysql chmod 755 /var/lib/mysql restorecon -Rv /var/lib/mysql # SELinux环境专用 ``` --- ### 5. **数据库初始化(新安装必做)** ```bash systemctl stop mariadb rm -rf /var/lib/mysql/* # 清除残留数据 mysql_install_db --user=mysql # 初始化数据库 systemctl start mariadb mysql_secure_installation # 安全配置向导 ``` --- ### 6. **依赖项检查** ```bash yum check-update mariadb-server # 检查更新 yum reinstall mariadb-server # 重装软件包(引用[1]) rpm -Va mariadb-server # 验证文件完整性 ``` > **注意**:Docker环境问题需单独处理(引用[3]),非容器环境无需考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值