摘要:新晉技術專家下面是墨天輪部分新晉的技術專家。大家可以點擊往期閱讀墨天輪技術專家邀請函了解詳情,申請成為我們的技術專家,加入專家團隊,與我們一起創建一個開放互助的數據庫技術社區。新關聯公眾號墨天輪是一個開放互助的數據庫技術社區。
引言
近期我們在DBASK小程序增加了數據庫 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的專題欄目和一些新的技術專家,另外,也新關聯了技術閑談、OB、架構文摘、51CTO技術棧等等數據領域的公眾號,歡迎大家閱讀分享。
新晉技術專家
下面是墨天輪DBASK部分新晉的技術專家。大家可以點擊往期閱讀《墨天輪DBASK技術專家邀請函》了解詳情,申請成為我們的技術專家,加入專家團隊,與我們一起創建一個開放互助的數據庫技術社區。
新關聯公眾號
墨天輪DBASK是一個開放互助的數據庫技術社區。所以,我們也新關聯了技術閑談、OB、架構文摘、51CTO技術棧等等數據領域的公眾號,方便大家的閱讀。如果有和數據相關的公眾號,有文章轉載合作的需求,可以留言聯系小編哦~
問答集萃
接下來,我們分享本期整理出的問題和診斷總結,供大家參考學習,詳細的診斷分析過程可以通過標題鏈接跳轉到小程序中查看。
問題一、總結不走索引的常見情況
請問SQL什么情況下不走索引,幫忙總結一下。
診斷結論:1、謂詞中出現NULL過濾條件;2、謂詞中出現函數轉換導致沒有走索引;3、統計信息不準確;4、在WEHRE條件中like中關鍵字兩邊都有"%";5、查詢條件值與列類型不一致;6、查詢條件列進行數學運算;7、索引列在 IN 或者多個 OR 語句中;8、是否使用的是不可見索引等。
問題二、sid和服務名,和tns別名的區別
sid和服務名,和tns別名的區別。之間是如何區分的?
診斷結論:拿兩節點RAC的情況說明下吧:db1/db2為兩個節點的sid,是兩個節點數據庫實例的唯一名稱,與instance_name參數一致分別為db1/db2;db為服務名,方便應用連接數據庫,與service_name參數一致兩個節點為db;tns別名為在tnsnames.ora文件中自定義的別名,應用使用此別名連接數據庫,如連接字符串為db,tns別名設置為crmdb,應用連接直接使用crmdb即可,方便辨別。
問題三、oracle DG failover后更改flashback操作的并行度
我這邊遇到一個問題,想改變DG在failover后主庫進行的flashback操作時的并行度,就是主庫執行flashback to scn xxxxxx的命令所默認的并行度。我們觀察到默認是128的parallel,但是由于某些原因,我們可能需要降低并行度,請問有什么參數可以控制嗎?
我在網上到處都找不到相關文章,也無法從專業書籍里找到類似的研究。
診斷結論:經測試,flashback的并行度默認受CPU_COUNT參數控制。
問題四、MySQL體系結構中一直說也有SGA和PGA,請問具體位置在哪?
MySQL 體系結構中一直說也有 SGA 和 PGA,5.7 的官方文檔也沒有描述,那請問是在 InnoDB 中,還是具體位置在哪?
診斷結論:一般而言,如果對應于Oracl的這兩個對應概念,SGA指的是以Innodb buffer pool,innodb字典,frm緩存等公用緩存組合出來的內存區域。PGA指的是以sort buffer,binlog buffer等線程專用內存組合成的內存區域。
問題五、oracle 11g支持IPV6嗎?
公司最近在做IPV6的改造方案,我想問下對現有oracle數據庫會有什么影響嗎?公司主要用oracle11g和oracle12c。
診斷結論:11gr2支持單節點使用ipv6,12cR1支持public IP的ipv6(內聯不支持),12cR2完全支持。
問題六、move表后,表空間可用300G,但是無法resize
由于磁盤組冗余度不符合安全要求,對各表空間(Bigfile)進行清理后嘗試做數據文件的resize操作,過程如下:
1、新建表空間,作為數據中轉用
2、MOVE大部分表(90%)至其新建表空間后MOVE回原有表空間,從而減少數據庫碎片
3、收縮對應的數據文件在MOVE回原有表空間后重建相關索引,統計發現可用空間提高40G左右,有效的減少了碎片
但是無法resize數據文件到MOVE之后的大小。
診斷結論:實際上按照你的操作思路,可以move 100%的表都去另外一個表空間,然后直接drop掉原有表空間就可以了。如果存在沒MOVE表的EXTENTS已經擴展到了數據文件的邊緣,是沒辦法resize的。
問題七、如何快速預估表的行數
請問有哪些方法可以快速預估表的行數?
診斷結論:1、并行查詢count(*);2、統計信息num_rows字段;3、sample block() 取樣查詢。
問題八、RAC配置多個public網絡
現在有一個需求,客戶有兩個網絡,都需要連接數據庫,需要配置兩個public網絡,請問如何配置。
診斷結論:首先官方建議不要在安裝Oracle時配置多個public網絡,等集群安裝完之后再通過命令去添加public網絡,測試步驟詳見小程序文章。
問題九、關于分區表全局分區索引和全局不分區索引的效率
按月分區的分區表,單個分區表記錄大約1500萬,對于非分區鍵上的索引來說,是建全局分區索引還是不分區索引效率高?分區索引按照列HASH分區還是有其它方式?
專家解答:LOCAL索引的最大好處是在進行分區操作,比如TRUNCATE PARTITION, DROP PARTITION時,不會出現索引INVALID的情況,不影響索引的可用性。由于GLOBAL索引所有的數據存儲在一起,因此當執行分區操作的時候,索引會失效,而如果想要保證所有的有效性,需要增加UPDATE (GLOBAL) INDEXES語句,這使得原本很快結束的DDL操作,由于需要維護全局索引而變得非常緩慢,且產生大量的日志。12c之后,全局索引的異步同步可以緩解全局索引的這個問題。
而GLOBAL索引的好處是,在表變為分區后,只要索引仍然是GLOBAL索引,通過索引訪問數據的效率就不會下降。由于LOCAL索引的索引分區數量和表分區數量相等,如果訪問一個LOCAL索引,且查詢條件未指定分區鍵值,這時Oracle將會掃描所有的索引分區。而GLOBAL索引則只需要訪問一棵索引樹,當分區數量眾多時,二者的效率差異是非常明顯的。
當然,它們還有其他的區別。就用戶而言,判斷需要GLOBAL還是LOCAL索引,最主要看是否會頻繁進行分區的維護操作,比如定期刪除老分區,如果是的話,LOCAL是最佳選擇,如果不是,則考慮GLOBAL索引。
問題十、同樣的SQL,變量不同執行計劃不一樣
一條相似的SQL語句,變量值不同,執行計劃不同。SQL如下:
select order_no from OWNER.TAB_NAME where pa_id = "10221178" and ORDER_TIME > SYSDATE - 120;(異常)select order_no from OWNER.TAB_NAME where pa_id = "10221178" and ORDER_TIME > SYSDATE - 150
診斷結論:120的trc文件可以看到成本最低的是bit map and的執行路徑,120的trc文件可以看到成本最低的是bit map and的執行路徑。至于為什么兩個執行計劃不一樣,應該和IDX_XXX索引選擇率變化導致bit map的成本增加有關。
問題十一、oralce 11g RAC 系統時間同步問題
oralce 11g RAC 系統時間慢慢的就比正常時間慢了,如何解決呢,rac節點之間時間是同步的,但是比實際時間慢出30分鐘,這個問題如何避免呢,rac本身自帶了時間同步的服務,還可以在外面再加ntp服務嗎?
診斷結論:一般都是在兩節點開啟NTP服務,同步外部NTP服務器的時間,實踐中都是配置NTP服務。如果啟用NTP服務,集群自己的ctss服務會停止,沒有影響。如果需要啟用NTP,特殊情況下可能會導致節點重啟,保險起見,可以到下次停機窗口一起變更。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39039.html
閱讀 1624·2021-11-11 10:59
閱讀 2628·2021-09-04 16:40
閱讀 3663·2021-09-04 16:40
閱讀 2982·2021-07-30 15:30
閱讀 1621·2021-07-26 22:03
閱讀 3169·2019-08-30 13:20
閱讀 2230·2019-08-29 18:31
閱讀 442·2019-08-29 12:21