Ibm solid db_基础

49
© 2008 IBM Corporation IBM Software Group IBM solidDB 基础

Transcript of Ibm solid db_基础

Page 1: Ibm solid db_基础

© 2008 IBM Corporation

IBM Software Group

IBM solidDB 基础

Page 2: Ibm solid db_基础

© 2008 IBM Corporation

主要内容

solidDB 简介

solidDB 安装、配置和工具

solidDB 常用语法与命令

操作注意事项

Page 3: Ibm solid db_基础

© 2008 IBM Corporation

solidDB 简介

Page 4: Ibm solid db_基础

© 2008 IBM Corporation

so

lid

DB

Client applications

Client RPC

TCP/IP

Server RPCApp

In-process applications

App

ODBC SA JDBC

App AppApp

In-memory tables

In-memorydb engine Disk-

baseddb engine

Disk database

Full checkpoint

Full log

Disk storage manager

Ad

vR

ep

l.

To

other

nodes

HS

B To the

standby

node

SQL engine

solidDB 架构

Client/Server:

– 网络通信

– 内嵌

SQL Engine:

– 解析器

– (基于成本)优化器

Database Engine:

– 内存表

– 磁盘表

– 内存管理和资源开销

Page 5: Ibm solid db_基础

© 2008 IBM Corporation

IBM solidDB 内存数据库

solidDB有两种数据库引擎,支持两类型的表:

– 内存表 (MME)

• 所有数据存储在内存中

• 为内存存取优化的索引结构

• 持久化或非持久化的数据

– 磁盘表 (DBE)

• 数据主要存储在磁盘中

• 活动数据被复制到内存(Cache)

• 为磁盘存取优化的索引结构

• 持久化数据

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

IBM solidDB

M-tables

SQL engine

In-memorydb engine

Disk storage manager

Disk-based

db engine

Cache

磁盘数据库完全 checkpoint

事务日志

Page 6: Ibm solid db_基础

© 2008 IBM Corporation

solidDB 支持的表类型

表类型 特点 创建方式

持久型内存表

内存表默认类型,支持Log和Checkpoint持久化机制;

支持行级锁、表级锁和事务隔离级别

CREATE TABLE tab_name (col_1

INT, xxxx) STORE MEMORY

或DefaultStoreIsMemory=Yes

全局临时内存表

所以数据存储在内存中,没有磁盘映象;不支持Log和Checkpoint持久化机制;

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

数据不复制到HSB的备节点;

CREATE TRANSIENT TABLE

tab_name (col_1 INT, xxxx)

局部临时内存表

所以数据存储在内存中,没有有磁盘映象;不支持Log和Checkpoint持久化机制;

不支持行级锁,会话级可见;

数据不复制到HSB的备节点

CREATE TEMPORARY TABLE

tab_name (col_1 INT, xxxx)

持久型磁盘表

数据存储在磁盘中,支持Log和Checkpoint持久化机制;

支持行级锁、表级锁和事务隔离级别;

CREATE TABLE tab_name (col_1

INT, xxxx) STORE DISK

或DefaultStoreIsMemory=No

Page 7: Ibm solid db_基础

© 2008 IBM Corporation

ODBC

App

SA

App

Client RPC

TCP/IP

so

lid

DB

In-memory tables

SQL engine

Server RPC

In-memorydb engine

Disk storage manager

Flo

wDisk-based

db engine

HS

B

JDBC

App

App (C/Java/SA)

In-process application

编程接口

solid JDBC Driver:

– 用于Java应用程序

– 完全兼容JDBC 标准

– JDBC2.0

solid ODBC Driver:

– 比JDBC快30%-50%

– solidDB最常用的驱动– ODBC3.51

solid API (SA):

– 比ODBC快30%-50%

– 单表访问

solidDB Linked Libraries:

– JDBC,ODBC 或 SA

Page 8: Ibm solid db_基础

© 2008 IBM Corporation

TRANSACTION

Committing a Transaction

SOLnnnnn.LOG

BufferPool

solid.db

数据库引擎 - 事务管理

事务:

– 作为一个整体,一组操作被提交(保存)或回滚(取消)

– 可能同时包含内存表和磁盘表

提交事务:

– 变化数据被持久化

– 变化数据对其他用户变成可见

事务日志:

– 存储已提交的事务

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

Page 9: Ibm solid db_基础

© 2008 IBM Corporation

Server2

Standby

Txn

Log

Application

Connected

HSBServer1

Active

Txn

Log

热备份复制

solidDB HSB 双机架构

Server2

Active

Connected

Page 10: Ibm solid db_基础

© 2008 IBM Corporation

solidDB 安装、配置和工具

Page 11: Ibm solid db_基础

© 2008 IBM Corporation

安装solidDB

Windows平台上安装

– 运行安装程序 (.exe) ,根据界面提示执行安装

Linux/Uinx平台上安装

– 无需专有的用户组和用户

– solidDB6.1:运行安装程序(.bin),安装程序在当前路径下自动完成

– solidDB6.3:运行./solidXXX.bin -i console,根据提示执行安装• 需要JER

升级补丁– 解压后移动以下文件到solidDB的安装路径

*.lib --> SOLIDDIR\lib

*.h --> SOLIDDIR\include

*.dll *.so --> SOLIDDIR\bin

sol* --> SOLIDDIR\bin

SolidDriver2.0.jar --> dbdir\jdbc

Page 12: Ibm solid db_基础

© 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…

– (不一定包含数据库文件)

Page 13: Ibm solid db_基础

© 2008 IBM Corporation13

配置 solidDB

solid.ini 文件

– 存放在数据库的工作目录

定义solidDB最常用的参数

– 数据文件、日志文件和排序文件的路径

– 通信参数设置

– 内存的使用

– 定时命令

典型地,很小部分参数需要设置

– 缺省值适用大多数场合

solid.ini

[IndexFile]

FileSpec_1=c:\solid\db\solid.db 2GB

CacheSize = 32M

[Logging]LogEnabled = YesLogDir =c:\data\logsDurabilityLevel = 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

Page 14: Ibm solid db_基础

© 2008 IBM Corporation

由方括号定义的命名进行参数分类:

– [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参考告警信息

配置 – 在solid.ini设置参数

Page 15: Ibm solid db_基础

© 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 radiussolid –c dir

检查solid.lic

检查solid.ini

数据库文件是否存在

启动数据库

创建数据库

装载内存表

自动恢复

打开数据库

启动数据库

– 如果数据库已经存在,启动数据库的命令为:

solid –c workingdir

Page 16: Ibm solid db_基础

© 2008 IBM Corporation

基本操作 – 关闭solidDB

正确关闭数据库的方法

– 在管理工具(solcon, solsql)执行关闭命令

– 关闭数据库服务器图标(Windows)

推荐步骤

– 阻止建立新连接:close

– 退出当前所有用户:throwout all

– 停止 solidDB进程:shutdown

异常关闭不会破坏数据库,但会导致下次启动时间更长

– 异常掉电

– 系统异常宕机

ADMIN COMMAND ‘close';

ADMIN COMMAND ‘throwout all';

ADMIN COMMAND 'shutdown';

ADMIN COMMAND 'shutdown force';

Page 17: Ibm solid db_基础

© 2008 IBM Corporation

数据管理工具

solidDB提供以下工具

– solidDB Remote Control - solcon

– solidDB SQL Editor - solsql

– solidDB Data Dictionary - soldd

– solidDB Export - solexp

– solidDB SpeedLoader – solload

使用 - h 查看工具的选项

Page 18: Ibm solid db_基础

© 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 自动提交

Page 19: Ibm solid db_基础

© 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

Page 20: Ibm solid db_基础

© 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后面的语句

Page 21: Ibm solid db_基础

© 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 帮助信息

– b<records> 批量提交的行数,默认为1

– -x errors:<count> 允许错误次数,默认为50

– -x skip:<records> 跳过行数

– -t 结束后打印时间

注意事项

– 一定要使用-b选项,建议2000行提交一次

– 数据导入时检查数据唯一性和合法性

• 必要时,增大“允许错误”次数

LOAD DATA

INFILE 'DBA_FOO.dat'

INTO TABLE "DBA"."FOO"

FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY "'"

(

"ID" INTEGER NULLIF NULL,

"NAME" CHAR(30) NULLIF NULL

)

DBA_FOO.ctr

Page 22: Ibm solid db_基础

© 2008 IBM Corporation

工具: soldd 数据字典工具

数据字典

– 将数据库的模式导成文本

• 表、视图、存储过程、序列

– soldd [options] [listen-name] <username> <password>

• soldd “tcp 1315” dba dba

结果

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

Page 23: Ibm solid db_基础

© 2008 IBM Corporation

solidDB常用语法和命令

Page 24: Ibm solid db_基础

© 2008 IBM Corporation

基本操作 – solsql

在solsql执行

– 运行SQL语句,SQL脚本

– 允许管理命令:admin command „cmd_name‟;

– 语句以分号结束

– 需要显示提交事务或回滚事务

• Commit work;

• Rollback work;

Page 25: Ibm solid db_基础

© 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:\3Program\solidDB6.1\eval_kit\standalone\solid.lic

IBM solidDB 6.1

Using configuration file C:\3Program\solidDB6.1\eval_kit\standalone\solid.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

配置参数错误

许可证和配置文件

回滚(非正常关闭)

Page 26: Ibm solid db_基础

© 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';

Page 27: Ibm solid db_基础

© 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';

Page 28: Ibm solid db_基础

© 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';

Page 29: Ibm solid db_基础

© 2008 IBM Corporation

数据库状态: admin command 'status';

Page 30: Ibm solid db_基础

© 2008 IBM Corporation

内存开销: admin command 'memory';

Memory:

– 数据库内存开销

Info imdbsize

– 内存表内存开销

– 单位:KB

Page 31: Ibm solid db_基础

© 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

Page 32: Ibm solid db_基础

© 2008 IBM Corporation

当前用户列表: admin command 'userlist';

当前用户列表:

– 包括用户名、用户ID、连接类型、客户端机器ID、登录时间

– 可缩写为: admin command 'ul';

– 连接类型:

• ODBC -- ODBC驱动,常用于C/C++程序

• Java – JDBC驱动,常用于Java程序

• SQL – solsql命令行连接

Page 33: Ibm solid db_基础

© 2008 IBM Corporation

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

用户详细信息

– 包含用户相关的详细信息

– 该命令对数据库分析非常有帮助

– 缩写:

• admin command 'ul -l uid';

Page 34: Ibm solid db_基础

© 2008 IBM Corporation

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

断开指定的用户

– „throwout all‟ 不断开自身连接

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

• 常用于终止事务

Page 35: Ibm solid db_基础

© 2008 IBM Corporation

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

运行时间最长的SQL

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

– 了解该SQL的状态

Page 36: Ibm solid db_基础

© 2008 IBM Corporation

状态报告:admin command 'report <file_name>';

状态报告

– 报告数据库当前详细状态

• 数据库状态快照

– 默认在工作目录下生成文件

– 报告问题时,请附上状态报告文件

Page 37: Ibm solid db_基础

© 2008 IBM Corporation

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

跟踪数据库

– 打开数据库的Trace开关,用于监控数据库执行的具体操作。开关打开后,在数据库工作目录生成soltrace.out文件。可以执行username或者userid进行过滤跟踪。

– 注意:打开Trace开关将严重影响数据库的性能,该命令只在只在分析定位问题时才使用,使用完成务必执行’monitor off’进行停止跟踪。

– 注意:跟踪完成后,需要执行‟monitor off‟停止跟踪

Page 38: Ibm solid db_基础

© 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‟; (如下图)

Page 39: Ibm solid db_基础

© 2008 IBM Corporation

查看配置参数:admin command 'parameter';

查看配置参数:

– admin command 'parameter';

– admin command 'parameter section_name';

– admin command 'parameter section_name.para_name';

Page 40: Ibm solid db_基础

© 2008 IBM Corporation

查看参数描述,修改参数

查看参数描述:

– admin command 'describe parameter section_name.para_name';

修改参数:

– admin command 'parameter section_name.para_name=new_value';

– 注意:请勿随意修改参数

Page 41: Ibm solid db_基础

© 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方式导致复制出来的文件不可用

Page 42: Ibm solid db_基础

© 2008 IBM Corporation

查看备份历史记录: admin command 'backuplist';查看备份状态: admin command 'status backup';

查看备份状态:– admin command 'status backup';

• SUCCESS、ACTIVE、FAILED

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

Page 43: Ibm solid db_基础

© 2008 IBM Corporation

修改“定时任务”参数配

修改“定时任务”参数配 :– admin command „par srv.at= time_para1 command1, time_para2 command2‟;

– 支持“定时”命令• backup

• throwout

• makecp

• shutdown

• report

• open

• Close

– 常用于定时备份(如下图)– 注意:修改“定时任务”参数配置立刻生效。请详细参考<Administrator Guide.pdf>的

[3.14Entering Timed Commands]

At = At_string

At_string ::= timed_command [,timed_command ]

timed_command ::= [ day ] HH:MM argument

day ::= sun | mon | tue | wed | thu | fri | sat

Page 44: Ibm solid db_基础

© 2008 IBM Corporation

查看HSB状态:admin command 'hsb state';

HSB状态

– PRIMARY ACTIVE:

• HSB数据库处于正常连接状态

• 数据库能处理读/写事务

• 数据库正在发送数据到备数据库

• 备数据库一定是SECONDARY ACTIVE 状态

– PRIMARY ALONE:

• HSB 数据库处于断开连接状态

• 对端数据库可能是SECONDARY ALONE 状态

• 数据库能处理读/写事务

• 数据库以后可能需要发送事务到备数据库

– PRIMARY UNCERTAIN:

• HSB 数据库处于断开连接状态

• AutoPrimaryAlone 配置参数设置成 No

• 未确认的事务处理处于等待状态

Page 45: Ibm solid db_基础

© 2008 IBM Corporation

查看HSB状态:admin command „hsb state‟;(续)

HSB状态

– SECONDARY ACTIVE:

• HSB数据库处于正常连接状态

• 数据库正在接收从主数据库传过来的事务日志数据

• 这些事务被重做,以重现主数据库的事务数据

• 这些事务会写入数据库的事务日志文件

• 客户端能该数据库执行只读事务

• 对端数据库一定是PRIMARY ACTIVE 状态

– SECONDARY ALONE:

• HSB 数据库处于断开连接状态

• 能接收只读事务

• 通过在主数据库执行ADMIN COMMAND „HSB connect‟,数据库能主数据库建立连接

• 如设置了[HotStandby] HSBEnabled=Yes,数据库启动后总是该状态

Page 46: Ibm solid db_基础

© 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;

Page 47: Ibm solid db_基础

© 2008 IBM Corporation

注意事项

Page 48: Ibm solid db_基础

© 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); 性能不理想

– 用存储过程代替

Page 49: Ibm solid db_基础

© 2008 IBM Corporation

注意事项 (续)

备份操作注意事项

– 如果backup_directory目录不存在,备份不成功

– 尽量不要在数据库文件所在的物理磁盘备份数据库

• 导致备份时间过长

• 无法避免磁盘损坏引起的故障

– 数据库在线时,copy数据文件不等于备份数据库

• copy方式导致复制出来的文件不可用

建议使用admin command ‘throwout uid’;终止长时间运行的事务,特别是“写”事务

– 如果想终止只读操作,Ctrl+C也是可行的

– 如果想终止写操作,请使用admin command „throwout uid‟;将用户踢出去,并回滚事务