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

          1.NESTED LOOP

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


          2.HASH JOIN

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


          3.SORT MERGE JOIN

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

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

          5.星形

          常用于OLAP系統(tǒng)

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


          可能的問題:
          1.linux的selinux沒有關(guān)閉
          2.驅(qū)動不對.

          1.關(guān)閉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.如果第一個不能解決問題,再查看驅(qū)動是否正確.
          [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
          注意標(biāo)黃色的這個驅(qū)動應(yīng)該為:oracleasm-2.6.9-78.ELsmp-2.0.5-1.el4.i686.rpm..
          去oracle官網(wǎng)上找到該驅(qū)動并下載下來,重新安裝.
          [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 閱讀(221) | 評論 (0)編輯 收藏

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

          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 閱讀(227) | 評論 (0)編輯 收藏
          硬解析需要更多的內(nèi)存空間, 更多的并發(fā)控制對于頻繁執(zhí)行的語句性能會顯著的降低,所以對相似的語句只有某些數(shù)值變化的語句改寫成完全相同的文本,我們稱其為綁定.

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

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

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

          1.

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

          表已創(chuàng)建。

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

          已創(chuàng)建 
          1 行。

          SQL
          > commit;

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

          表已創(chuàng)建。

          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;

          數(shù)組提取
          /綁定大小為 15。(數(shù)組大小為 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 閱讀(300) | 評論 (0)編輯 收藏
          1.查看表的使用情況的一些指標(biāo)
          SELECT TABLE_NAME,--表名
                 BLOCKS,--總的塊數(shù)
                 EMPTY_BLOCKS,--空塊數(shù)
                 PCT_FREE,--不解釋
                 NUM_ROWS,--表的行數(shù)
                 AVG_USED_BLOCKS,--平均使用的塊數(shù)
                 CHAIN_PER,--行遷移OR行鏈接數(shù)
                 GREATEST(ROUND(100 * (NVL(HWM - AVG_USED_BLOCKS, 0/
                                GREATEST(NVL(HWM, 
          1), 1)),
                                
          2),
                          
          0) WASTE_PER --浪費(fèi)的百分比
            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 閱讀(231) | 評論 (0)編輯 收藏
          Oracle 10g默認(rèn)的歸檔日志存放在flash_recovery_area,如果歸檔日志超過了默認(rèn)值的大小,則會報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.查看歸檔日志區(qū)的大小
          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.計算后,發(fā)現(xiàn)使用了2.96G>2G,將值設(shè)為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 閱讀(754) | 評論 (0)編輯 收藏
          1. create user aaa identified by 123 123需要用引號
          2. 查看當(dāng)前有什么權(quán)限,查看session_privs
          3. 查看當(dāng)前有什么角色,查看session_roles
          4. 讓用戶的口令失效alter user xxx password expire
          5. 回收的系統(tǒng)權(quán)限不遞歸,對象權(quán)限會級聯(lián)
          6. create database時,如果文件已經(jīng)存在,不能直接覆蓋原來文件,使用REUSE語句
          7. alter system disable/enable restricted session;

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

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

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          好友的blog

          搜索

          •  

          積分與排名

          • 積分 - 117468
          • 排名 - 500

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 迭部县| 平乐县| 永胜县| 和龙市| 汉阴县| 新平| 阳高县| 广河县| 新疆| 涿鹿县| 潼南县| 娄底市| 黑龙江省| 罗城| 巴东县| 广平县| 湖南省| 高陵县| 绍兴市| 五家渠市| 大渡口区| 科技| 泉州市| 德阳市| 若尔盖县| 磴口县| 义乌市| 莱芜市| 灵宝市| 平舆县| 保靖县| 永州市| 大渡口区| 巫山县| 廉江市| 牡丹江市| 大兴区| 永川市| 正镶白旗| 墨玉县| 德州市|