Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ibm solid db_基础

1,523 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Ibm solid db_基础

  1. 1. IBM Software GroupIBM solidDB 基础 © 2008 IBM Corporation
  2. 2. 主要内容 solidDB 简介 solidDB 安装、配置和工具 solidDB 常用语法与命令 操作注意事项 © 2008 IBM Corporation
  3. 3. solidDB 简介 © 2008 IBM Corporation
  4. 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. 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. 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. 7. 编程接口 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
  8. 8. 数据库引擎 - 事务管理 事务: Committing a Transaction – 作为一个整体,一组操作被提交 (保存)或回滚(取消) TRANSACTION – 可能同时包含内存表和磁盘表 提交事务: – 变化数据被持久化 BufferPool – 变化数据对其他用户变成可见 事务日志: – 存储已提交的事务 SOLnnnnn.LOG solid.db – 保证数据库在异常关闭情况下的 事务一致性 © 2008 IBM Corporation
  9. 9. solidDB HSB 双机架构 热备份复制 Application Connected Connected Server1 Txn HSB Server2 Txn Log Log Active Standby Active © 2008 IBM Corporation
  10. 10. solidDB 安装、配置和工具 © 2008 IBM Corporation
  11. 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. 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. 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 shutdown13 © 2008 IBM Corporation
  14. 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. 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. 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. 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. 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. 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. 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. 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. 22. 工具: soldd 数据字典工具 数据字典 – 将数据库的模式导成文本 • 表、视图、存储过程、序列 – soldd [options] [listen-name] <username> <password> • soldd “tcp 1315” dba dba 结果 – 在当前目录下生成soldd.sql,改文件包含表、索引、存储过程、触发 器等的创建语句 © 2008 IBM Corporation
  23. 23. solidDB常用语法和命令 © 2008 IBM Corporation
  24. 24. 基本操作 – solsql 在solsql执行 – 运行SQL语句,SQL脚本 – 允许管理命令:admin command „cmd_name‟; – 语句以分号结束 – 需要显示提交事务或回滚事务 • Commit work; • Rollback work; © 2008 IBM Corporation
  25. 25. 数据库消息文件 - solmsg.out------------------------------------------------------------2009-05-30 12:35:14 配置参Version: 06.10.0014 数错误Operating system: Windows XP MTWarning: Unrecognized entry in inifile: Srv.TraceFileSizeWarning: 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.licIBM solidDB 6.1Using configuration file C:3ProgramsolidDB6.1eval_kitstandalonesolid.ini 回滚Finished loading IMDB. Pages: 9 (非正Starting roll-forward recovery, please wait ... 常关闭)Recovery successfully completed2009-05-30 12:35:16 IBM solidDB - Standalone started at 2009-05-30 12:35:162009-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 illegalusername 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 started2009-05-30 14:12:11 Checkpoint creation completed © 2008 IBM Corporation
  26. 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. 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. 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. 29. 数据库状态: admin command status; © 2008 IBM Corporation
  30. 30. 内存开销: admin command memory; Memory: – 数据库内存开销 Info imdbsize – 内存表内存开销 – 单位:KB © 2008 IBM Corporation
  31. 31. 磁盘空间: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
  32. 32. 当前用户列表: admin command userlist; 当前用户列表: – 包括用户名、用户ID、连接类型、客户端机器ID、登录时间 – 可缩写为: admin command ul; – 连接类型: • ODBC -- ODBC驱动,常用于C/C++程序 • Java – JDBC驱动,常用于Java程序 • SQL – solsql命令行连接 © 2008 IBM Corporation
  33. 33. 当前用户详细信息: admin command userlist -l;指定用户详细信息: admin command userlist -l uid; 用户详细信息 – 包含用户相关的详细信息 – 该命令对数据库分析非常有帮助 – 缩写: • admin command ul -l uid; © 2008 IBM Corporation
  34. 34. 断开指定的用户: admin command throwout [uid|all]; 断开指定的用户 – „throwout all‟ 不断开 自身连接 – 断开连接后,正在运 行的事务被终止 • 常用于终止事务 © 2008 IBM Corporation
  35. 35. 运行时间最长的SQL:admin command sqllist [top 1..20]; 运行时间最长的SQL – 用于定位哪些SQL运行时间 最长 – 了解该SQL的状态 © 2008 IBM Corporation
  36. 36. 状态报告:admin command report <file_name>; 状态报告 – 报告数据库当前详细状态 • 数据库状态快照 – 默认在工作目录下生成文件 – 报告问题时,请附上状态报告文件 © 2008 IBM Corporation
  37. 37. 运行跟踪:admin command monitor on/off [user {username | uid}]; 跟踪数据库 – 打开数据库的Trace开关,用于监控数据库执行的具体操作。开关打开 后,在数据库工作目录生成soltrace.out文件。可以执行username或者 userid进行过滤跟踪。 – 注意:打开Trace开关将严重影响数据库的性能,该命令只在只在分析 定位问题时才使用,使用完成务必执行’monitor off’进行停止跟踪。 – 注意:跟踪完成后,需要执行‟monitor off‟停止跟踪 © 2008 IBM Corporation
  38. 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. 39. 查看配置参数:admin command parameter; 查看配置参数: – admin command parameter; – admin command parameter section_name; – admin command parameter section_name.para_name; © 2008 IBM Corporation
  40. 40. 查看参数描述,修改参数 查看参数描述: – admin command describe parameter section_name.para_name; 修改参数: – admin command parameter section_name.para_name=new_value; – 注意:请勿随意修改参数 © 2008 IBM Corporation
  41. 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. 42. 查看备份历史记录: admin command backuplist;查看备份状态: admin command status backup; 查看备份状态: – admin command status backup; • SUCCESS、ACTIVE、FAILED 查看备份历史记录: – admin command backuplist; © 2008 IBM Corporation
  43. 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. 44. 查看HSB状态:admin command hsb state; HSB状态 – PRIMARY ACTIVE: • HSB数据库处于正常连接状态 • 数据库能处理读/写事务 • 数据库正在发送数据到备数据库 • 备数据库一定是SECONDARY ACTIVE 状态 – PRIMARY ALONE: • HSB 数据库处于断开连接状态 • 对端数据库可能是SECONDARY ALONE 状态 • 数据库能处理读/写事务 • 数据库以后可能需要发送事务到备数据库 – PRIMARY UNCERTAIN: • HSB 数据库处于断开连接状态 • AutoPrimaryAlone 配置参数设置成 No • 未确认的事务处理处于等待状态 © 2008 IBM Corporation
  45. 45. 查看HSB状态:admin command „hsb state‟;(续) HSB状态 – SECONDARY ACTIVE: • HSB数据库处于正常连接状态 • 数据库正在接收从主数据库传过来的事务日志数据 • 这些事务被重做,以重现主数据库的事务数据 • 这些事务会写入数据库的事务日志文件 • 客户端能该数据库执行只读事务 • 对端数据库一定是PRIMARY ACTIVE 状态 – SECONDARY ALONE: • HSB 数据库处于断开连接状态 • 能接收只读事务 • 通过在主数据库执行ADMIN COMMAND „HSB connect‟,数据库能主数据库建立连接 • 如设置了[HotStandby] HSBEnabled=Yes,数据库启动后总是该状态 © 2008 IBM Corporation
  46. 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. 47. 注意事项 © 2008 IBM Corporation
  48. 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. 49. 注意事项 (续) 备份操作注意事项 – 如果backup_directory目录不存在,备份不成功 – 尽量不要在数据库文件所在的物理磁盘备份数据库 • 导致备份时间过长 • 无法避免磁盘损坏引起的故障 – 数据库在线时,copy数据文件不等于备份数据库 • copy方式导致复制出来的文件不可用 建议使用admin command ‘throwout uid’;终止长时间运行的事务,特别 是“写”事务 – 如果想终止只读操作,Ctrl+C也是可行的 – 如果想终止写操作,请使用admin command „throwout uid‟;将用户踢出 去,并回滚事务 © 2008 IBM Corporation

×