《DB2基本知识.ppt》由会员分享,可在线阅读,更多相关《DB2基本知识.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DB2/OS390DB2 系统介绍DB2 编程DB2 的常用UTILITY1/21/20231DB2 系统架构示意 在OS/390系统中,DB2作为独立的数据库应用系统,通过与其他应用间的接口(ATTCHMENT)进行数据交换。OS/390CICSIMSTSODB2AttachAttachAttach1/21/20232DB2 ObjectDB2 SUBSYSTEMCATALOGDIRECTORYOTHER SYSTEM OBJECTSDATABASE 1TABLE SPACES1TABLE SPACES2TABLE1TABLE2.etc.INDEX1INDEX2.etc.VIEW1VIEW2
2、VIEW3.etcDATABASE2.etc.STORAGE GROUP1VOLUME1VOLUME2STORAGE GROUP2VOLUME31/21/20233DB2 Objects 概述 lCATALOG:DB系统定义信息lDIRECTORY:DB系统管理信息lDATABASE:逻辑数据库定义lTABLESPACES:定义数据库表的物理存放lSTORAGE GROUP:定义物理卷空间分配lTABLE:关系数据库的基本表lINDEX:建立在TABLE上的索引lVIEW:视图,建立在TABLE上的虚表1/21/20234TABLE/TABLE SPACESl在DB2的中,PAGE是最小的存储
3、单元,也是I/O的基本单位,大小为4K或32K;lTABLE中的一行(ROW)必须存放在单个PAGE中,一个PAGE中可以存放多个行(必须是同一个TABLE);l在资源管理中,Tablespaces,table,或 page 都可以作为资源锁的单元;1/21/20235TABLE SPACESTable space 可以分为三种基本类型:lPartitioned:在一个 Table space 中只有一个表(table),实际的数据还可以存放在不同的数据集中(按照某种键值区分);lSegmented:在一个 Table space 中允许有一个或多个Table,空间的分配以段(segment)
4、来组织,但在每一个段中只存放同一个表;lSimple:允许一个或者多个表存放于同一个 Table space 中,空间分配以 page 来组织。1/21/20236DB2 数据库的基本建立过程l建立存储组(Storage Group);l建立逻辑数据库(DataBase);l定义表空间(Tablespace);l建立表(Table);l在表的基础上建立索引(Index);l装载、处理数据(LOAD/INSERT);1/21/20237DB2 SQL 语言SQL(Structured Query Language),在DB2中包括:lDDL(Data Definition Language):用
5、于数据库对象的定义CRATEALTERCOMMENT ONLABEL ONlDML(Data Manipulation Language):用于数据库的数据操作UPDATESELECTDELETEINSERTlDCL(Data Control Language):资源控制管理GRANTREVOKE1/21/20238SQL 程序的预编译lDB2 的预编译(Pre-compile):-将SQL语句与非SQL语句分离;-建立数据库访问模块(DBRM);-检测语法错误;lBind:使用数据库的catalog信息,检测错误(资源的授权、DB2的关系数据库规则);对每一个SQL语句采取相应的调用策略(资
6、源锁、索引的使用);将访问策略存储为plan(或是一个package);Plan 由集成的一系列DBRMs组成。1/21/20239应用程序的编译以及运行过程Source Program.EXEC SQL DB2 Pre-CompileSourceCompile and LinkeditLanguage InterfaceDBRMSQLSTMNTSBINDDB2 CATALOGTable/Column DescriptionAuthorizationSYSDBRMDB2DirectoryPLAN(Package)LoadMODULE EXECUTEWhen executing,system w
7、ill check the Timestamp(Consistency Token)of Load MODULE and Plan which is made by Pre-compiler.1/21/202310BIND PACKAGE/PH02CS04 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT)/DBRMLIB DD DSN=VGUSR.MVSCICS.DBRMLIB,DISP=SHR/SYSPRINT DD SYSOUT=*/SYSOUT DD SYSOUT=*/REPORT DD SYSOUT=*/SYSIN DD DUMMY /SYSTSIN
8、DD*DSN SYSTEM(DSN1)BIND PACKAGE(NASE001)MEMBER(NAH2020)ACT(REP)-VALIDATE(BIND)ISOLATION(CS)EXPLAIN(YES)-QUALIFIER(NASE001)OWNER(IBMUSER)END 1/21/202311DB2 的 SQL 编程基本基本 SQL 语句语句:lSELECTSELECTColumn,ColumnFROMTableWHERE Column=ValuelUPDATEUPDATETableSETValueWHERE Column=ValuelDELETEDELETEFROM TableWHE
9、RE Column=ValuelINSERTINSERT INTO TableVALUES(.,.,.,)1/21/202312主机变量(Host variables)l嵌入式语言中定义的变量,在SQL语句中可以使用,如下例:EXEC SQL UPDATETMPTABLESETSalary=Salary*:PERCENTWHERE Jobcode=:JCODEEND-EXEC.使用时在变量前必须使用冒号(:)来标示主机变量。l在使用可能定义为 NULL 的域时,应当使用指针变量来判断值域是否是 null 值,如下例:SELECTCOLA INTO:A:AIND其中,AIND 定义为指针变量 s
10、9(4)comp。如果该值域为null,返回的指针变量值将小于零。1/21/202313Cursorsl在查询数据库可能返回多条数据记录时,使用“游标”(Cursors)来完成对记录的处理。使用的语句包括:DECLARE-声明一个游标OPEN-打开游标FETCH-读取游标中的一条记录CLOSE CURSOR-关闭游标1/21/202314游标(CURSOR)使用例程lDEFINE A CURSOR-DefinitionEXEC SQL DECLARE K9 CURSOR FORSELECT EMPNO,LASTNAMEFROM TEMP1WHERE DEPNO=:DPTEND-EXEC.lOP
11、EN the CURSOR-ExecutionEXEC SQL OPEN K9 END-EXEC.lFETCH RESULT ROWS ONE AT A TIMEEXEC SQL FETCH K9 INTO:EMPNO,:NAME END-EXEC.lCLOSE CURSOR when finishedEXEC SQL CLOSE K9 END-EXEC.注意:注意:游标操作在open时才对数据库中的table进行选择处理。1/21/202315SQLCA-SQL Communication Area l应用程序调用 DB2 时使用的系统通讯区,其中的返回代码域可以用来判断SQL调用是否成功。
12、常用的返回代码域有:SQLCODE(INTEGER)调用执行返回代码(000-成功;0-调用警告,例如:+100 Row not found);SQLSTATE 调用返回代码详细说明。1/21/202316Coding AidslWhenever statement用来处理可能出现的例外状况,在程序中一旦定义全程使用。EXEC SQL WHENEVER condition action END-EXEC.Condition 包括:SQLERROR SQLCODE 小于零;SQLWARNING SQLCODE 大于零;NOT FOUND SQLCODE=100;Action 可以为 GO TO:
13、Lable 或者是 CONTINUE.1/21/202317Coding AidslDSNTIAR/DANTIRSQL错误返回代码解释例程,在应用程序中调用该例程以获得系统标准的错误解释。CALL DSNTIARlDCLGEN根据DB2中的Table定义将表的定义描述生成到指定的数据集中。lInclude statement1/21/202318DB2 online utility COPY/IMAGElCOPY-将一个tablespace拷贝到顺序数据集中,FULLCOPY/INCREMENTAL COPY;/IMGINC JOB(ACCTNUM,EXP),PGMRNAME,TIME=144
14、0,NOTIFY=&SYSUID,/REGION=6500K,CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)/STEP1 EXEC DSNUPROC,PARM=FJDB,COPY,COND=(4,LT),REGION=1024K/DSNTRACE DD SYSOUT=*/SYSCOPY1 DD DSN=DBA1.IMAGCOPY.INC1.NSPATEL,DISP=(NEW,CATLG),/UNIT=3390,VOL=SER=NGDAT1,SPACE=(CYL,(1,1)/SYSPRINT DD SYSOUT=*/SYSUDUMP DD SYSOUT=*/SYSIN DD
15、*COPY TABLESPACE NASEDB.NSPATEL COPYDDN SYSCOPY1 FULL NO SHRLEVEL REFERENCE 1/21/202319DB2 online utility MERGECOPYlMERGECOPY-建立(或合并)数据的完全拷贝(full image copies)或增量拷贝(incremental image copies);/STEP1 EXEC DSNUPROC,PARM=FJDB,CPY1,COND=(4,LT),REGION=0M /DSNTRACE DD SYSOUT=*/SYSCOPY1 DD DSN=NASE.MERGCOPY
16、.NSPATEL.NO3,/DISP=(NEW,CATLG),/UNIT=3390,SPACE=(TRK,(3,1),/VOL=SER=DB2VOL /SYSPRINT DD SYSOUT=*/SYSUDUMP DD SYSOUT=*/SYSIN DD *MERGECOPY TABLESPACE NASEDB.NSPATEL COPYDDN(SYSCOPY1)NEWCOPY YES 1/21/202320DB2 online utility RECOVERlRECOVER对一个 tablespace、分区(partition)、或一个错误范围(DATA/INDEX)进行恢复/修复/COP100
17、 DD DSN=NASEDB.IMAGCOPY.B26.NSWKTOT,UNIT=31A,/DISP=OLD,LABEL=(100,SL),VOL=(,RETAIN,SER=IGNASB)/SYSPRINT DD SYSOUT=*/UTPRINT DD SYSOUT=*/SYSIN DD *RECOVER TABLESPACE NASEDB.NSBADPRT TOCOPY NASEDB.IMAGCOPY.B26.NSBADPRT TOVOLUME IGNASB RECOVER TABLESPACE NASEDB.NSBCHINT RECOVER INDEX(ALL)TABLESPACE NAS
18、EDB.NSWKMED 1/21/202321DB2 online utility CHECKlCHECK INDEX/DATA:检测数据和相关索引的完整性;/PH01S21 EXEC DSNUPROC,PARM=FJDB,DSNTEX,COND=(4,LT)/SYSUT1 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR /SORTOUT DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK01 DD UNIT=SYSDA,SPACE=(4000
19、,(20,20),ROUND)/SORTWK02 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK03 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK04 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/DSNTRACE DD SYSOUT=*/SYSERR DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SYSDISC DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SYSIN DD *CHECK
20、DATA TABLESPACE CISDB.CSDANW FOR EXCEPTION IN NGDBA.DANWEI USE NGDBA.DANWEITT DELETE YES 1/21/202322DB2 online utility QUIESCElQUIESCE对一组相关数据(一系列的 tablespace)建立统一的同步点;/*/*ESTABLISH A QUIESCE POINT FOR IMAGE COPY /*/STEP EXEC DSNUPROC,PARM=FJDB,QUIESC1,COND=(4,LT)/SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(20,
21、20),ROUND)/SYSIN DD *QUIESCE TABLESPACE CISDB.CSACAVCH TABLESPACE CISDB.CSBLKLST1/21/202323DB2提供的应用程序 DSNTIAUL lDSNTIAUL的功能是将表中的数据以及表结构UNLOAD到顺序文件中,以供LOAD使用.其使用较为灵活,用它可将一个或多个表的部分或全部数据生成到SEQUENTIAL文件中。lUNLOADlDB2 online utility LOAD可以使用其输出1/21/202324lDSNTIAUL-UNLOAD 生成顺序文件/UNLOAD PROC M=,N=,N1=/UNLOA
22、D EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(EVEN)/STEPLIB DD DSN=DSN510.SDSNLOAD,DISP=SHR/SYSTSPRT DD SYSOUT=*/SYSTSIN DD *DSN SYSTEM(DSN1)RUN PROGRAM(DSNTIAUL)PLAN(DSNTIB51)PARMS(SQL)-LIB(DSN510.RUNLIB.LOAD)/SYSPRINT DD SYSOUT=*/SYSUDUMP DD SYSOUT=*/SYSREC00 DD DSN=NASE.XXDB.SYSREC00.&M.,DISP=(NEW,PASS,D
23、ELETE),UNIT=3490,/VOL=(,RETAIN,99,REF=*.STEP&N1.UNLOAD.SYSREC00),LABEL=(&N,SL,EXPDT=99365)/SYSPUNCH DD DSN=NGDATA.SYS.DB2.LOAD.TEMP.SYSPUNCH(&M),DISP=SHR/SYSIN DD DSN=NGDATA.SYS.DB2.LOAD.SYSIN(&M),DISP=SHR/PEND/*/*UNLOAD STEPS/*/STEP1 EXEC UNLOAD,N=01,M=NTBADPRT/SYSREC00 DD DSN=NASE.XXDB.SYSREC00.&M
24、.,DISP=(NEW,PASS,DELETE),UNIT=3490,/VOL=(,RETAIN,99),LABEL=(&N,SL,EXPDT=99365)/STEP2 EXEC UNLOAD,N=2,N1=1,M=NTBCHINT1/21/202325DB2 online utility LOADlLOAD-由顺序文件装载数据到DB2的表中;/RELOAD EXEC DSNUPROC,PARM=DSN1,RELOAD,COND=(4,LT)/DSNTRACE DD SYSOUT=*/SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR/SORTOUT DD UNIT=SY
25、SDA,SPACE=(400,(20,20),ROUND)/SORTWK01 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK02 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK03 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK04 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SYSREC00 DD DSN=NASE.PA1008.NTHPAAPN,DISP=SHR/SYSUT1 DD UNIT=SYSDA,SPA
26、CE=(4000,(20,20),ROUND)/SYSIN DD *LOAD DATA RESUME YES INDDN SYSREC00 INTO TABLEBUSSDBA.NTHPAAPN(ZONENO POSITION(1)DECIMAL EXTERNAL(6),BRNO POSITION(8)DECIMAL EXTERNAL(6),APPNO POSITION(15)DECIMAL EXTERNAL(4),SEQNO POSITION(20)DECIMAL EXTERNAL(8)1/21/202326lLOAD 载入数据/RELOAD PROC M=,N=,SER=IGPRSA/REL
27、OAD EXEC DSNUPROC,PARM=FJDB,LOADNS/STEPLIB DD DSN=SYS3.DSN510.SDSNLOAD,DISP=SHR/DSNTRACE DD SYSOUT=*/SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR/SORTOUT DD UNIT=SYSDA,SPACE=(CYL,(50,20),ROUND)/SYSMAP DD UNIT=SYSDA,SPACE=(CYL,(50,20),ROUND)/SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(50,20),ROUND)/SORTWK02 DD UNIT=S
28、YSDA,SPACE=(CYL,(50,20),ROUND)/SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(50,20),ROUND)/SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(50,20),ROUND)/SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(50,20),ROUND)/SYSREC00 DD DSN=NASE.FJDB.SYSREC00.&M.,UNIT=3490,/DISP=SHR,VOL=(,RETAIN,SER=&SER),LABEL=(&N,SL)/SYSIN DD DSN=NGDATA.SYS.V10.
29、DB2.LOAD.SYSPUNCH(&M.),DISP=SHR/PEND/*/*RELOAD STEPS/*/STEP1 EXEC RELOAD,N=1,M=NTBADPRT1/21/202327DB2 online utility REORGlREORG对某一个表、或某一个tablespace的分区、或者是一个索引重新分配其存储空间;1/21/202328/PH01S18 EXEC DSNUPROC,PARM=SZ01,REORG,COND=(4,LT)/SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR /SORTOUT DD UNIT=SYSDA,SPACE=(CY
30、L,(10,20),ROUND)/SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(10,20),ROUND)/SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(10,20),ROUND)/SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(10,20),ROUND)/SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(10,20),ROUND)/SYSPRINT DD SYSOUT=*/UTPRINT DD SYSOUT=*/SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(10,50),ROUND)
31、/SYSREC DD UNIT=SYSDA,SPACE=(CYL,(10,50),ROUND)/COPYDDN DD DSN=DSN510.COPYDDN.D0701.NSPAFAC,DISP=(NEW,CATLG),/UNIT=SYSDA,SPACE=(CYL,(10,50),RLSE),DCB=BLKSIZE=5000/SYSIN DD *REORG TABLESPACE NASEDB.NSPAFAC COPYDDN(COPYDDN)LOG NO SHRLEVEL REFERENCE REORG INDEX NGDBA.NIHPAFAC SHRLEVEL NONE 1/21/202329D
32、B2 online utility RUNSTATSlRUNSTATS-更新存放在 catalog 中的有关 tablespaces 和 indexes 的信息;/PH01S26 EXEC DSNUPROC,PARM=SZ01,STAT,COND=(4,LT)/SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR/SORTOUT DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK01 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK02 DD UNIT=SYSDA,SPACE=(400
33、0,(20,20),ROUND)/SORTWK03 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/SORTWK04 DD UNIT=SYSDA,SPACE=(4000,(20,20),ROUND)/DSNTRACE DD SYSOUT=*/SYSUT1 DD UNIT=SYSDA,SPACE=(4000,(50,50),ROUND)/SYSREC DD UNIT=SYSDA,SPACE=(4000,(200,200),ROUND)/SYSIN DD *RUNSTATS TABLESPACE CISDB.CSDANW INDEX(ALL)1/21/202330
34、DB2 online utility REPORTlREPORT生成在某个 tablespace set 中的所有 table 以及 tablespace 的有关信息;/STEP1 EXEC PGM=DSNUTILB,PARM=SZ01,DSNTEX,/COND=(4,LT),REGION=2M /STEPLIB DD DSN=SYS3.DSN510.SDSNLOAD,DISP=SHR/SYSPRINT DD SYSOUT=*/UTPRINT DD SYSOUT=*/SYSIN DD *REPORT RECOVERY TABLESPACE CISDB.CSCODE1/21/202331DB2
35、online utility STOSPACElSTOSPACE -更新存放在 catalog 中的有关存储 DASD 的信息;/PH01S26 EXEC PGM=DSNUTILB,REGION=0K,PARM=SZDB,DSNTEX/STEPLIB DD DSN=DSN510.SDSNLOAD,DISP=SHR/SYSPRINT DD SYSOUT=*/SYSIN DD *STOSPACE STOGROUP SYSDEFLT STOSPACE STOGROUP NGSTG4 1/21/202332DB2 online utility REPAIRlREPAIR用于打印或修改 DB2 存储的数据(data pages)的高级维护功能;1/21/202333DB2 online utility-DIAGNOSElDIAGNOSE可与其他工具共同运行以改善系统的服务性能;1/21/202334CLASS is OVERAny question?Thank you!1/21/202335