IBM Software Group




IBM solidDB 基础




                           © 2008 IBM Corporation
主要内容

 solidDB 简介

 solidDB 安装、配置和工具

 solidDB 常用语法与命令

 操作注意事项




                     © 2008 IBM Corporation
solidDB 简介




             © 2008 IBM Corporation
solidDB 架构
                                    Client applications

 Client/Server:                 App        App
                                                       App
   – 网络通信                        ODBC       SA        JDBC

   – 内嵌                                 Client RPC

 SQL Engine:
                                                            TCP/IP


                     In-process applications
   – 解析器                   App     App            Server RPC

   – (基于成本)优化器                         SQL engine
                                                                                     To




                     solidDB
                               In-memory




                                                          Adv Repl.
 Database Engine:
                                                                                     other
                                db engine     Disk-
                                             based                                   nodes
                               In-memory    db engine
   – 内存表                          tables                                            To the




                                                          HSB
                                Disk storage manager                                standby
   – 磁盘表                                                                            node


   – 内存管理和资源开销
                                                     Disk database
                                                     Full checkpoint
                                                     Full log


                                                                      © 2008 IBM Corporation
IBM solidDB 内存数据库

 solidDB有两种数据库引擎,支持两类
  型的表:
  – 内存表 (MME)              IBM solidDB
  • 所有数据存储在内存中
  • 为内存存取优化的索引结构
                              SQL engine
  • 持久化或非持久化的数据           In-memory         Disk-
                           db engine       based
                                          db engine
 – 磁盘表 (DBE)                 M-
                           tables          Cache
  •   数据主要存储在磁盘中           Disk storage manager
  •   活动数据被复制到内存(Cache)
  •   为磁盘存取优化的索引结构                          事务日志
  •   持久化数据
                                       磁盘数据库
                                       完全 checkpoint

 查询和事务可以同时跨越两种类型的
  表。表类型对应用和用户透明


                                               © 2008 IBM Corporation
solidDB 支持的表类型
表类型                  特点                             创建方式
持久型内   内存表默认类型,支持Log和Checkpoint持久化机制;    CREATE TABLE tab_name (col_1
存表                                       INT, xxxx) STORE MEMORY
       支持行级锁、表级锁和事务隔离级别                  或DefaultStoreIsMemory=Yes

全局临时   所以数据存储在内存中,没有磁盘映象;不支持Log和         CREATE TRANSIENT TABLE
内存表    Checkpoint持久化机制;                  tab_name (col_1 INT, xxxx)

       支持行级锁、表级锁和事务隔离级别;全局可见

       数据不复制到HSB的备节点;
局部临时   所以数据存储在内存中,没有有磁盘映象;不支持Log和        CREATE TEMPORARY TABLE
内存表    Checkpoint持久化机制;                  tab_name (col_1 INT, xxxx)
       不支持行级锁,会话级可见;

       数据不复制到HSB的备节点
持久型磁   数据存储在磁盘中,支持Log和Checkpoint持久化机制;   CREATE TABLE tab_name (col_1
盘表                                       INT, xxxx) STORE DISK
       支持行级锁、表级锁和事务隔离级别;                 或DefaultStoreIsMemory=No



                                                          © 2008 IBM Corporation
编程接口

 solid JDBC Driver:                     App         App      App

   – 用于Java应用程序                          JDBC        ODBC     SA

   – 完全兼容JDBC 标准                                Client RPC
   – JDBC2.0                                                         TCP/IP

 solid ODBC Driver:          In-process application
                                                           Server RPC
   – 比JDBC快30%-50%                  App (C/Java/SA)

   – solidDB最常用的驱动                              SQL engine




                              solidDB
   – ODBC3.51                           In-memory




                                                                    Flow
                                         db engine      Disk-
 solid API (SA):                       In-memory
                                                       based
                                                      db engine
                                           tables
   – 比ODBC快30%-50%




                                                                    HSB
                                         Disk storage manager
   – 单表访问
 solidDB Linked Libraries:
   – JDBC,ODBC 或 SA



                                                             © 2008 IBM Corporation
数据库引擎 - 事务管理

 事务:
                        Committing a Transaction
  – 作为一个整体,一组操作被提交
    (保存)或回滚(取消)                 TRANSACTION
  – 可能同时包含内存表和磁盘表

 提交事务:
  – 变化数据被持久化                             BufferPool
  – 变化数据对其他用户变成可见

 事务日志:
  – 存储已提交的事务         SOLnnnnn.LOG        solid.db

  – 保证数据库在异常关闭情况下的
    事务一致性


                                          © 2008 IBM Corporation
solidDB HSB 双机架构

 热备份复制

                               Application



                   Connected                 Connected




          Server1       Txn        HSB            Server2   Txn
                        Log                                 Log
          Active
                                                 Standby
                                                  Active




                                                                  © 2008 IBM Corporation
solidDB 安装、配置和工具




               © 2008 IBM Corporation
安装solidDB

 Windows平台上安装
  – 运行安装程序 (.exe) ,根据界面提示执行安装

 Linux/Uinx平台上安装
  – 无需专有的用户组和用户
  – solidDB6.1:运行安装程序(.bin),安装程序在当前路径下自动完成
  – solidDB6.3:运行./solidXXX.bin -i console,根据提示执行安装
  • 需要JER

 升级补丁
 – 解压后移动以下文件到solidDB的安装路径
   *.lib      --> SOLIDDIRlib
   *.h        --> SOLIDDIRinclude
   *.dll *.so --> SOLIDDIRbin
   sol*       --> SOLIDDIRbin
   SolidDriver2.0.jar --> dbdirjdbc
                                               © 2008 IBM Corporation
配置与操作 – 定义数据库工作目录

 solidDB 数据库工作目录,是一个数据库实例的根目录

 数据库工作目录必须包含:
 – solid.lic (solidDB许可证文件)
   • solid.lic不合法,导致数据库无法启动
 – solid.ini (solidDB配置文件)
   • 未提供solid.ini,数据库将全部使用默认参数

 指定工作目录的方法
 – -c 参数
 – eg: solid –c /usr/local/soliddb-6.1/eval_kit/standalone

 工作目录包括:
  – solmsg.out (solid消息文件),soltrace.out…
  – (不一定包含数据库文件)
                                                             © 2008 IBM Corporation
配置 solidDB
      solid.ini 文件                       solid.ini
      – 存放在数据库的工作目录
                            [IndexFile]
                            FileSpec_1=c:soliddbsolid.db 2GB
      定义solidDB最常用的参数      CacheSize = 32M

      – 数据文件、日志文件和排序文件的路径   [Logging]
                            LogEnabled = Yes
      – 通信参数设置              LogDir =c:datalogs
                            DurabilityLevel = 1
      – 内存的使用
                            [General]
      – 定时命令                BackupDirectory=e:solbackup

                            [Com]
      典型地,很小部分参数需要设置       Listen=tcp 1313, shm solid

      – 缺省值适用大多数场合          [Sorter]
                            TmpDir_1 = c:temp

                            [Srv]
                            At=20:30 makecp, 21:00 backup,
                            sun 23:00 shutdown



13                                                       © 2008 IBM Corporation
配置 – 在solid.ini设置参数

 由方括号定义的命名进行参数分类:
  – [Com], [General], [Index File], [Logging], [Srv],...
 参数句法:
  – <param_name>=<param_value>
 允许空格
 不区分大小写
 分号后面的内容是注释
  – ; This is a comment
  – <param_name>=<param_value> ; This is also a comment
 在solmsg.out参考告警信息




                                                           © 2008 IBM Corporation
基本操作 – 启动solidDB
 创建并启动数据库命令
  solid –c workingdir -U username –P password –C catalog
  eg: solid –c /usr/local/soliddb-6.1/eval_kit/standalone
    –U radius –P radius
                                     solid –c dir

 启动数据库
                                    检查solid.lic
  – 如果数据库已经存在,启动数据库
    的命令为:
                                    检查solid.ini
  solid –c workingdir
                                    数据库文件           否
                                     是否存在               创建数据库

                            装载内存表
                                            是


                            自动恢复    启动数据库


                            打开数据库



                                                        © 2008 IBM Corporation
基本操作 – 关闭solidDB

 正确关闭数据库的方法
  – 在管理工具(solcon, solsql)执行
    关闭命令
                          ADMIN   COMMAND ‘close';
  – 关闭数据库服务器图标(Windows)
 推荐步骤                    ADMIN   COMMAND ‘throwout all';

  – 阻止建立新连接:close         ADMIN   COMMAND 'shutdown';

  – 退出当前所有用户:throwout all ADMIN   COMMAND 'shutdown force';

  – 停止 solidDB进程:shutdown
 异常关闭不会破坏数据库,但会导致
  下次启动时间更长
  – 异常掉电
  – 系统异常宕机
                                               © 2008 IBM Corporation
数据管理工具

 solidDB提供以下工具
   – solidDB Remote Control - solcon
   – solidDB SQL Editor - solsql
   – solidDB Data Dictionary - soldd
   – solidDB Export - solexp
   – solidDB SpeedLoader – solload

 使用 - h 查看工具的选项




                                       © 2008 IBM Corporation
工具:Solid SQL Editor - solsql
 功能
 – 执行所有管理命令:ADMIN COMMAND „com_name‟;
 – SQL 语句、SQL 脚本
 用法
 – 登录数据库:solsql " tcp 192.168.1.100 1315" username password
 – 运行脚本:solsql "tcp 1315" username password test.sql
 – 外部执行:solsql -e"ADMIN COMMAND status" "tcp 1315"
   username password
 – 注意,在solsql中要执行commit work;显示提交事务
 solsql 选项
 – -h 查看所有选项
 – -t 显示执行时间
 – -a 自动提交

                                                       © 2008 IBM Corporation
工具:Solid Remote Control - solcon
 功能
 – 执行所有管理命令
 – 等同于 ADMIN COMMANDs


 权限要求
 – SYS_ADMIN_ROLE 或 SYS_CONSOLE_ROLE


 用法
 – solcon " tcp 192.168.1.2 1315" username password
 – solcon -e"status" "tcp 1315" dba dba


 solcon选项
 – solcon -h

                                                      © 2008 IBM Corporation
工具: solexp数据导出工具
 表数据导出
  – solexp [options] [listen-name] <username> <password> <table|*>
   整表导出:solexp "tcp 1315" dba dba FOO
   条件导出:solexp -e“select id, name from FOO where id > 100” "tcp 1315"
    dba dba FOO

 导出结果:
  – 当前目录下生成两个文件:
   • 控制文件*.ctr,如DBA_FOO.ctr。(导入数据时需要使用控制文件)
   • 数据文件*.dat,如DBA_FOO.dat。(实际数据)


 常用选项:
  – solexp -h 帮助信息
  – solexp -e 导出时执行-e后面的语句


                                                              © 2008 IBM Corporation
工具: solload数据导入工具
 数据导入
 – solload [options] [listen-name] <username> <password> <control-file-name>
   solload -b 2000 -t “tcp 1315” dba dba DBA_FOO.ctr


 常用选项
 – -h   帮助信息                                           LOAD DATA
                                                       INFILE 'DBA_FOO.dat'
 – b<records> 批量提交的行数,默认为1                             INTO TABLE "DBA"."FOO"
                                                       FIELDS TERMINATED BY ','
 – -x errors:<count>    允许错误次数,默认为50                   OPTIONALLY ENCLOSED BY "'"
 – -x skip:<records>    跳过行数                           (
                                                              "ID" INTEGER NULLIF NULL,
 – -t 结束后打印时间                                                 "NAME" CHAR(30) NULLIF NULL
                                                       )

 注意事项                                                            DBA_FOO.ctr

 – 一定要使用-b选项,建议2000行提交一次
 – 数据导入时检查数据唯一性和合法性
   • 必要时,增大“允许错误”次数

                                                                           © 2008 IBM Corporation
工具: soldd 数据字典工具
 数据字典
 – 将数据库的模式导成文本
  • 表、视图、存储过程、序列
 – soldd [options] [listen-name] <username> <password>
  • soldd “tcp 1315” dba dba


 结果
 – 在当前目录下生成soldd.sql,改文件包含表、索引、存储过程、触发
   器等的创建语句




                                                         © 2008 IBM Corporation
solidDB常用语法和命令




                 © 2008 IBM Corporation
基本操作 – solsql

 在solsql执行
  – 运行SQL语句,SQL脚本
  – 允许管理命令:admin command „cmd_name‟;
  – 语句以分号结束
  – 需要显示提交事务或回滚事务
  • Commit work;
  • Rollback work;




                                       © 2008 IBM Corporation
数据库消息文件 - solmsg.out

------------------------------------------------------------
2009-05-30 12:35:14                                                  配置参
Version: 06.10.0014                                                  数错误
Operating system: Windows XP MT
Warning: Unrecognized entry in inifile: Srv.TraceFileSize
Warning: 1 unrecognized, illegal or deprecated entry in 'solid.ini'.                许可证
IBM solidDB - v.06.10.0014 (Windows XP MT)                                          和配置
(c) Solid Information Technology Ltd. 1993, 2008                                     文件
Using license file C:3ProgramsolidDB6.1eval_kitstandalonesolid.lic
IBM solidDB 6.1
Using configuration file C:3ProgramsolidDB6.1eval_kitstandalonesolid.ini   回滚
Finished loading IMDB. Pages: 9                                                (非正
Starting roll-forward recovery, please wait ...                               常关闭)
Recovery successfully completed
2009-05-30 12:35:16 IBM solidDB - Standalone started at 2009-05-30 12:35:16
2009-05-30 12:35:16 Listening of 'TCP/IP 2315' started.
2009-05-30 12:35:16 Database started.
2009-05-30 12:35:19 User 'DBA' connected, user id 5, machine id huangqs (127.0.0.1).
2009-05-30 13:11:28 User 'TCP 2315' tried to connect from huangqs (127.0.0.1) with an illegal
username or password.
2009-05-30 13:11:39 User 'DBA' connected, user id 5, machine id huangqs (127.0.0.1).
2009-05-30 14:12:10 Checkpoint creation started
2009-05-30 14:12:11 Checkpoint creation completed

                                                                                          © 2008 IBM Corporation
监控和管理solidDB

 最常用的管理命令
  – 数据库状态: admin command 'status';
  – 内存开销: admin command 'memory';
  – 磁盘空间: admin command 'info logsize dbsize dbfreesize
    dbconfigsize ';
  – 当前用户列表: admin command 'userlist';
  – 当前用户详细信息: admin command 'userlist -l';
  – 指定用户详细信息: admin command 'userlist -l uid';
  – 断开指定的用户: admin command 'throwout [uid|all]';
  – 运行时间最长的SQL:admin command 'sqllist [top 1..20]„
  – 状态报告:admin command 'report <file_name>';
  – 运行跟踪:admin command 'monitor on/off [user {username | uid}]';
  – 详细状态定时跟踪:
       • admin command 'perfmon diff start filename interval ';
       • admin command 'perfmon stop';

                                                                  © 2008 IBM Corporation
监控和管理solidDB (续)

 最常用的管理命令
  – 查看配置参数:
    • admin command 'parameter';
    • admin command 'parameter section_name';
    • admin command „parameter section_name.para_name';
 – 查看参数描述:admin command 'describe parameter
   section_name.para_name'
 – 修改参数: admin command 'parameter
   section_name.para_name=new_value ';
 – 手动备份: admin command 'backup [-s] [backup directory]';
 – 查看备份历史记录 : admin command 'backuplist';
 – 查看备份状态 : admin command 'status backup';
 – 修改“定时任务”参数配 : admin command 'par srv.at= time_para1
   command1, time_para2 command2';

                                                          © 2008 IBM Corporation
监控和管理solidDB (续)

 HSB 常用命令
  – 查看HSB状态:admin command „hsb state';
  – 手动切换HSB状态:
   •   PRIMARY ALONE: admin command „hsb set primary alone';
   •   SECONDARY ALONE: admin command 'hsb set secondary alone';
   •   PRIMAYR ACTIVE: admin command 'hsb switch primary';
   •   SECONDARY ACTIVE: admin command 'hsb switch secondary';




                                                              © 2008 IBM Corporation
数据库状态: admin command 'status';




                                 © 2008 IBM Corporation
内存开销: admin command 'memory';

 Memory:
  – 数据库内存开销

 Info imdbsize
  – 内存表内存开销
  – 单位:KB




                                © 2008 IBM Corporation
磁盘空间:admin command 'info logsize dbsize dbfreesize dbconfigsize ';


 磁盘开销
  – 其中logsize和dbsize分别表示当前日志文件和数据文件的大小,
    dbfreesize是在当前的dbsize中还能重用的磁盘空间。

 – logsize、dbsize和dbfreesize的单位是KB, dbconfigsize是MB。

 – solidDB数据文件使用率计算公式是:数据文件使用率(%) = (dbsize-
   dbfreesize)/1024/dbconfigsize*100




                                                          © 2008 IBM Corporation
当前用户列表: admin command 'userlist';

 当前用户列表:
  – 包括用户名、用户ID、连接类型、客户端机器ID、登录时间
  – 可缩写为: admin command 'ul';
  – 连接类型:
  • ODBC -- ODBC驱动,常用于C/C++程序
  • Java – JDBC驱动,常用于Java程序
  • SQL – solsql命令行连接




                                    © 2008 IBM Corporation
当前用户详细信息: admin command 'userlist -l';
指定用户详细信息: admin command 'userlist -l uid';

 用户详细信息
  – 包含用户相关的详细信息
  – 该命令对数据库分析非常有帮助
  – 缩写:
   • admin command 'ul -l uid';




                                             © 2008 IBM Corporation
断开指定的用户: admin command 'throwout [uid|all]';

 断开指定的用户
  – „throwout all‟ 不断开
    自身连接

 – 断开连接后,正在运
   行的事务被终止
   • 常用于终止事务




                                        © 2008 IBM Corporation
运行时间最长的SQL:admin command 'sqllist [top 1..20]';

 运行时间最长的SQL
  – 用于定位哪些SQL运行时间
    最长

 – 了解该SQL的状态




                                        © 2008 IBM Corporation
状态报告:admin command 'report <file_name>';

 状态报告
  – 报告数据库当前详细状态
  • 数据库状态快照
 – 默认在工作目录下生成文件
 – 报告问题时,请附上状态报告文件




                                           © 2008 IBM Corporation
运行跟踪:admin command 'monitor on/off [user {username | uid}]';


 跟踪数据库
  – 打开数据库的Trace开关,用于监控数据库执行的具体操作。开关打开
    后,在数据库工作目录生成soltrace.out文件。可以执行username或者
    userid进行过滤跟踪。
  – 注意:打开Trace开关将严重影响数据库的性能,该命令只在只在分析
    定位问题时才使用,使用完成务必执行’monitor off’进行停止跟踪。
  – 注意:跟踪完成后,需要执行‟monitor off‟停止跟踪




                                                         © 2008 IBM Corporation
详细状态定时跟踪

 详细状态定时跟踪:
  – 启动:admin command 'perfmon diff start filename interval';
  eg: admin command 'pmon diff start pmon_1.txt 2000';
  – 停止:admin command 'perfmon stop';
 检查数据库负载:
  – admin command „pmon‟; (如下图)




                                                               © 2008 IBM Corporation
查看配置参数:admin command 'parameter';

 查看配置参数:
  – admin command 'parameter';
  – admin command 'parameter section_name';
  – admin command 'parameter section_name.para_name';




                                                        © 2008 IBM Corporation
查看参数描述,修改参数

 查看参数描述:
  – admin command 'describe parameter section_name.para_name';
 修改参数:
  – admin command 'parameter section_name.para_name=new_value';
  – 注意:请勿随意修改参数




                                                        © 2008 IBM Corporation
手动备份:admin command 'backup [-s] [backup_directory]';

 手动备份:
  – 如果已经配置[General]. BackupDirectory,则可以在solsql命令行执行 ADMIN
    COMMAND „backup [-s]„;
  – 如果未配置[General].BackupDirectory,或计划备份数据库到另一个路径,则可
    以在solsql执行ADMIN COMMAND „backup [-s] backup_directory‟;,
     • 如 ADMIN COMMAND „backup -s /export/home/backupdata‟;。
 –   -s是可选项,如果使用-s选项,则备份命令需要等待备份完成后才返回。
 –   注意:如果backup_directory目录不存在,备份不成功
 –   注意:尽量不要在数据库文件所在的物理磁盘备份数据库
 –   注意:数据库在线时,copy数据文件不等于备份数据库
     • – copy方式导致复制出来的文件不可用




                                                               © 2008 IBM Corporation
查看备份历史记录: admin command 'backuplist';
查看备份状态: admin command 'status backup';
 查看备份状态:
  – admin command 'status backup';
    •   SUCCESS、ACTIVE、FAILED

 查看备份历史记录:
  – admin command 'backuplist';




                                         © 2008 IBM Corporation
修改“定时任务”参数配

 修改“定时任务”参数配 :
  – admin command „par srv.at= time_para1 command1, time_para2 command2‟;
  – 支持“定时”命令
    •   backup
    •   throwout                             At = At_string
    •   makecp                               At_string ::= timed_command [,timed_command ]
    •   shutdown                             timed_command ::= [ day ] HH:MM argument
    •   report                               day ::= sun | mon | tue | wed | thu | fri | sat
    •   open
    •   Close
  – 常用于定时备份(如下图)
  – 注意:修改“定时任务”参数配置立刻生效。请详细参考<Administrator Guide.pdf>的
    [3.14Entering Timed Commands]




                                                                            © 2008 IBM Corporation
查看HSB状态:admin command 'hsb state';

 HSB状态
  – PRIMARY ACTIVE:
   •   HSB数据库处于正常连接状态
   •   数据库能处理读/写事务
   •   数据库正在发送数据到备数据库
   •   备数据库一定是SECONDARY ACTIVE 状态
 – PRIMARY ALONE:
   •   HSB 数据库处于断开连接状态
   •   对端数据库可能是SECONDARY ALONE 状态
   •   数据库能处理读/写事务
   •   数据库以后可能需要发送事务到备数据库
 – PRIMARY UNCERTAIN:
   • HSB 数据库处于断开连接状态
   • AutoPrimaryAlone 配置参数设置成 No
   • 未确认的事务处理处于等待状态
                                     © 2008 IBM Corporation
查看HSB状态:admin command „hsb state‟;(续)

 HSB状态
  – SECONDARY ACTIVE:
   •   HSB数据库处于正常连接状态
   •   数据库正在接收从主数据库传过来的事务日志数据
   •   这些事务被重做,以重现主数据库的事务数据
   •   这些事务会写入数据库的事务日志文件
   •   客户端能该数据库执行只读事务
   •   对端数据库一定是PRIMARY ACTIVE 状态
 – SECONDARY ALONE:
   •   HSB 数据库处于断开连接状态
   •   能接收只读事务
   •   通过在主数据库执行ADMIN COMMAND „HSB connect‟,数据库能主数据库建立连接
   •   如设置了[HotStandby] HSBEnabled=Yes,数据库启动后总是该状态




                                                 © 2008 IBM Corporation
手动切换HSB状态

 手动切换HSB状态:
  – PRIMARY ALONE: admin command 'hsb set primary alone';
  – SECONDARY ALONE: admin command 'hsb set secondary alone';
  – PRIMAYR ACTIVE: admin command 'hsb switch primary';
  – SECONDARY ACTIVE: admin command 'hsb switch secondary';
  – 注意:切换状态后需要执行commit work;




                                                                © 2008 IBM Corporation
注意事项




       © 2008 IBM Corporation
注意事项

 任何更新操作(事务)需要显式提交或回滚
  – Commit work;
  – Rollback work;
 尽量避免修改大量数据
 事务操作都是需要记录日志的,大事务可能引起内存开销过大
 用存储过程代替,小批量操作(如200行一提交)
 或用truncate table代替
 尽量避免复杂SQL查询
  – solidDB数据库更适合小事务、大并发的事务场景
  • 如:select username from radcheck where
     attribute = „abc‟ and username in
       (select username from radcheck group by username having count(*) > 2); 性能不
    理想
 – 用存储过程代替

                                                                     © 2008 IBM Corporation
注意事项 (续)

 备份操作注意事项
  – 如果backup_directory目录不存在,备份不成功
  – 尽量不要在数据库文件所在的物理磁盘备份数据库
  • 导致备份时间过长
  • 无法避免磁盘损坏引起的故障
 – 数据库在线时,copy数据文件不等于备份数据库
  • copy方式导致复制出来的文件不可用
 建议使用admin command ‘throwout uid’;终止长时间运行的事务,特别
  是“写”事务
  – 如果想终止只读操作,Ctrl+C也是可行的
  – 如果想终止写操作,请使用admin command „throwout uid‟;将用户踢出
    去,并回滚事务




                                           © 2008 IBM Corporation

Ibm solid db_基础

  • 1.
    IBM Software Group IBMsolidDB 基础 © 2008 IBM Corporation
  • 2.
    主要内容  solidDB 简介 solidDB 安装、配置和工具  solidDB 常用语法与命令  操作注意事项 © 2008 IBM Corporation
  • 3.
    solidDB 简介 © 2008 IBM Corporation
  • 4.
    solidDB 架构 Client applications  Client/Server: App App App – 网络通信 ODBC SA JDBC – 内嵌 Client RPC  SQL Engine: TCP/IP In-process applications – 解析器 App App Server RPC – (基于成本)优化器 SQL engine To solidDB In-memory Adv Repl.  Database Engine: other db engine Disk- based nodes In-memory db engine – 内存表 tables To the HSB Disk storage manager standby – 磁盘表 node – 内存管理和资源开销 Disk database Full checkpoint Full log © 2008 IBM Corporation
  • 5.
    IBM solidDB 内存数据库 solidDB有两种数据库引擎,支持两类 型的表: – 内存表 (MME) IBM solidDB • 所有数据存储在内存中 • 为内存存取优化的索引结构 SQL engine • 持久化或非持久化的数据 In-memory Disk- db engine based db engine – 磁盘表 (DBE) M- tables Cache • 数据主要存储在磁盘中 Disk storage manager • 活动数据被复制到内存(Cache) • 为磁盘存取优化的索引结构 事务日志 • 持久化数据 磁盘数据库 完全 checkpoint  查询和事务可以同时跨越两种类型的 表。表类型对应用和用户透明 © 2008 IBM Corporation
  • 6.
    solidDB 支持的表类型 表类型 特点 创建方式 持久型内 内存表默认类型,支持Log和Checkpoint持久化机制; CREATE TABLE tab_name (col_1 存表 INT, xxxx) STORE MEMORY 支持行级锁、表级锁和事务隔离级别 或DefaultStoreIsMemory=Yes 全局临时 所以数据存储在内存中,没有磁盘映象;不支持Log和 CREATE TRANSIENT TABLE 内存表 Checkpoint持久化机制; tab_name (col_1 INT, xxxx) 支持行级锁、表级锁和事务隔离级别;全局可见 数据不复制到HSB的备节点; 局部临时 所以数据存储在内存中,没有有磁盘映象;不支持Log和 CREATE TEMPORARY TABLE 内存表 Checkpoint持久化机制; tab_name (col_1 INT, xxxx) 不支持行级锁,会话级可见; 数据不复制到HSB的备节点 持久型磁 数据存储在磁盘中,支持Log和Checkpoint持久化机制; CREATE TABLE tab_name (col_1 盘表 INT, xxxx) STORE DISK 支持行级锁、表级锁和事务隔离级别; 或DefaultStoreIsMemory=No © 2008 IBM Corporation
  • 7.
    编程接口  solid JDBCDriver: App App App – 用于Java应用程序 JDBC ODBC SA – 完全兼容JDBC 标准 Client RPC – JDBC2.0 TCP/IP  solid ODBC Driver: In-process application Server RPC – 比JDBC快30%-50% App (C/Java/SA) – solidDB最常用的驱动 SQL engine solidDB – ODBC3.51 In-memory Flow db engine Disk-  solid API (SA): In-memory based db engine tables – 比ODBC快30%-50% HSB Disk storage manager – 单表访问  solidDB Linked Libraries: – JDBC,ODBC 或 SA © 2008 IBM Corporation
  • 8.
    数据库引擎 - 事务管理 事务: Committing a Transaction – 作为一个整体,一组操作被提交 (保存)或回滚(取消) TRANSACTION – 可能同时包含内存表和磁盘表  提交事务: – 变化数据被持久化 BufferPool – 变化数据对其他用户变成可见  事务日志: – 存储已提交的事务 SOLnnnnn.LOG solid.db – 保证数据库在异常关闭情况下的 事务一致性 © 2008 IBM Corporation
  • 9.
    solidDB HSB 双机架构 热备份复制 Application Connected Connected Server1 Txn HSB Server2 Txn Log Log Active Standby Active © 2008 IBM Corporation
  • 10.
    solidDB 安装、配置和工具 © 2008 IBM Corporation
  • 11.
    安装solidDB  Windows平台上安装 – 运行安装程序 (.exe) ,根据界面提示执行安装  Linux/Uinx平台上安装 – 无需专有的用户组和用户 – solidDB6.1:运行安装程序(.bin),安装程序在当前路径下自动完成 – solidDB6.3:运行./solidXXX.bin -i console,根据提示执行安装 • 需要JER  升级补丁 – 解压后移动以下文件到solidDB的安装路径 *.lib --> SOLIDDIRlib *.h --> SOLIDDIRinclude *.dll *.so --> SOLIDDIRbin sol* --> SOLIDDIRbin SolidDriver2.0.jar --> dbdirjdbc © 2008 IBM Corporation
  • 12.
    配置与操作 – 定义数据库工作目录 solidDB 数据库工作目录,是一个数据库实例的根目录  数据库工作目录必须包含: – solid.lic (solidDB许可证文件) • solid.lic不合法,导致数据库无法启动 – solid.ini (solidDB配置文件) • 未提供solid.ini,数据库将全部使用默认参数  指定工作目录的方法 – -c 参数 – eg: solid –c /usr/local/soliddb-6.1/eval_kit/standalone  工作目录包括: – solmsg.out (solid消息文件),soltrace.out… – (不一定包含数据库文件) © 2008 IBM Corporation
  • 13.
    配置 solidDB  solid.ini 文件 solid.ini – 存放在数据库的工作目录 [IndexFile] FileSpec_1=c:soliddbsolid.db 2GB  定义solidDB最常用的参数 CacheSize = 32M – 数据文件、日志文件和排序文件的路径 [Logging] LogEnabled = Yes – 通信参数设置 LogDir =c:datalogs DurabilityLevel = 1 – 内存的使用 [General] – 定时命令 BackupDirectory=e:solbackup [Com]  典型地,很小部分参数需要设置 Listen=tcp 1313, shm solid – 缺省值适用大多数场合 [Sorter] TmpDir_1 = c:temp [Srv] At=20:30 makecp, 21:00 backup, sun 23:00 shutdown 13 © 2008 IBM Corporation
  • 14.
    配置 – 在solid.ini设置参数 由方括号定义的命名进行参数分类: – [Com], [General], [Index File], [Logging], [Srv],...  参数句法: – <param_name>=<param_value>  允许空格  不区分大小写  分号后面的内容是注释 – ; This is a comment – <param_name>=<param_value> ; This is also a comment  在solmsg.out参考告警信息 © 2008 IBM Corporation
  • 15.
    基本操作 – 启动solidDB 创建并启动数据库命令 solid –c workingdir -U username –P password –C catalog eg: solid –c /usr/local/soliddb-6.1/eval_kit/standalone –U radius –P radius solid –c dir  启动数据库 检查solid.lic – 如果数据库已经存在,启动数据库 的命令为: 检查solid.ini solid –c workingdir 数据库文件 否 是否存在 创建数据库 装载内存表 是 自动恢复 启动数据库 打开数据库 © 2008 IBM Corporation
  • 16.
    基本操作 – 关闭solidDB 正确关闭数据库的方法 – 在管理工具(solcon, solsql)执行 关闭命令 ADMIN COMMAND ‘close'; – 关闭数据库服务器图标(Windows)  推荐步骤 ADMIN COMMAND ‘throwout all'; – 阻止建立新连接:close ADMIN COMMAND 'shutdown'; – 退出当前所有用户:throwout all ADMIN COMMAND 'shutdown force'; – 停止 solidDB进程:shutdown  异常关闭不会破坏数据库,但会导致 下次启动时间更长 – 异常掉电 – 系统异常宕机 © 2008 IBM Corporation
  • 17.
    数据管理工具  solidDB提供以下工具 – solidDB Remote Control - solcon – solidDB SQL Editor - solsql – solidDB Data Dictionary - soldd – solidDB Export - solexp – solidDB SpeedLoader – solload  使用 - h 查看工具的选项 © 2008 IBM Corporation
  • 18.
    工具:Solid SQL Editor- solsql  功能 – 执行所有管理命令:ADMIN COMMAND „com_name‟; – SQL 语句、SQL 脚本  用法 – 登录数据库:solsql " tcp 192.168.1.100 1315" username password – 运行脚本:solsql "tcp 1315" username password test.sql – 外部执行:solsql -e"ADMIN COMMAND status" "tcp 1315" username password – 注意,在solsql中要执行commit work;显示提交事务  solsql 选项 – -h 查看所有选项 – -t 显示执行时间 – -a 自动提交 © 2008 IBM Corporation
  • 19.
    工具:Solid Remote Control- solcon  功能 – 执行所有管理命令 – 等同于 ADMIN COMMANDs  权限要求 – SYS_ADMIN_ROLE 或 SYS_CONSOLE_ROLE  用法 – solcon " tcp 192.168.1.2 1315" username password – solcon -e"status" "tcp 1315" dba dba  solcon选项 – solcon -h © 2008 IBM Corporation
  • 20.
    工具: solexp数据导出工具  表数据导出 – solexp [options] [listen-name] <username> <password> <table|*> 整表导出:solexp "tcp 1315" dba dba FOO 条件导出:solexp -e“select id, name from FOO where id > 100” "tcp 1315" dba dba FOO  导出结果: – 当前目录下生成两个文件: • 控制文件*.ctr,如DBA_FOO.ctr。(导入数据时需要使用控制文件) • 数据文件*.dat,如DBA_FOO.dat。(实际数据)  常用选项: – solexp -h 帮助信息 – solexp -e 导出时执行-e后面的语句 © 2008 IBM Corporation
  • 21.
    工具: solload数据导入工具  数据导入 – solload [options] [listen-name] <username> <password> <control-file-name> solload -b 2000 -t “tcp 1315” dba dba DBA_FOO.ctr  常用选项 – -h 帮助信息 LOAD DATA INFILE 'DBA_FOO.dat' – b<records> 批量提交的行数,默认为1 INTO TABLE "DBA"."FOO" FIELDS TERMINATED BY ',' – -x errors:<count> 允许错误次数,默认为50 OPTIONALLY ENCLOSED BY "'" – -x skip:<records> 跳过行数 ( "ID" INTEGER NULLIF NULL, – -t 结束后打印时间 "NAME" CHAR(30) NULLIF NULL )  注意事项 DBA_FOO.ctr – 一定要使用-b选项,建议2000行提交一次 – 数据导入时检查数据唯一性和合法性 • 必要时,增大“允许错误”次数 © 2008 IBM Corporation
  • 22.
    工具: soldd 数据字典工具 数据字典 – 将数据库的模式导成文本 • 表、视图、存储过程、序列 – soldd [options] [listen-name] <username> <password> • soldd “tcp 1315” dba dba  结果 – 在当前目录下生成soldd.sql,改文件包含表、索引、存储过程、触发 器等的创建语句 © 2008 IBM Corporation
  • 23.
    solidDB常用语法和命令 © 2008 IBM Corporation
  • 24.
    基本操作 – solsql 在solsql执行 – 运行SQL语句,SQL脚本 – 允许管理命令:admin command „cmd_name‟; – 语句以分号结束 – 需要显示提交事务或回滚事务 • Commit work; • Rollback work; © 2008 IBM Corporation
  • 25.
    数据库消息文件 - solmsg.out ------------------------------------------------------------ 2009-05-3012:35:14 配置参 Version: 06.10.0014 数错误 Operating system: Windows XP MT Warning: Unrecognized entry in inifile: Srv.TraceFileSize Warning: 1 unrecognized, illegal or deprecated entry in 'solid.ini'. 许可证 IBM solidDB - v.06.10.0014 (Windows XP MT) 和配置 (c) Solid Information Technology Ltd. 1993, 2008 文件 Using license file C:3ProgramsolidDB6.1eval_kitstandalonesolid.lic IBM solidDB 6.1 Using configuration file C:3ProgramsolidDB6.1eval_kitstandalonesolid.ini 回滚 Finished loading IMDB. Pages: 9 (非正 Starting roll-forward recovery, please wait ... 常关闭) Recovery successfully completed 2009-05-30 12:35:16 IBM solidDB - Standalone started at 2009-05-30 12:35:16 2009-05-30 12:35:16 Listening of 'TCP/IP 2315' started. 2009-05-30 12:35:16 Database started. 2009-05-30 12:35:19 User 'DBA' connected, user id 5, machine id huangqs (127.0.0.1). 2009-05-30 13:11:28 User 'TCP 2315' tried to connect from huangqs (127.0.0.1) with an illegal username or password. 2009-05-30 13:11:39 User 'DBA' connected, user id 5, machine id huangqs (127.0.0.1). 2009-05-30 14:12:10 Checkpoint creation started 2009-05-30 14:12:11 Checkpoint creation completed © 2008 IBM Corporation
  • 26.
    监控和管理solidDB  最常用的管理命令 – 数据库状态: admin command 'status'; – 内存开销: admin command 'memory'; – 磁盘空间: admin command 'info logsize dbsize dbfreesize dbconfigsize '; – 当前用户列表: admin command 'userlist'; – 当前用户详细信息: admin command 'userlist -l'; – 指定用户详细信息: admin command 'userlist -l uid'; – 断开指定的用户: admin command 'throwout [uid|all]'; – 运行时间最长的SQL:admin command 'sqllist [top 1..20]„ – 状态报告:admin command 'report <file_name>'; – 运行跟踪:admin command 'monitor on/off [user {username | uid}]'; – 详细状态定时跟踪: • admin command 'perfmon diff start filename interval '; • admin command 'perfmon stop'; © 2008 IBM Corporation
  • 27.
    监控和管理solidDB (续)  最常用的管理命令 – 查看配置参数: • admin command 'parameter'; • admin command 'parameter section_name'; • admin command „parameter section_name.para_name'; – 查看参数描述:admin command 'describe parameter section_name.para_name' – 修改参数: admin command 'parameter section_name.para_name=new_value '; – 手动备份: admin command 'backup [-s] [backup directory]'; – 查看备份历史记录 : admin command 'backuplist'; – 查看备份状态 : admin command 'status backup'; – 修改“定时任务”参数配 : admin command 'par srv.at= time_para1 command1, time_para2 command2'; © 2008 IBM Corporation
  • 28.
    监控和管理solidDB (续)  HSB常用命令 – 查看HSB状态:admin command „hsb state'; – 手动切换HSB状态: • PRIMARY ALONE: admin command „hsb set primary alone'; • SECONDARY ALONE: admin command 'hsb set secondary alone'; • PRIMAYR ACTIVE: admin command 'hsb switch primary'; • SECONDARY ACTIVE: admin command 'hsb switch secondary'; © 2008 IBM Corporation
  • 29.
    数据库状态: admin command'status'; © 2008 IBM Corporation
  • 30.
    内存开销: admin command'memory';  Memory: – 数据库内存开销  Info imdbsize – 内存表内存开销 – 单位:KB © 2008 IBM Corporation
  • 31.
    磁盘空间:admin command 'infologsize dbsize dbfreesize dbconfigsize ';  磁盘开销 – 其中logsize和dbsize分别表示当前日志文件和数据文件的大小, dbfreesize是在当前的dbsize中还能重用的磁盘空间。 – logsize、dbsize和dbfreesize的单位是KB, dbconfigsize是MB。 – solidDB数据文件使用率计算公式是:数据文件使用率(%) = (dbsize- dbfreesize)/1024/dbconfigsize*100 © 2008 IBM Corporation
  • 32.
    当前用户列表: admin command'userlist';  当前用户列表: – 包括用户名、用户ID、连接类型、客户端机器ID、登录时间 – 可缩写为: admin command 'ul'; – 连接类型: • ODBC -- ODBC驱动,常用于C/C++程序 • Java – JDBC驱动,常用于Java程序 • SQL – solsql命令行连接 © 2008 IBM Corporation
  • 33.
    当前用户详细信息: admin command'userlist -l'; 指定用户详细信息: admin command 'userlist -l uid';  用户详细信息 – 包含用户相关的详细信息 – 该命令对数据库分析非常有帮助 – 缩写: • admin command 'ul -l uid'; © 2008 IBM Corporation
  • 34.
    断开指定的用户: admin command'throwout [uid|all]';  断开指定的用户 – „throwout all‟ 不断开 自身连接 – 断开连接后,正在运 行的事务被终止 • 常用于终止事务 © 2008 IBM Corporation
  • 35.
    运行时间最长的SQL:admin command 'sqllist[top 1..20]';  运行时间最长的SQL – 用于定位哪些SQL运行时间 最长 – 了解该SQL的状态 © 2008 IBM Corporation
  • 36.
    状态报告:admin command 'report<file_name>';  状态报告 – 报告数据库当前详细状态 • 数据库状态快照 – 默认在工作目录下生成文件 – 报告问题时,请附上状态报告文件 © 2008 IBM Corporation
  • 37.
    运行跟踪:admin command 'monitoron/off [user {username | uid}]';  跟踪数据库 – 打开数据库的Trace开关,用于监控数据库执行的具体操作。开关打开 后,在数据库工作目录生成soltrace.out文件。可以执行username或者 userid进行过滤跟踪。 – 注意:打开Trace开关将严重影响数据库的性能,该命令只在只在分析 定位问题时才使用,使用完成务必执行’monitor off’进行停止跟踪。 – 注意:跟踪完成后,需要执行‟monitor off‟停止跟踪 © 2008 IBM Corporation
  • 38.
    详细状态定时跟踪  详细状态定时跟踪: – 启动:admin command 'perfmon diff start filename interval'; eg: admin command 'pmon diff start pmon_1.txt 2000'; – 停止:admin command 'perfmon stop';  检查数据库负载: – admin command „pmon‟; (如下图) © 2008 IBM Corporation
  • 39.
    查看配置参数:admin command 'parameter'; 查看配置参数: – admin command 'parameter'; – admin command 'parameter section_name'; – admin command 'parameter section_name.para_name'; © 2008 IBM Corporation
  • 40.
    查看参数描述,修改参数  查看参数描述: – admin command 'describe parameter section_name.para_name';  修改参数: – admin command 'parameter section_name.para_name=new_value'; – 注意:请勿随意修改参数 © 2008 IBM Corporation
  • 41.
    手动备份:admin command 'backup[-s] [backup_directory]';  手动备份: – 如果已经配置[General]. BackupDirectory,则可以在solsql命令行执行 ADMIN COMMAND „backup [-s]„; – 如果未配置[General].BackupDirectory,或计划备份数据库到另一个路径,则可 以在solsql执行ADMIN COMMAND „backup [-s] backup_directory‟;, • 如 ADMIN COMMAND „backup -s /export/home/backupdata‟;。 – -s是可选项,如果使用-s选项,则备份命令需要等待备份完成后才返回。 – 注意:如果backup_directory目录不存在,备份不成功 – 注意:尽量不要在数据库文件所在的物理磁盘备份数据库 – 注意:数据库在线时,copy数据文件不等于备份数据库 • – copy方式导致复制出来的文件不可用 © 2008 IBM Corporation
  • 42.
    查看备份历史记录: admin command'backuplist'; 查看备份状态: admin command 'status backup';  查看备份状态: – admin command 'status backup'; • SUCCESS、ACTIVE、FAILED  查看备份历史记录: – admin command 'backuplist'; © 2008 IBM Corporation
  • 43.
    修改“定时任务”参数配  修改“定时任务”参数配 : – admin command „par srv.at= time_para1 command1, time_para2 command2‟; – 支持“定时”命令 • backup • throwout At = At_string • makecp At_string ::= timed_command [,timed_command ] • shutdown timed_command ::= [ day ] HH:MM argument • report day ::= sun | mon | tue | wed | thu | fri | sat • open • Close – 常用于定时备份(如下图) – 注意:修改“定时任务”参数配置立刻生效。请详细参考<Administrator Guide.pdf>的 [3.14Entering Timed Commands] © 2008 IBM Corporation
  • 44.
    查看HSB状态:admin command 'hsbstate';  HSB状态 – PRIMARY ACTIVE: • HSB数据库处于正常连接状态 • 数据库能处理读/写事务 • 数据库正在发送数据到备数据库 • 备数据库一定是SECONDARY ACTIVE 状态 – PRIMARY ALONE: • HSB 数据库处于断开连接状态 • 对端数据库可能是SECONDARY ALONE 状态 • 数据库能处理读/写事务 • 数据库以后可能需要发送事务到备数据库 – PRIMARY UNCERTAIN: • HSB 数据库处于断开连接状态 • AutoPrimaryAlone 配置参数设置成 No • 未确认的事务处理处于等待状态 © 2008 IBM Corporation
  • 45.
    查看HSB状态:admin command „hsbstate‟;(续)  HSB状态 – SECONDARY ACTIVE: • HSB数据库处于正常连接状态 • 数据库正在接收从主数据库传过来的事务日志数据 • 这些事务被重做,以重现主数据库的事务数据 • 这些事务会写入数据库的事务日志文件 • 客户端能该数据库执行只读事务 • 对端数据库一定是PRIMARY ACTIVE 状态 – SECONDARY ALONE: • HSB 数据库处于断开连接状态 • 能接收只读事务 • 通过在主数据库执行ADMIN COMMAND „HSB connect‟,数据库能主数据库建立连接 • 如设置了[HotStandby] HSBEnabled=Yes,数据库启动后总是该状态 © 2008 IBM Corporation
  • 46.
    手动切换HSB状态  手动切换HSB状态: – PRIMARY ALONE: admin command 'hsb set primary alone'; – SECONDARY ALONE: admin command 'hsb set secondary alone'; – PRIMAYR ACTIVE: admin command 'hsb switch primary'; – SECONDARY ACTIVE: admin command 'hsb switch secondary'; – 注意:切换状态后需要执行commit work; © 2008 IBM Corporation
  • 47.
    注意事项 © 2008 IBM Corporation
  • 48.
    注意事项  任何更新操作(事务)需要显式提交或回滚 – Commit work; – Rollback work;  尽量避免修改大量数据 事务操作都是需要记录日志的,大事务可能引起内存开销过大 用存储过程代替,小批量操作(如200行一提交) 或用truncate table代替  尽量避免复杂SQL查询 – solidDB数据库更适合小事务、大并发的事务场景 • 如:select username from radcheck where attribute = „abc‟ and username in (select username from radcheck group by username having count(*) > 2); 性能不 理想 – 用存储过程代替 © 2008 IBM Corporation
  • 49.
    注意事项 (续)  备份操作注意事项 – 如果backup_directory目录不存在,备份不成功 – 尽量不要在数据库文件所在的物理磁盘备份数据库 • 导致备份时间过长 • 无法避免磁盘损坏引起的故障 – 数据库在线时,copy数据文件不等于备份数据库 • copy方式导致复制出来的文件不可用  建议使用admin command ‘throwout uid’;终止长时间运行的事务,特别 是“写”事务 – 如果想终止只读操作,Ctrl+C也是可行的 – 如果想终止写操作,请使用admin command „throwout uid‟;将用户踢出 去,并回滚事务 © 2008 IBM Corporation