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

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

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

    姿姿霸霸~~!
    貴在堅持!
    posts - 106,  comments - 50,  trackbacks - 0

    1.NESTED LOOP

     對于被連接的數據子集較小的情況,nested loop連接是個較好的選擇。nested loop就是掃描一個表,每讀到一條記錄,就根據索引去另一個表里面查找,沒有索引一般就不會是 nested loops。
    一般在nested loop中, 驅動表滿足條件結果集不大,被驅動表的連接字段要有索引,這樣就走nstedloop。如果驅動表返回記錄太多,就不適合nested loops了。如果連接字段沒有索引,則適合走hash join,因為不需要索引。
    可用ordered提示來改變CBO默認的驅動表,可用USE_NL(table_name1 table_name2)提示來強制使用nested loop。


    2.HASH JOIN

     hash join是CBO 做大數據集連接時的常用方式。優化器掃描小表(或數據源),利用連接鍵(也就是根據連接字段計算hash 值)在內存中建立hash表,然后掃描大表,每讀到一條記錄就來探測hash表一次,找出與hash表匹配的行。
    當小表可以全部放入內存中,其成本接近全表掃描兩個表的成本之和。如果表很大不能完全放入內存,這時優化器會將它分割成若干不同的分區,不能放入內存的部分就把該分區寫入磁盤的臨時段,此時要有較大的臨時段從而盡量提高I/O 的性能。臨時段中的分區都需要換進內存做hash join。這時候成本接近于全表掃描小表+分區數*全表掃描大表的代價和。
        至于兩個表都進行分區,其好處是可以使用parallel query,就是多個進程同時對不同的分區進行join,然后再合并。但是復雜。
    使用hash join時,HASH_AREA_SIZE初始化參數必須足夠的大,如果是9i,Oracle建議使用SQL工作區自動管理,設置WORKAREA_SIZE_POLICY 為AUTO,然后調整PGA_AGGREGATE_TARGET即可。
    以下條件下hash join可能有優勢:
    兩個巨大的表之間的連接。
    在一個巨大的表和一個小表之間的連接。
    可用ordered提示來改變CBO默認的驅動表,可用USE_HASH(table_name1 table_name2)提示來強制使用hash join。


    3.SORT MERGE JOIN

    sort merge join的操作通常分三步:對連接的每個表做table access full;對table access full的結果進行排序;進行merge join對排序結果進行合并。sort merge join性能開銷幾乎都在前兩步。一般是在沒有索引的情況下,9i開始已經很少出現了,因為其排序成本高,大多為hash join替代了。
    通常情況下hash join的效果都比sort merge join要好,然而如果行源已經被排過序,在執行sort merge join時不需要再排序了,這時sort merge join的性能會優于hash join。
    在全表掃描比索引范圍掃描再通過rowid進行表訪問更可取的情況下,sort merge join會比nested loops性能更佳。
    可用USE_MERGE(table_name1 table_name2)提示強制使用sort merge join。

    4.半連接
    nested loops semi是nested loop連接的變種,又叫半連接。原理與nl相同,通常用于in,exist操作,這種操作join時候,通常查找到一條紀錄就可以了,所以用semi表示。與semi相似的有一種叫anti,反連接,一般用于not in,not exists,也有nest loop anti和hash anti兩種。

    5.星形

    常用于OLAP系統

    posted @ 2010-12-19 23:49 xrzp 閱讀(229) | 評論 (0)編輯 收藏
    1.觀察cache size,觀察主機內存情況,判斷SGA的內存分配是否合理
    2.觀察load profile的transaction情況,判斷系統的繁忙程度
    3.觀察load profile的parse和hard prase值,觀察是否存在過多的硬解析
    4.觀察top5 timed event查看系統的瓶頸所在
    5.關注6個order by的sql語句
    posted @ 2010-12-19 23:15 xrzp 閱讀(448) | 評論 (0)編輯 收藏
         摘要:         TABLE函數可接受查詢語句或游標作為輸入參數,并可輸出多行數據。該函數可以平行執行,并可持續輸出數據流,被稱作管道式輸出。應用TABLE函數可將數據轉換分階段處理,并省去中間結果的存儲和緩沖表.         TABLE函數(它...  閱讀全文
    posted @ 2010-12-19 22:53 xrzp 閱讀(1686) | 評論 (1)編輯 收藏
    配置 ASMLib,遇到一個問題,如圖:


    可能的問題:
    1.linux的selinux沒有關閉
    2.驅動不對.

    1.關閉selinux
    vi /etc/sysconfig/selinux
    # This file controls the state of SELinux on the system. 
    # SELINUX= can take one of these three values: 
    #       enforcing - SELinux security policy is enforced. 
    #       permissive - SELinux prints warnings instead of enforcing. 
    #       disabled - SELinux is fully disabled. 

    SELINUX=disabled 
    # SELINUXTYPE= type of policy in use. Possible values are: 
    #       targeted - Only targeted network daemons are protected. 
    #       strict - Full SELinux protection. 

    SELINUXTYPE=targeted
    再重啟:
    [root@rac1 ~]#  setenforce 0
    [root@rac1 ~]#  /usr/sbin/sestatus
    [root@rac1 ~]# reboot

    2.如果第一個不能解決問題,再查看驅動是否正確.
    [root@rac1 ~]# ll
    total 2084
    drwxr
    -xr-x  2 root root    4096 Dec  5 15:37 Desktop
    -rw-r--r--  1 root root    1462 Dec  5 15:29 anaconda-ks.cfg
    -rw-r--r--  1 root root   54768 Dec  5 15:29 install.log
    -rw-r--r--  1 root root   69369 Dec  5 15:29 install.log.syslog
    -rwxrwxr-x  1 root root  330867 Dec  6 00:43 ocfs2-2.6.9-78.EL-1.2.9-1.el4.i686.rpm
    -rwxrwxr-x  1 root root 1044312 Dec  6 00:53 ocfs2-tools-1.2.7-1.el4.i386.rpm
    -rwxrwxr-x  1 root root  173056 Dec  6 00:51 ocfs2console-1.2.7-1.el4.i386.rpm
    -rwxrwxr-x  1 root root  132372 Dec  5 21:09 oracleasm-2.6.9-78.EL-2.0.5-1.el4.i686.rpm
    -rwxrwxr-x  1 root root   82542 Dec  5 21:11 oracleasm-support-2.1.3-1.el4.i386.rpm
    -rwxrwxr-x  1 root root   13105 Dec  5 21:11 oracleasmlib-2.0.4-1.el4.i386.rpm
    注意標黃色的這個驅動應該為:oracleasm-2.6.9-78.ELsmp-2.0.5-1.el4.i686.rpm..
    去oracle官網上找到該驅動并下載下來,重新安裝.
    [root@rac1 ~]# rpm -ivh oracleasm-2.6.9-78.ELsmp-2.0.5-1.el4.i686.rpm
    warning: oracleasm-2.6.9-78.ELsmp-2.0.5-1.el4.i686.rpm: V3 DSA signature: NOKEY, key ID b38a8516
    Preparing
                    ########################################### [100%]
       1:oracleasm-2.6.9-78.ELsm########################################### [100%]

    搞定:
    posted @ 2010-12-07 00:43 xrzp 閱讀(220) | 評論 (0)編輯 收藏

    ORA-12514可能的原因:
    1.主機沒有啟動數據庫
    2.主機有多個ip地址,沒在/etc/hosts中配置全
    3.監聽器配置錯誤,一勞永逸的方法是采用靜態注冊的方式

    SID_LIST_LISTENER =
      (SID_LIST 
    =
        (SID_DESC 
    =
          (SID_NAME 
    = PLSExtProc)
          (ORACLE_HOME 
    = /home/db/oracle/product/10.2.0)
          (PROGRAM 
    = extproc)
        )
        
        (SID_DESC 
    =
          (GLOBAL_DBNAME  
    = test1)
          (ORACLE_HOME 
    = /home/db/oracle/product/10.2.0)
          (SID_NAME  
    = test1)
        )
      )
    posted @ 2010-07-05 14:51 xrzp 閱讀(225) | 評論 (0)編輯 收藏
    硬解析需要更多的內存空間, 更多的并發控制對于頻繁執行的語句性能會顯著的降低,所以對相似的語句只有某些數值變化的語句改寫成完全相同的文本,我們稱其為綁定.

    手工綁定:
    EXECUTE IMMEDIATE 'UPDATE EMPLOYEE SET sal = :new_sal'  USING v_sal; 

    不綁定:
    EXECUTE IMMEDIATE 'UPDATE EMPLOYEE SET sal ='||new_sal;

    系統綁定:
    CURSOR_SHARING
    exact:文本完全相同的SQL語句才可共享cursor, exact必須精確
    force:server 端強制綁定變量
    similar:存在histogram(直方圖)時對于不同的變量值重新解析,相當于SIMILAR=EXACT, 不存時與force一樣
    posted @ 2010-06-20 21:45 xrzp 閱讀(166) | 評論 (0)編輯 收藏

    1.

    SQL> create table testlong(l1 long,id int);

    表已創建。

    SQL
    >
    SQL
    > insert into testlong values('aaaaaaaa',1);

    已創建 
    1 行。

    SQL
    > commit;

    提交完成。
    2.
    SQL>
    SQL
    > create table testcopylong as select * from testlong;
    create table testcopylong as select * from testlong
                                        
    *
    第 
    1 行出現錯誤:
    ORA
    -00997: 非法使用 LONG 數據類型
    3.
    SQL> create table testcopylong(l1 long,id int);

    表已創建。

    SQL
    > copy from scott/tiger append testcopylong using select * from testlong;
    SP2
    -0519FROM 字符串缺失 Oracle Net @database 描述
    SQL
    > copy from scott/tiger@test_10.10.10.1 append testcopylong using select * from testlong;

    數組提取
    /綁定大小為 15。(數組大小為 15)
    將在完成時提交。(提交的副本為 
    0)
    最大 
    long 大小為 80。(long 為 80)
    1 行選自 scott@test_10.10.10.1
       
    1 行已插入 TESTCOPYLONG。
       
    1 行已提交至 TESTCOPYLONG (位于 DEFAULT HOST 連接)。
    4.
    SQL> select * from testcopylong;

    L1                 ID
    ---------- ----------
    aaaaaaaa            1
    posted @ 2010-06-09 14:09 xrzp 閱讀(298) | 評論 (0)編輯 收藏
    1.查看表的使用情況的一些指標
    SELECT TABLE_NAME,--表名
           BLOCKS,--總的塊數
           EMPTY_BLOCKS,--空塊數
           PCT_FREE,--不解釋
           NUM_ROWS,--表的行數
           AVG_USED_BLOCKS,--平均使用的塊數
           CHAIN_PER,--行遷移OR行鏈接數
           GREATEST(ROUND(100 * (NVL(HWM - AVG_USED_BLOCKS, 0/
                          GREATEST(NVL(HWM, 
    1), 1)),
                          
    2),
                    
    0) WASTE_PER --浪費的百分比
      FROM (SELECT B.TABLE_NAME,
                   A.BLOCKS,
                   B.EMPTY_BLOCKS,
                   B.PCT_FREE,
                   B.NUM_ROWS,               
                   (A.BLOCKS 
    - B.EMPTY_BLOCKS - 1) HWM,
                   
    ROUND((B.AVG_ROW_LEN * NUM_ROWS * (1 + (PCT_FREE / 100))) / 8192,
                         
    0AS AVG_USED_BLOCKS,
                   
    ROUND(100 *
                         (NVL(B.CHAIN_CNT, 
    0/ GREATEST(NVL(B.NUM_ROWS, 1), 1)),
                         
    2) CHAIN_PER
            
              
    FROM DBA_SEGMENTS A, DBA_TABLES B
             
    WHERE A.OWNER = B.OWNER
               
    AND A.SEGMENT_NAME = B.TABLE_NAME
                  
    --AND A.SEGMENT_TYPE = 'TABLE'
               AND A.TABLESPACE_NAME = B.TABLESPACE_NAME
               
    AND B.TABLESPACE_NAME = '表空間名字')

    2.其中的8192可以查DBA_TABLESPACES (TS$)獲取
    SELECT T.TABLESPACE_NAME,T.BLOCK_SIZE FROM DBA_TABLESPACES T

    posted @ 2010-06-04 15:01 xrzp 閱讀(228) | 評論 (0)編輯 收藏
    Oracle 10g默認的歸檔日志存放在flash_recovery_area,如果歸檔日志超過了默認值的大小,則會報ORA-16014的錯誤.

    1.出錯
    SQL*Plus: Release 10.2.0.2.0 - Production on Sun May 30 10:32:43 2010

    Copyright (c) 
    19822005, Oracle.  All Rights Reserved.


    Connected 
    to:
    Oracle 
    Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining options
    SQL
    > startup mount
    ORACLE instance started.

    Total System Global Area  
    285212672 bytes
    Fixed Size                  
    1260396 bytes
    Variable Size              
    96470164 bytes
    Database Buffers          180355072 bytes
    Redo Buffers                
    7127040 bytes
    Database mounted.
    SQL
    > alter database open
      
    2  /
    alter database open
    *
    ERROR at line 
    1:
    ORA
    -16014log 1 sequence# 86 not archived, no available destinations
    ORA
    -00312: online log 1 thread 1'/u01/app/oracle/oradata/orcl/redo01.log'


    2.查看歸檔日志區的大小
    SQL> show parameter db_rec

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest                string      /u01/app/oracle/flash_recovery
                                                     _area
    db_recovery_file_dest_size           big 
    integer 2G
    db_recycle_cache_size                big 
    integer 0

    3.檢查flash recovery area的使用情況
    SQL> select * from v$flash_recovery_area_usage;

    FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
    ------------ ------------------ ------------------------- ---------------
    CONTROLFILE                   0                         0               0
    ONLINELOG                     
    0                         0               0
    ARCHIVELOG                
    98.77                         0              52
    BACKUPPIECE                   
    0                         0               0
    IMAGECOPY                     
    0                         0               0
    FLASHBACKLOG                  
    0                         0               0

    6 rows selected.

    SQL
    > select sum( PERCENT_SPACE_USED )*3/100 from v$flash_recovery_area_usage;

    SUM(PERCENT_SPACE_USED)*3/100
    -----------------------------
                           2.9631


    4.計算后,發現使用了2.96G>2G,將值設為4G,重新啟動,成功
    SQL> alter system set db_recovery_file_dest_size =4G;

    System altered.

    SQL
    > alter database open;

    Database altered.

    SQL
    >
    posted @ 2010-05-30 13:02 xrzp 閱讀(752) | 評論 (0)編輯 收藏
    1. create user aaa identified by 123 123需要用引號
    2. 查看當前有什么權限,查看session_privs
    3. 查看當前有什么角色,查看session_roles
    4. 讓用戶的口令失效alter user xxx password expire
    5. 回收的系統權限不遞歸,對象權限會級聯
    6. create database時,如果文件已經存在,不能直接覆蓋原來文件,使用REUSE語句
    7. alter system disable/enable restricted session;

    posted @ 2010-05-23 21:37 xrzp 閱讀(147) | 評論 (0)編輯 收藏
    僅列出標題
    共11頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 

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

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    好友的blog

    搜索

    •  

    積分與排名

    • 積分 - 117390
    • 排名 - 500

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本免费大黄在线观看| 中文字幕免费在线看电影大全| 五月亭亭免费高清在线| 亚洲免费精彩视频在线观看| 全部免费毛片在线播放| 久久青青草原亚洲av无码app| 国产精品免费高清在线观看| 伊人久久综在合线亚洲2019| 84pao强力永久免费高清| 久久亚洲美女精品国产精品 | 亚洲乱码一二三四五六区| 亚洲电影免费观看| 亚洲日产乱码一二三区别| 国产精品嫩草影院免费| 永久免费无码网站在线观看个| 亚洲中文字幕无码不卡电影| 日本免费在线观看| 久久亚洲最大成人网4438| 国产又黄又爽又猛的免费视频播放| 免费人成再在线观看网站 | 亚洲不卡在线观看| 日韩a级毛片免费视频| 一级做a爰性色毛片免费| 亚洲VA中文字幕不卡无码| 国产电影午夜成年免费视频| 亚洲熟伦熟女专区hd高清| 免费A级毛片无码A| 久久久精品免费国产四虎| 亚洲H在线播放在线观看H| 国产gav成人免费播放视频| 91视频免费网站| 亚洲色无码国产精品网站可下载| 免费一级毛片正在播放| 无码中文字幕av免费放dvd| 亚洲中文字幕无码久久2020| 久久精品国产亚洲5555| 免费视频爱爱太爽了| 四虎一区二区成人免费影院网址| 综合偷自拍亚洲乱中文字幕| 亚洲国产电影av在线网址| 99精品国产成人a∨免费看|