服务器故障后删除共享内存段

数据库服务器发生故障之后,必须关闭共享内存段。

重要: 此过程必须由具有 GBase 8s 使用经验的 DBA 来执行。请咨询技术支持以获取协助。此过程仅适用于 UNIX™ 系统。
如果 GBase 8s 数据库服务器实例发生故障,请遵循以下过程来删除共享内存段:
  1. 以用户 gbasedbt 的身份登录。
  2. 使用 onmode -k 命令使数据库服务器进入脱机方式,然后除去共享内存。
  3. 如果 onmode -k 命令失败并且服务器未脱机,请运行 onclean -k 命令,或执行以下步骤:
    1. 使用 onstat -g glo 命令显示多线程运行信息。
    2. 在上面命令的输出中,找到与 class 列中 cpu 的第一个实例关联的进程标识 (pid)。
      例如,在 onstat -g glo 命令的以下输出中的 class 列内,cpu 出现了四次,其 pid 分别为 2599、2603、2604 和 2605:
      MT global info:
      sessions threads  vps      lngspins
      0        49       14       1       
                sched calls     thread switches  yield 0   yield n   yield forever
      total:    900100          898846          1238      27763     423778   
      per sec:  327             325             2         12        151      
      Virtual processor summary:
       class    vps      usercpu          syscpu           total
      cpu         4         0.92      0.10      1.02    
       aio         4         0.02      0.02      0.04    
       lio         1         0.00      0.00      0.00    
       pio         1         0.00      0.00      0.00    
       adm         1         0.00      0.01      0.01    
       msc         1         0.00      0.00      0.00    
       fifo        2         0.00      0.00      0.00    
       total       14        0.94      0.13      1.07    
      Individual virtual processors:
       vp    pid       class       usercpu   syscpu    total   
       1     2599      cpu         0.25      0.06      0.31    
       2     2602      adm         0.00      0.01      0.01    
       3     2603      cpu         0.23      0.00      0.23    
       4     2604      cpu         0.21      0.03      0.24    
       5     2605      cpu         0.23      0.01      0.24    
       6     2606      lio         0.00      0.00      0.00    
       7     2607      pio         0.00      0.00      0.00    
       8     2608      aio         0.02      0.02      0.04    
       9     2609      msc         0.00      0.00      0.00    
       10    2610      fifo        0.00      0.00      0.00    
       11    2611      fifo        0.00      0.00      0.00    
       12    2612      aio         0.00      0.00      0.00    
       13    2613      aio         0.00      0.00      0.00    
       14    2614      aio         0.00      0.00      0.00    
                       tot         0.94      0.13      1.07
    3. 使用 kill 命令(按顺序)终止进程标识 2599、2603、2604 和 2605。
  4. 如果尚未除去共享段,请遵循以下步骤:
    1. 确定服务器编号。
      可以通过检查 GBase 8s 实例的 onconfig 文件来找到服务器编号。
    2. 将服务器编号与 21078 相加。
      例如,如果服务器编号为 1,请将 1 与 21078 相加,从而得出 21079。
    3. 将上一步中的和转换为十六进制。
      在上一个示例中,21079 的十六进制数为 5257。
    4. 在上一步中生成的十六进制值末尾添上 48。
      例如,525748。
    5. 以 root 用户身份运行 ipcs 实用程序,以显示服务器保持打开的共享内存段(如果有)。搜索 key 列以查找 4.d 中得出的数字。
    6. 除去与 4.d 中得出的数字关联的每个共享内存标识。

有关 onclean 实用程序的更多信息,请参阅 GBase 8s 管理员参考

有关您系统的正确 ipcm 语法,请查阅操作系统文档。