<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DB2常用操作

    d:\winnt\system32\drivers\etc\services文件是對機器名到IP地址的解析。
    d:\winnt\system32\drivers\etc\hosts文件是對端口名到端口號的解析。
    以上兩條上非DB2的,但在DB2中使用到。

    db2admin start 起動DB2管理

    DB2里對一個命令的HELP是:
    >db2 ? 該命令

    db2 連接到遠程數據庫
    第一步建一個結點:
    >db2 catalog tcpip node 結點名 remote 數據庫服務器IP地址 server 端口(50000)
    第二步建一個到庫的聯結別名:
    >db2 catalog db 庫名 as 別名 at node 結點名
    第三步建立聯結:
    >db2 connect to 別名 user 用戶名 using 用戶密碼
    斷開聯結:
    db2 connect reset


    db2里需要用到一個系統環境變量:db2codepage, 缺省值是1386,此值非常重要,客戶端于數據庫端的db2codepage不一樣時客戶端就無法連上數據庫端。

    DB2里一個表的全名是:schema.表名,缺什情況下不同的用戶看到的表是不一樣的,
    在程序的sql語句里必需用表的全名(切記)。

    查看有哪些程序在使用該數據庫:
    >db2 list application
    其結果中有一個字段application-handle在殺死該引用中用到

    殺死一個程序對該數據庫的使用:
    >db2 force application {all | (application-handle)}

    在庫被使用時db2stop不能執行

    DB2命令后所帶參數:
    -t 以;作為一句結束
    -f 指向一個文件(即執行一個文件中的語句,在command窗口里有些命令無法執行,可先用notepad建一個文件然后執行它)
    -v (我不知道是什么)
    注釋:-v用于顯示當前所執行的sql命令。


    一個windows nt 里的一般用戶可以連到庫,但無一般SQL語句的執行權,授權給一個用戶:
    >db2 grant sql語句(例如:select) on 表名 to user 用戶名
    取消該用戶的權:
    >db2 revoke sql語句 on 表名 from 用戶名


    DB2日志有兩種:循環日志和永久型日志
    循環日志:有3個文件循環寫,所以會產生以前的操作記錄被覆蓋。好處:日志文件大小不變,備份方便,但不可以在線備份。
    永久日志:其日志文件不斷增漲,但操作記錄不會被覆蓋,可以在線備份。

    如何備份:
    >db2 backup db 數據庫名 to 設備名(如:c:\);
    恢復:
    >db2 restore db 數據庫名 from 設備名
    (回滾rollforward我不太清楚)
    注釋:rollforword 是前滾的意思,向前到某一個時間,以保持數據的一致性,用于在線備份后的恢復,恢復是從log日志中開始到日志中的某一個時間,即可。只有在數據一致性得到保證的情況下,才能繼續對數據庫操作。

    連接到數據庫時報回滾錯誤
    用下面的命令:
    db2 rollforward db fmisadd to end of logs and complete

    導出導入數據庫:
    --export
    db2move hadb export -u userid -p password;
    --import
    db2move hadb import -u userid -p password;


    導出庫中表的數據:
    >export to 文件名.ixf of ixf select * from 表名
    >import from 文件名.ixf of ixf create into 表名
    導出庫的數據格式還有兩種del(文件格式)和wsf,但ixf格式信息最全,包含表結構信息,可恢復出已刪去的表。

    sql的inner/left/right/full join,這些概念在<<數據庫概論>>中有說明,left以左表為主,right以右表為主,full左右表記錄都會在查尋結果中。
    例如:>select aa,bb from db1 left join db2 on db1.id=db2.id


    合并查尋:把兩個或幾個查尋結果合并到一個字段(條件是字段必須兼容)
    格式:select ...... union select ....;

    使用臨時表:
    with tmptable (字段1,...) as (select....)?? --建一個臨時表
    select 字段1,.... from tmptable,另一個表 where....?? --使用該臨時表于另一個表交叉查尋。
    **order by 必需出現在結果集,在臨時表中不能用。

    截取字符串
    substr(字段名,開始位置,字符個數)

    判斷是否是空
    字段名 is null


    例子:
    到什么時候活了10000天:
    select distinct date('1980-01-01')+10000 day from a
    一共活了多少天:
    select distinct days(current date)-days(date('1980-01-01')) from a

    類型轉換:用cast ,例:
    select distinct cast(current date as char(10))||'aa' from a

    case的使用:
    select case when length(rtrim(學歷))=0 then '未知學歷' else xl end,rs from a
    例:查尋一個公司的年齡分布:
    with tmptable as (select case when year(current day)-csrq<20 then '小于20歲'??????????????????????????????????????????????????? when year(current day)-csrq<25 then '20-24歲'???????????????????????????????????????????????????? when year(current day)-csrq<30 then '25-29歲'
    ????????????????????????????? when year(current day)-csrq<35 then '30-34歲'
    ????????????????????????????? when year(current day)-csrq<40 then '35-39歲'
    ????????????????????????????? when year(current day)-csrq<45 then '40-44歲'
    ????????????????????????????? when year(current day)-csrq<50 then '45-49歲' else '大于50歲' end
    as x from a)
    select x,count(*) from tmptable group by x;

    一個數據庫中有些系統建的表是用來保存該庫各種信息的,如:syscat.tables
    例:查有多少個userid的表:
    select count(*) from syscat.tables where type='T' and tabschema='uerid'
    例:產生一個備分庫中所有表的文本:
    select 'export to '|| tabname || '.ixf of ixf select * from userid.' ||tabname||';' from syscat.tables where type='T' and tabschema='userid';

    ?

    性能調整:
    影響到DB2性能的有:
    能夠利用服務器的性能:1.并行性 2.減少通信

    建立Index
    ? <,>,=????? 第一類搜索謂詞,
    ? <>,like??? 第二類搜索謂詞,
    ? 需要用函數 第三類搜索謂詞,

    select * from a
    *盡量要哪個字段寫哪個字段。

    blocking的概念????? 客戶端請求一次,數據庫返回n個記錄。

    復合型SQL(我不太清楚)
    注釋:是指他所講的聯結union,建立臨時表等復雜的sql語句。

    DB2會對SQL語句優化,系統對表的信息知道的越多,優化越好,所以要做runstats
    runstats命令把表的信息告訴系統,一般當數據量增加一倍時用該命令一次。

    REORG命令是數據庫整理,類似于磁盤碎片整理。


    得到該instance的各種參數:(dbm cfg是整個DB2的參數,db cfg是對某個數據庫的參數)
    >db2 get dbm cfg
    >db2 get db cfg for 數據庫名
    修改參數:
    >db2 update dbm cfg using 參數 你要的數
    >db2 update db cfg for 數據庫名 using 參數 你要的數

    ?

    當第一個用戶連結到該數據庫時會申請一個內存緩沖,默認是250頁每頁4k即1M。
    Buffer pool size<4K>? [BUFFPAGE]=250
    修改該值:
    >db2 update db cfg for test using buffpage 你要的數
    但它的有效還取決于syscat.bufferpools中的npages是否為-1,為-1時它才有效,否則以syscat.bufferpols中的npage為準。
    可用下面的命令看:
    >select * from syscat.bufferpools
    一般此值的設置應為系統內存的40%左右,太大時會使系統因動用虛擬內存從而太吃力。

    sql語句的優化級別:一般取2或5(最高為9)
    Default query optinization class????? <DFT_QUENYOPT>=5
    該值越大優化越好,但優化所化時間也越長。

    并行性設置:
    Degree=-1 并行性全由操作系統完成。
    當操作系統有并行處理時,Degree=-1
    *****CUP與硬盤的個數一般為1:4到1:6;

    用戶最大連結數:
    <MAXAPPLS>=40
    BUFFPAGE與MAXPPLS的關系:BUFFPAGE>2*MXAPPLS

    文章出處: http://tb.blog.csdn.net/TrackBack.aspx?PostId=290057

    posted on 2007-07-20 15:51 心硯 閱讀(1279) 評論(0)  編輯  收藏 所屬分類: DB

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    文章分類

    文章檔案

    Forum

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 午夜亚洲AV日韩AV无码大全| JLZZJLZZ亚洲乱熟无码| 亚洲一区二区影院| 日韩精品人妻系列无码专区免费| 亚洲精品无码成人AAA片| 99精品全国免费观看视频..| 亚洲日韩精品一区二区三区无码 | 亚洲精品视频在线播放| 久久久久久影院久久久久免费精品国产小说 | 亚洲午夜精品久久久久久浪潮 | 久久久精品午夜免费不卡| 亚洲AV无码精品无码麻豆| 久久青草精品38国产免费| 亚洲狠狠狠一区二区三区| aⅴ免费在线观看| 亚洲日韩久久综合中文字幕| 国产麻豆剧传媒精品国产免费 | 美女黄色毛片免费看| 亚洲日韩VA无码中文字幕 | 久久亚洲AV成人出白浆无码国产| 国产成人免费午夜在线观看 | 亚洲w码欧洲s码免费| 国产美女被遭强高潮免费网站| 污网站免费在线观看| 91麻豆精品国产自产在线观看亚洲| 国产一级一毛免费黄片| 亚洲天天在线日亚洲洲精| 三年片在线观看免费观看高清电影| 国产亚洲精品bv在线观看| 亚洲精品视频久久久| 99久久精品免费视频| 国产91在线|亚洲| 久久精品国产精品亚洲人人| 91精品导航在线网址免费| 亚洲色大成WWW亚洲女子| 亚洲日韩VA无码中文字幕| 国产成人免费高清激情明星| 日亚毛片免费乱码不卡一区| 亚洲视频在线观看地址| 少妇亚洲免费精品| 1000部啪啪毛片免费看|