db2存储库
放在裸设备上I/O快,性能好,但是扩展性不好,浪费资源
放在文件系统上缺点就是比裸设备慢
自己抉择,不差钱就裸设备,预留足够的空间
‘贰’ 请问如何给DB2数据库的存储过程中 where 的in 条件传参数
create
or
replace
procere
test(in
in_where
varchar(100))
--创建一个
存储过程
test,并可以传入字符串作为参数
declare
v_sql
varchar(512);
set
v_sql
=
'
delete
from
table1
where
field1
in
('
concat
in_where
concat
')
'
;
--
这里是把传进来的where语句拼起来
execute
immediate
v_sql;
--这里是把语句进行执行
------
---类似以上这样的存储过程,使用以下的放在进行执行即可:call
test(
'
''001'',''002''
')
;
--内容中的一个‘
需要使用
’‘
进行
转义
‘叁’ 如何在DB2中执行存储过程
1、db2
create
database
数据库名
<--
创建数据库
2、db2
connect
to
数据库名
user
用户名
using
用户密码
<--
连接数据库
3、db2
-tvf
otpdb_v3_db2.sql
<--
为新建数据库建立表结构
4、db2
-td@
-f
存储过程文件绝对路径
<--
导入存储过程,无错误会提示成功
4、调用存储过程:
Windows
下:db2
call
存储过程名(参数1,参数2)
AIX
下:db2
<--
要先进入DB2,方可调用存储过程或执行SQL语句
db2=>call
存储过程名(参数1,参数2)
5、验证插入数据是否成功
Windows
下:db2
select
count(*)
from
FTOTP_USERINFO
AIX
下:db2
<--
要先进入DB2,方可调用存储过程或执行SQL语句
db2=>select
count(*)
from
FTOTP_USERINFO
Windows
下:db2
select
count(*)
from
FTOTP_TOKENINFO
AIX
下:db2
<--
要先进入DB2,方可调用存储过程或执行SQL语句
db2=>select
count(*)
from
FTOTP_TOKENINFO
6、db2
SELECT
TOKEN,
PUBKEY
FROM
FTOTP_TOKENINFO
FETCH
FIRST
10000
ROWS
ONLY
>
要保存文件的绝对全路径
<--
从
DB2
中导出前一万条记录
windows
-
e.g.
db2
SELECT
TOKEN,
PUBKEY
FROM
FTOTP_TOKENINFO
FETCH
FIRST
10000
ROWS
ONLY
>
c:\abc.txt
AIX
-
e.g.
db2
SELECT
TOKEN,
PUBKEY
FROM
FTOTP_TOKENINFO
FETCH
FIRST
10000
ROWS
ONLY
>
c:\abc.txt
<--
注意:不能先进入DB2,执行查询与导出命令组合
7、db2
drop
procere
存储过程名
<--
删除存储过程
8、db2
drop
database
数据库名
<--
删除指定名称的数据库
注,如果删除时提示有应用程序连接到这个数据库上,可以用如下命令断开所有应用程序的连接:
db2
force
application
all
<--
断开所有应用程序的连接
‘肆’ DB2如何查看当前当前数据库有哪些存储过程
可以这么考虑!db2ilist:列出db2所有实例db2getinstance:显示当前实例db2listdbdirectory:列出当前实例下的所有数据库db2listactivedatabases:列出当前连接的数据库db2listapplications:列出所有对数据库的连接。(这个应该就是你要的,直接列出连接的详细信息,包括哪些内容自己看吧)
‘伍’ DB2数据库中的表在硬盘上的存储位置在哪
这个得查,先查数据库的位置,再查表所属的表空间,现查表空间的存储位置,
执行db2cmd
查看本机所有的数据库编目
db2 list db directory
联接数据库
db2 connect to db_name user uid using pwd
查看表空间位置
db2 list tablespaces show detail
重装数据库后,只要原数据的文件没有删除,可以用catalog db 加载机器上原有的数据库,但是只加载一个表空间或一个表我觉得实现不了。
‘陆’ db2数据库存储带样式的html数据
在DB2中,一个数据库只能属于一个实例,一个实例可以对应多个数据库,所以实例和数据库的关系是一对多。
每个数据库是由一组对象组成的,如:表、视图、索引等。表是二维结构,由行和列组成,表数据存放在表空间里,表空间是数据库的逻辑存储层,每个数据库可以包含多个表空间,每个表空间只能归属于一个数据库,所以数据库和表空间的关系是一对多。
所以DB2数据库的逻辑结构分别为:实例-->数据库-->表空间-->表。
物理结构:
每个表空间由一个或多个容器组成,容器是映射到物理存储,容器可以是目录、文件、裸设备。每个容器只能属于一个表空间。根据数据管理方式,表空间可以分为系统管理(SMS)、数据库管理(DMS)
DB2将表和索引存储在PAGE页里,page是db2中最小的物理分配单元,表中的每行数据只能包含在一页中,不能跨页。DB2支持的页大小分为:4K、8K、16K、32K四种,当DB2在读取数据的时候,不是按页读取,而是按照extent(块)读取,一个extent是由一组连续的页组成。如果一个表空间有多个容器,为了数据均衡的分布,所以在写数据的时候,按照循环的方式在各个容器里写数据,当一个容器中写满一个extent的时候,将开始在第二个容器继续写extent,周而复始,可以提高读写的效率。
每个表空间由一个或多个容器组成,表空间为逻辑层次中,而真正的数据是存放在容器中的,容器是由多个extent组成。
DB2的存储模型为:表空间---->容器---->extent------>page.。
在V8中,当每个PAGE的大小为32K的时候,表空间最大只能容纳256G。
在V9开始,当每个PAGE的大小为32K的时候,表空间最大可以容纳16T。这就是大表空间(large)。从V9开始,默认创建的数据表空间均为大表空间。
‘柒’ 如何给DB2数据库的存储过程中 where 的in 条件传参数
create
or
replace
procere
test(in
in_where
varchar(100))
--创建一个存储过程test,并可以传入字符串作为参数
declare
v_sql
varchar(512);
set
v_sql
=
'
delete
from
table1
where
field1
in
('
concat
in_where
concat
')
'
;
--
这里是把传进来的where语句拼起来
execute
immediate
v_sql;
--这里是把语句进行执行---------类似以上这样的存储过程,使用以下的放在进行执行即可:call
test(
'
''001'',''002''
')
;
--内容中的一个‘
需要使用
’‘
进行转义
‘捌’ Oracle,db2是什么
Oracle和DB2是两种不同的数据库。
Oracle:
Oracle是甲骨文公司的一款关系数据库管理系统。
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
DB2:
全称为IBM DB2。是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本。
DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 DB2以拥有一个非常完备的查询优化器而着称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
‘玖’ 如何执行db2存储过程
1、db2 create database 数据库名 <-- 创建数据库
2、db2 connect to 数据库名 user 用户名 using 用户密码 <-- 连接数据库
3、db2 -tvf otpdb_v3_db2.sql <-- 为新建数据库建立表结构
4、db2 -td@ -f 存储过程文件绝对路径 <-- 导入存储过程,无错误会提示成功
4、调用存储过程:
Windows 下:db2 call 存储过程名(参数1,参数2)
AIX 下:db2 <-- 要先进入DB2,方可调用存储过程或执行SQL语句
db2=>call 存储过程名(参数1,参数2)
5、验证插入数据是否成功
Windows 下:db2 select count(*) from FTOTP_USERINFO
AIX 下:db2 <-- 要先进入DB2,方可调用存储过程或执行SQL语句
db2=>select count(*) from FTOTP_USERINFO
Windows 下:db2 select count(*) from FTOTP_TOKENINFO
AIX 下:db2 <-- 要先进入DB2,方可调用存储过程或执行SQL语句
db2=>select count(*) from FTOTP_TOKENINFO
‘拾’ DB2数据库如何存储图片
建议将图片上传到服务器,上传命令中将图片路径记录在数据表中。
显示需要调用图片时,读取表中的图片路径,再通过图像标签输出图片。