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

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

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

    太陽雨

    痛并快樂著

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      67 Posts :: 3 Stories :: 33 Comments :: 0 Trackbacks

    常用sql,建立臨時表語法,會話級臨時表,查看鎖表,解除鎖表,case,連接的會話數 ,查詢耗資源的進程(top session),查找object為哪些進程所用

    查看所有SEQUENCES:
    select sequence_name from  USER_SEQUENCES;

    修改表字段不允許為空
    alter table table_name modify cloumn_name not null;

    查詢序列
    select seq_major_site_reg.nextval from dual;

    添加主鍵
    alter table table_name add constraint PK_SEEDSITE_ID primary key (ID);


    Oracle Temporary Tables(Oracle 臨時表)

    1. 建立臨時表語法

    A.ON COMMIT DELETE ROWS 定義了建立事務級臨時表的方法

    CREATE GLOBAL TEMPORARY TABLE TABLE_NAME

    -----(COUMNS …)

    -----AS SELECT … FROM TABLE…

    ON COMMIT DELETE ROWS;

    當前session發出commit/rollback命令,則該事務周期發生的所有數據自動被Oracle刪除(Oracle truncate table)。但不影響任何其他session的數據。

    B.ON COMMIT PRESERVE ROWS 定義了創建會話級臨時表的方法

    CREATE GLOBAL TEMPORARY TABLE TABLE_NAME

    -----(COUMNS …)

    -----AS SELECT … FROM TABLE…

    ON COMMIT PRESERVE ROWS;

    當前session結束(用戶正常退出 / 用戶不正常退出 / Oracle實例崩潰),Oracle對這個會話的中發生的數據進行刪除(Oracle truncate table)。但不影響任何其他session的數據。

    2. 特點說明

    A.臨時表數據自動清空后,但是臨時表的結構以及元數據還存儲在用戶的數據字典中。表的定義對所有的會話可見

    B.臨時表不需要DML鎖

    C.可以索引臨時表和在臨時表基礎上建立視圖

    D.在臨時表上的索引也是臨時的,也是只對當前會話或者事務有效

    E.臨時表可以擁有觸發器

    F.可以用exportimport工具導入導出臨時表的定義,但是不能導出數據

    3. 使用技巧

    A.當某一個SQL語句關聯的表在2張及以上,并且和一些小表關聯。可以采用將大表進行分拆并且得到比較小的結果集合存放在臨時表中

    B.程序執行過程中可能需要存放一些臨時的數據,可以將這類數據放在臨時表里非常方便

    C.存儲過程中用到臨時表:

    1> 在建立臨時表前,應先加上對表名的判斷

    Select count(*) into v_count from user_tables where table_name = ‘XXX’;

    If v_count=0 then

    Create global temporary table …

    在存儲過程結束處,應該記得刪除表

    execute immediate 'drop table t_temp';


    4、查看鎖表信息
    SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
           l.os_user_name,s.machine, s.terminal,a.sql_text, a.action 
         FROM v$sqlarea a,v$session s, v$locked_object l
        WHERE l.session_id = s.sid
          AND s.prev_sql_addr = a.address
    ORDER BY sid, s.serial#;

    5、解除鎖表
    alter system kill session 'sid,serial#';
    例:alter system kill session '135,16';

    --以下幾個為相關表
    SELECT * FROM v$lock;
    SELECT * FROM v$sqlarea;
    SELECT * FROM v$session;
    SELECT * FROM v$process ;      
    SELECT * FROM v$locked_object;  
    SELECT * FROM all_objects;  
    SELECT * FROM v$session_wait;

    1.查出鎖定object的session的信息以及被鎖定的object名
    SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,
           l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time
        FROM v$locked_object l, all_objects o, v$session s
       WHERE l.object_id = o.object_id
         AND l.session_id = s.sid
    ORDER BY sid, s.serial# ;

    2.查出鎖定表的session的sid, serial#,os_user_name, machine name, terminal和執行的語句
    --比上面那段多出sql_textaction
    SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
           l.os_user_name,s.machine, s.terminal,a.sql_text, a.action 
         FROM v$sqlarea a,v$session s, v$locked_object l
        WHERE l.session_id = s.sid
          AND s.prev_sql_addr = a.address
    ORDER BY sid, s.serial#;
         
    3.查出鎖定表的sid, serial#,os_user_name, machine_name, terminal,鎖的type,mode
    SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
           s.terminal, s.logon_time, l.type
        FROM v$session s, v$lock l
       WHERE s.sid = l.sid
         AND s.username IS NOT NULL
    ORDER BY sid;

    4.case語句:

    SELECT count(*) cnt, field
        FROM (SELECT case
                       when salary < 1000 then
                        '饑餓'
                       WHEN salary >= 1000 and salary <= 1500 THEN
                        '溫飽'
                       WHEN salary > 1500 and salary <= 2000 THEN
                        '富裕'
                       WHEN salary > 2000 and salary <= 2500 THEN
                        '小康'
                       ELSE
                        '太富了'
                     END field
                FROM persion) a
       GROUP by field;

    5.根據某一條件查出星期
    select to_char(to_date(' 2009-03-09 ', ' yyyy-mm-dd ') + rownum - 1, 'DAY') as 星期,
           to_date(' 2009-03-09 ', ' yyyy-mm-dd ') + rownum - 1 as 日期
      from user_objects
    where rownum <= (to_date(' 2009-03-09 ', ' yyyy-mm-dd ') + 7 -
           to_date(' 2009-03-09 ', ' yyyy-mm-dd '));

    6、在數據庫服務器上 查看 那臺機器連接到了數據庫,連接的會話數是多少
    select count(*),machine  from v$session v group by machine;

     

     


    找使用CPU多的用戶session

    12是cpu used by this session

    select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value
    from v$session a,v$process b,v$sesstat c
    where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;

     

     

    監控表空間的 I/O 比例

    select df.tablespace_name name,df.file_name "file",f.phyrds pyr,
    f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw
    from v$filestat f, dba_data_files df
    where f.file# = df.file_id
    order by df.tablespace_name;

     

     

    監控當前數據庫誰在運行什么SQL語句
    SELECT osuser, username, sql_text from v$session a, v$sqltext b
    where a.sql_address =b.address order by address, piece;

     

    檢查被長時間鎖的對象

    SQL>select a.session_id,a.process,a.locked_mode,b.object_name,b.object_type,b.status from v$locked_object a,dba_objects b where a.object_id=b.object_id;

     

    查找object為哪些進程所用

      SELECT p.Spid, s.Sid, s.Serial# Serial_Num, s.Username User_Name,
            a.TYPE Object_Type, s.Osuser Os_User_Name, a.Owner,
            a.OBJECT Object_Name,
            Decode(Sign(48 - Command), 1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,
            p.Program Oracle_Process, s.Terminal Terminal, s.Program Program,
            s.Status Session_Status
            FROM V$session s, V$access a, V$process p
            WHERE s.Paddr = p.Addr
            AND s.TYPE = 'USER'
            AND a.Sid = s.Sid
            AND a.OBJECT = '&obj'
            ORDER BY s.Username, s.Osuser

     

    查詢耗資源的進程(top session)

    SELECT s.Schemaname Schema_Name,
            Decode(Sign(48 - Command),
            1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,
            Status Session_Status, s.Osuser Os_User_Name, s.Sid, p.Spid,
            s.Serial# Serial_Num, Nvl(s.Username, '[Oracle process]') User_Name,
            s.Terminal Terminal, s.Program Program, St.VALUE Criteria_Value
            FROM V$sesstat St, V$session s, V$process p
            WHERE St.Sid = s.Sid         AND St.Statistic# = To_Number('38')
            AND ('ALL' = 'ALL' OR s.Status = 'ALL')
            AND p.Addr = s.Paddr
            ORDER BY St.VALUE DESC, p.Spid ASC, s.Username ASC, s.Osuser ASC

     

    查看鎖(lock)情況

    SELECT /*+ RULE */
            Ls.Osuser Os_User_Name, Ls.Username User_Name,
            Decode(Ls.TYPE,
            'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock',
            'TX', 'Transaction enqueue lock', 'UL', 'User supplied lock') Lock_Type,
            o.Object_Name OBJECT,
            Decode(Ls.Lmode,
            1, NULL, 2, 'Row Share', 3, 'Row Exclusive',
            4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', 6,NULL) Lock_Mode,
            o.Owner, Ls.Sid, Ls.Serial# Serial_Num, Ls.Id1, Ls.Id2
            FROM Sys.Dba_Objects o,
     (SELECT s.Osuser, s.Username, l.TYPE, l.Lmode, s.Sid, s.Serial#, l.Id1,
            l.Id2
            FROM V$session s, V$lock l
            WHERE s.Sid = l.Sid) Ls
            WHERE o.Object_Id = Ls.Id1
            AND o.Owner <> 'SYS'
            ORDER BY o.Owner, o.Object_Name

    posted on 2010-04-14 17:55 小蟲旺福 閱讀(2131) 評論(0)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 亚洲精品乱码久久久久66| 老汉色老汉首页a亚洲| 日本高清不卡aⅴ免费网站| 亚洲AV综合色一区二区三区| 久久久久免费精品国产小说| 亚洲日本va一区二区三区| 亚洲国产精品人人做人人爽| 8090在线观看免费观看| 亚洲免费综合色在线视频| 国产亚洲av人片在线观看| 美女视频黄的全免费视频 | 亚洲六月丁香六月婷婷色伊人| 成人免费无码精品国产电影| 在线观看免费黄色网址| 91亚洲自偷在线观看国产馆| 亚洲人成网站观看在线播放| 无码乱肉视频免费大全合集| 一二三四在线观看免费中文在线观看| 亚洲日产2021三区在线 | 亚洲日韩VA无码中文字幕 | 亚洲成色在线综合网站 | 亚洲av午夜精品无码专区| 日韩一卡2卡3卡4卡新区亚洲| 免费精品国产自产拍在| 两性色午夜视频免费网| 亚洲av永久无码天堂网| 中文字幕亚洲精品资源网| 狠狠色婷婷狠狠狠亚洲综合| 最近最新的免费中文字幕| 性xxxxx大片免费视频| 牛牛在线精品免费视频观看| 亚洲一区二区三区深夜天堂| 亚洲妇熟XXXX妇色黄| 亚洲AV伊人久久青青草原| 免费a级毛片高清视频不卡| 无码人妻精品中文字幕免费| 一级毛片免费一级直接观看| 亚洲精品色播一区二区| 亚洲国产成人久久三区| 亚洲视频在线观看一区| 亚洲精品自产拍在线观看|