db2sql8001nlinux的简单介绍

admin sql技巧 2022-12-06 2 0

本文目录一览:

linux用户登录不了db2客户端,如何授权?

你用来执行建库命令的用户是否具有你提到的/boot目录的相应权限?

缺省的db2inst1用户只具有它用户home目录下面的权限。如果不加on参数,库都是建在这个目录下的,所以权限不会出问题。但如果你制定了on参数,那目标路径必须开权限。

grant一下吧。

如何安装DB2 个人版在Linux 操作系统之下?

本文简略的介绍了DB2 pe在linux系统上的安装过程。DB2 PE简介DB2 Personal Edition(DB2 PE)是在低价位的商用硬件(commodity hardware)台式机上运行的单用户 RDBMS。DB2 PE 可用于 Windows 98、Windows ME、Windows NT(SP6 或更高版本)、Windows 2000(推荐 SP2)、Windows XP 和 Linux。在 Microsoft 发布 Window 2003 服务器时,DB2 PE 将支持它们。DB2 PE 拥有 DB2 Workgroup Server Edition 的所有功能部件,不过有一个例外:远程客户机无法连接到运行着该 DB2 版本的数据库上。(但是,带有控制中心(Control Center)的工作站可以连接到这些数据库,以执行远程管理。)因为“这个 DB2 到底还是 DB2”,所以那些针对 DB2 PE 而开发的应用程序都将能够在 DB2 的任何其它版本上运行。您可以使用 DB2 PE 开发 DB2 应用程序,然后再将它们用于生产环境。

不管 PC 是否连接到网络,DB2 PE 都很有用;对于需要强大数据存储的用户,或者需要提供数据库存储工具并且能够连接到远程 DB2 服务器的用户,它在这两种情况中都很有用。DB2 PE 还附带了 DB2 仓库中心(DB2 Warehouse Center),所以用户可以实验象抽取、转换以及装入之类的商业智能建模功能(请参阅数据仓库是什么?)。DB2 PE 具有可扩展性,可以支持所有 DB2 Extender:XML(现已捆绑到 DB2 安装)、Spatial 和 Net Search。(更多信息,请参阅 DB2 Extender。)

偶尔进行连接的用户可能想利用 DB2 个人版 内置的复制功能部件和 DB2 控制服务器(DB2 Control Server)来建立同步环境,在外的员工可以通过这个环境与企业保持联系。当然,这只适合于使用膝上型电脑的用户和某些工作站,例如那些运行零售终端(point-of-sale,POS)应用程序的工作站。准备安装在这里,我们安装的是DB2 pe(personal edition),安装文件可以从ibm的站点上获得。下载地址是:。下载得到的是tar格式的文件。

在我的例子中,我的安装文件已经下在下来放在lan内的一个ftp上。我的安装环境是一个新安装的redhat 7.2,采用的是服务器安装方式的默认组件。

把安装文件拷贝到本地:

[root@no18 root]# wget 解压:

[root@no18 root]# tar xvf DB2_V81_PE_LNX_32_NLV.tar 解开以后的文件都被放置在当前目录下的pe文件夹中。开始安装:[root@no18 root]# pe/DB2_install 过阵子,安装就可以完成了。到这个时候,我们安装的主要工作就完成了。完成安装我们现在需要做的是,对数据库的初始化工作。包括安装授权文件和创建一个实例并运行它。

首先,我们安装授权文件。

不安装授权文件的话,则是评估版,九十天后就要过期。授权文件,在安装包已经有了。我们用下面的命令安装它:root@no18 root]# /opt/IBM/DB2/V8.1/adm/DB2licm -a /root/pe/DB2/license/DB2pe.lic 接着,我们需要创建一个用户。

[root@no18 root]# useradd DB2ins1 [root@no18 root]# passwd DB2ins1

开始创建实例:[root@no18 root]#/opt/IBM/DB2/V8.1/instance/DB2icrt -u DB2ins1 DB2ins1 这样,我们就创建了一个实例DB2ins1。

启动该实例:[root@no18 root]# su DB2ins1 [DB2ins1@no18 DB2ins1]$ DB2start SQL1063N DB2START processing was successful.测试作为测试,我们运行一个简单的sql:创建数据库的sql。

[root@no18 root]# su DB2ins1 [root@no18 root]# cd

[DB2ins1@no18 DB2ins1]$ DB2 create database mydb

DB20000I The CREATE DATABASE command completed successfully.

that’s ok,我们的数据库创建成功了。结论DB2以其易用性和功能强大以及雄厚的支持而赢得了不少用户。在本文中,我们迈出了学习使用DB2的第一步。

db2 报SQLSTATE=08001 是什么原因?

这种问题一般的原因:

1.DB2COMM=TCPIP

2.数据库故障

3.端口号被禁用

解决方案:

1.看看端口号有没有配置正确,看一下配置参数svcename跟services文件中配置的db2端口号是否一致,windows一般用50000,unix/linux一般用60000。

2.连接出错首先看看服务器ip 和端口写对没有。

ip如果没错就要看看服务器的db2服务端口对不对。另外对于服务器下面这些也要注意。

检查服务器的配置情况如下:

验证存在的DB2数据库

db2 list db directory

db2 list db directory show detail

验证实例使用的通讯协议,查看DB2COMM变量

db2set -all

查看数据库管理器的配置,查看SVCENAME(特指tcpip协议)

db2 get dbm cfg

查看/etc/services中,有无与上面对应SVCENAME的端口,例如:

db2cDB2 50000/tcp

要确认服务器是否在监听,可以用netstat -an 来查看端口是否处于LISTEN状态。

linux执行db2 sql的sh脚本操作中断

oracle 10g的DBMS_XPLAN包中display_cursor函数不同于display函数,display_cursor用于显示SQL语句的真实的执行计划,在大多数情况下,

显示真实的执行计划有助于更好的分析SQL语句的全过程,尤其是运行此SQL语句实时的I/O开销。通过对比预估的I/O与真实的I/O开销来判断

SQL语句所存在问题,如缺少统计信息,SQL语句执行的次数,根据实际中间结果集的大小来选择合适的连接方式等。本文仅仅讲述

display_cursor函数的使用。

一、display_cursor函数用法

1、display_cursor函数语法

DBMS_XPLAN.DISPLAY_CURSOR(

sql_id IN VARCHAR2 DEFAULT NULL,

cursor_child_no IN NUMBER DEFAULT NULL,

format IN VARCHAR2 DEFAULT 'TYPICAL');

2、display_cursor函数参数描述

sql_id

指定位于库缓存执行计划中SQL语句的父游标。默认值为null。当使用默认值时当前会话的最后一条SQL语句的执行计划将被返回

可以通过查询V$SQL 或V$SQLAREA的SQL_ID列来获得SQL语句的SQL_ID。

cursor_child_no

指定父游标下子游标的序号。即指定被返回执行计划的SQL语句的子游标。默认值为0。如果为null,则sql_id所指父游标下所有子游标

的执行计划都将被返回。

format

控制SQL语句执行计划的输出部分,即哪些可以显示哪些不显示。使用与display函数的format参数与修饰符在这里同样适用。

除此之外当在开启statistics_level=all时或使用gather_plan_statistics提示可以获得执行计划中实时的统计信息

有关详细的format格式描述请参考:dbms_xplan之display函数的使用 中format参数的描述

下面给出启用统计信息时format新增的修饰符

iostats 控制I/O统计的显示

last 默认,显示所有执行计算过的统计。如果指定该值,则只显示最后一次执行的统计信息

memstats 控制pga相关统计的显示

allstats 此为iostats memstats的快捷方式,即allstats包含了iostats和memstats

run_stats_last 等同于iostats last。只能用于oracle 10g R1

run_stats_tot 等同于iostats。只能用于oracle 10g R1

抓一个最近一小时最消耗IO的SQL:

SELECT sql_id, COUNT(*)

FROM gv$active_session_history ash, gv$event_name evt

WHERE ash.sample_time SYSDATE - 1 / 24

AND ash.session_state = 'WAITING'

AND ash.event_id = evt.event_id

AND evt.wait_class = 'User I/O'

GROUP BY sql_id

ORDER BY COUNT(*) DESC;

执行上面的SQL:

SQL SELECT sql_id, COUNT(*)

FROM gv$active_session_history ash, gv$event_name evt

2 3 WHERE ash.sample_time SYSDATE - 1 / 24

4 AND ash.session_state = 'WAITING'

5 AND ash.event_id = evt.event_id

6 AND evt.wait_class = 'User I/O'

7 GROUP BY sql_id

8 ORDER BY COUNT(*) DESC;

SQL_ID COUNT(*)

------------- ----------

g7fu6qba82m6b 668

63r47zyphdk06 526

9f5m4wd88nc1h 514

593p47drw5fhk 232

br91w16jzy4fu 120

4fvwyjpnh6tp7 78

gm0nrbfuj8kzr 70

2184k363hw4xd 68

gc4dajs7g5myy 46

8vrk9sfuwfdgq 42

ccpnb4dwdmq21 40

查看SQL的执行计划:

SELECT * FROM TABLE(dbms_xplan.display_cursor('g7fu6qba82m6b'));

在SQLPLUS中执行:

SQL set pagesize 2000

SQL SELECT * FROM TABLE(dbms_xplan.display_cursor('g7fu6qba82m6b'));

PLAN_TABLE_OUTPUT

------------------------------------------------------------------------------------------------------------------------

SQL_ID g7fu6qba82m6b, child number 0

-------------------------------------

UPDATE "CPDDS_PDATA"."CDM_LEDGER" SET "CSTM_NAME" = :a1,"CSTM_NO" =

:a2,"PAPER_TYPE" = :a3,"PAPER_NO" = :a4,"CURR_TYPE" = :a5,"SVT_NO" =

:a6,"BAL_DIR" = :a7,"BAL" = :a8,"AVAL_BAL" = :a9,"NORM_FRATIO" =

:a10,"PK_BAL" = :a11,"DR_ACCU" = :a12,"CR_ACCU" = :a13,"LAST_TRAN_DATE" =

:a14,"LAST_TRAN_TIME" = :a15,"PRT_LINE_NUM" = :a16,"NOREG_PK_REC_NUM" =

:a17,"PK_NO" = :a18,"PWD" = :a19,"FLAG" = :a20,"FRZ_FLAG" =

:a21,"CARD_HOLD_FLAG" = :a22,"PK_HOLD_FLAG" = :a23,"BGN_INT_DATE" =

:a24,"OPEN_DATE" = :a25,"ACC_HOLD_FLAG" = :a26,"CLS_DATE" =

:a27,"OPEN_TLR" = :a28,"CLS_TLR" = :a29,"CLS_INT" = :a30,"OPEN_INST" =

:a31,"ADD_NUM" = :a32,"DAC" = :a33,"FRZ_TIMES1" = :a34,"FRZ_TIMES2" =

:a35,"HOST_SEQNO" = :a36,"D_UPDATE_DATE" = :a37 WHERE "ACC" = :b0

Plan hash value: 319441092

-----------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

-----------------------------------------------------------------------------------

| 0 | UPDATE STATEMENT | | | | 3 (100)| |

| 1 | UPDATE | CDM_LEDGER | | | | |

|* 2 | INDEX UNIQUE SCAN| I_CDM_LEDGER | 1 | 269 | 2 (0)| 00:00:01 |

-----------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

2 - access("ACC"=:B0)

29 rows selected.

总结

1、与display函数不同,display_cursor显示的为真实的执行计划

2、对于format参数,使用与display函数的各个值,同样适用于display_cursor函数

3、当statistics_level为all或使用gather_plan_statistics提示可以获得执行时的统计信息

4、根据真实与预估的统计信息可以初步判断SQL效率低下的原因,如统计信息的准确性、主要的开销位于那些步骤等

在Linux上执行db2SQL时进行四舍五入的问题

DECLARE @T TABLE(Col1 DECIMAL(18,2))INSERT INTO @T SELECT 1.78INSERT INTO @T SELECT 2.35INSERT INTO @T SELECT 2.56 SELECT CAST(Col1/0.5 AS INT)*0.5 FROM @T/*1.52.02.5*/

Linux系统设置DB2等服务开机启动的过程

1.转到/etc/init.d 目录下。

以root身份执行

Shell代码

cd /etc/init.d

2.编写DB2启动脚本

Shell代码

vi startDB2

输入以下内容

Shell代码

#!/bin/sh

# chkconfig: 2345 99 01

# processname:IBMDB2

# description:db2 start

DB2_HOME=“/home/db2inst1/sqllib” #安装db2用户的sqllib

DB2_OWNER=“db2inst1” #db2用户名

case “$1” in

start )

echo -n “starting IBM db2”

su - $DB2_OWNER -c $DB2_HOME/adm/db2start

touch /var/lock/db2

echo “ok”

;;

stop )

echo -n “shutdown IBM db2”

su - $DB2_OWNER -c $DB2_HOME/adm/db2stop

rm -f /var/lock/db2

echo “ok”

;;

restart|reload)

$0 stop

$0 start

;;

*)

echo “usage:$0 start|stop|restart|reload”

exit 1

esac

exit 0

3.编写启动was和tds的脚本

Shell代码

vi startWasTds

输入以下内容

Shell代码

#!/bin/sh

# chkconfig: 2345 99 01

# processname:IBMTDSWAS

# description:filenet was tds

/opt/IBM/WebSphere/AppServer/profiles/AppSrvTds/bin/startServer.sh server1

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh server1

/opt/IBM/WebSphere/AppServer/profiles/ilog/bin/startServer.sh serve1

#TDS

/opt/ibm/ldap/V6.3/sbin/ibmdiradm -l dsrdbm01 -t

/opt/ibm/ldap/V6.3/sbin/ibmslapd

参数说明:

头部注释:

linux 命令 chkconfig 要求文件头中

包含:下面这3项

Shell chkconfig代码

# chkconfig: 2345(默认的runlevel) 99(启动优先级) 01(关闭优先级)

# processname:进程名称

# description:进程描述

4.给文件赋予权限

Shell代码

chmod -R 777 startDB2

chmod -R 777 startWasTds

chkconfig --add startDB2

chkconfig --add startWasTds

添加开机启动成功。

评论