Ibm solid db_基础

1,463 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,463
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×