找到關於 Oracle 的 61 篇文章

如何在 Oracle 中監控臨時表空間的使用情況?

Kiran P
更新於 2020年12月5日 05:58:55

9K+ 次瀏覽

問題:您想監控 Oracle 中臨時表空間的使用情況。解決方案:我們可以使用以下查詢來查詢臨時表空間中已使用和空閒的空間。我們將首先確定臨時表空間的名稱。示例SELECT tablespace_name FROM dba_tablespaces WHERE contents = 'TEMPORARY';輸出TEMP接下來,我們將使用以下 SQL 來確定臨時表空間中已使用和空閒的空間。示例SELECT * FROM   (SELECT a.tablespace_name,     SUM(a.bytes/1024/1024) allocated_mb   FROM dba_temp_files a   WHERE a.tablespace_name = 'TEMP'   GROUP BY a.tablespace_name   ) x,   (SELECT SUM(b.bytes_used/1024/1024) used_mb,     SUM(b.bytes_free      /1024/1024) free_mb   FROM v$temp_space_header b ... 閱讀更多

如何在 Oracle 資料庫中識別最近的等待事件?

Kiran P
更新於 2020年12月5日 05:57:43

8K+ 次瀏覽

問題:您想找出資料庫中最近的重要等待事件,以及導致這些等待事件的大部分使用者、SQL 語句和物件。解決方案:Oracle 提供了 V$ACTIVE_SESSION_HISTORY 來獲取有關最常見等待事件以及導致這些等待事件的 SQL 語句、資料庫物件和使用者的資訊。查詢等待事件的 SQL 示例SELECT event,   SUM(wait_time + time_waited) total_wait_time FROM v$active_session_history GROUP BY event ORDER BY total_wait_time DESC;要找出經歷最多等待的使用者,我們可以使用以下 SQL。示例SELECT s.sid,   s.username,   SUM(a.wait_time + a.time_waited) total_wait_time FROM v$active_session_history a,   ... 閱讀更多

如何在 Oracle 中識別阻塞和被阻塞的會話?

Kiran P
更新於 2020年12月5日 05:56:52

24K+ 次瀏覽

問題:您想識別資料庫中阻塞和被阻塞的會話。解決方案:當我們在 Oracle 資料庫中看到排隊等待事件時,很可能有一些東西正在鎖定或阻止某些會話執行其 SQL 語句。當會話等待“排隊”等待事件時,該會話正在等待由另一個會話持有的鎖。我們可以發出以下命令來檢視有關 Oracle 中阻塞和被阻塞會話的資訊。示例SELECT DECODE(request, 0, 'Holder: ', 'Waiter: ') || sid sess,   id1,   id2,   lmode,   request, ... 閱讀更多

如何在 Oracle 中使用分組子句處理 NULL 值?

Kiran P
更新於 2020年12月5日 05:55:47

987 次瀏覽

問題:您想將 GROUPING() 與 ROLLUP、CUBE 和 SETS 函式一起使用。解決方案:GROUPING() 函式接受一個列並返回 0 或 1。當列值為 null 時,此函式返回 1;當列值為非 null 時,返回 0。但是,GROUPING() 僅用於使用 ROLLUP 或 CUBE 的查詢中。當您希望在返回 null 時顯示一個值時,GROUPING() 非常有用。ROLLUP 中的單個列的 GROUPING() 將列傳遞給 ROLLUP 的 SQL 下面的示例中的最後一行將生成費用的總計/總和。此總計表示為 ... 閱讀更多

如何在 Oracle 中識別等待時間最長的 SQL 查詢?

Kiran P
更新於 2020年12月5日 07:15:11

2K+ 次瀏覽

問題:您想確定導致資料庫中等待時間最長的 SQL 語句。解決方案:我們可以使用以下 SQL 語句來識別導致問題的 SQL。以下查詢將對過去 30 分鐘內執行的 SQL 語句進行排名,並根據每個查詢的總等待時間顯示它們。示例SELECT ash.user_id,   u.username,   s.sql_text,   SUM(ash.wait_time + ash.time_waited) ttl_wait_time FROM v$active_session_history ash,   v$sqlarea s,   dba_users u WHERE ash.sample_time BETWEEN sysdate - 60/2880 AND sysdate AND ash.sql_id  = s.sql_id AND ash.user_id = u.user_id GROUP BY ash.user_id,   s.sql_text,   u.username ORDER BY ttl_wait_time ;當您遇到效能問題時 ... 閱讀更多

如何在 Oracle 中收集擴充套件的查詢執行統計資訊?

Kiran P
更新於 2020年12月5日 05:52:55

412 次瀏覽

問題:您想為特定查詢收集擴充套件的解釋計劃統計資訊。解決方案:我們可以使用 GATHER_PLAN_STATISTICS 提示。此提示在執行時放置在查詢中時,將生成擴充套件的執行時統計資訊。它基本上有兩個步驟。使用 gather_plan_statistics 提示執行查詢。使用 dbms_xplan.display_cursor 顯示結果。示例SELECT /*+ gather_plan_statistics */       city,       round(avg(fees)) avg_fees,       min(fees) min_fees,       max(fees) max_fees  FROM students e, departments d, locations l WHERE e.department_id = d.department_id   AND l.location_id = d.location_id GROUP BY city;輸出Southlake   5760    4200    9000 Seattle     10701   6900 ... 閱讀更多

如何在 Oracle 中更改 JOIN 方法?

Kiran P
更新於 2020年12月5日 05:49:23

469 次瀏覽

問題:您的查詢在多個表上具有 JOIN 條件,並且存在效能問題,您希望透過在查詢中放置相應的提示來覆蓋連線型別。解決方案:有三種可能的連線型別:巢狀迴圈、雜湊和排序合併。巢狀迴圈連線提示:要呼叫巢狀迴圈連線,請使用 USE_NL 提示示例EXPLAIN PLAN FOR SELECT /*+ use_nl(students, departments)  */  first_name, department_name   FROM students e, departments d  WHERE e.department_id = d.department_id;   SELECT * FROM table(DBMS_XPLAN.DISPLAY (FORMAT=>'BASIC'));輸出---------------------------------------------------------- | Id  | Operation                    | Name             ... 閱讀更多

如何在 Oracle 中更改 JOIN 順序?

Kiran P
更新於 2020年12月4日 11:07:18

2K+ 次瀏覽

問題:您的查詢在多個表上具有 JOIN 條件,並且存在效能問題,並且 Oracle 最佳化器沒有選擇您想要的連線順序。解決方案:Oracle 有兩個提示,ORDERED 提示和 LEADING 提示,可用於影響查詢中使用的連線順序。ORDERED 提示您正在執行一個 SQL 來連線兩個表 student 和 departments,因為您想獲取每個學生的部門名稱。透過將 ORDERED 提示放入查詢中,您可以看到提示如何改變執行訪問路徑。示例EXPLAIN PLAN FOR SELECT first_name, department_name   FROM students e, departments ... 閱讀更多

如何在 Oracle 中從資料字典表生成資料模型?

Kiran P
更新於 2020年12月5日 06:32:29

1K+ 次瀏覽

問題:您想從 Oracle 中的資料字典表生成資料模型解決方案:Oracle 資料字典是表和相關檢視的集合,使我們能夠檢視 Oracle 資料庫的結構。透過查詢這些表和檢視,我們可以獲取有關資料庫的每個物件和每個使用者的資訊。簡介資料字典包含一系列由 SYS 使用者擁有的檢視。這些檢視稱為靜態資料字典檢視,它們顯示包含在表中的資訊,這些資訊在 Oracle 處理資料定義語言 (DDL) 語句時會更新。還有一組稱為 ... 閱讀更多

如何在 Oracle 中使用 Union ALL 和 Insert ALL 生成資料?

Kiran P
更新於 2020年12月4日 11:02:22

1K+ 次瀏覽

問題:您想知道 Union ALL 和 Insert ALL 之間的區別,以便生成少量資料。解決方案:我最近一直在生成少量資料來測試某些功能,並發現了 Oracle 中的幾個選項。Union All 和 Insert All 是在 Oracle 中生成少量資料時常用的兩個選項。Oracle 中最常見的集合運算子是 UNION 和 UNION ALL。這些運算子用於組合資料集,即使這些資料集之間沒有關係也是如此。UNION 建立一個不同的集合,而 UNION ALL 允許重複。刪除重複項可能會 ... 閱讀更多

廣告
© . All rights reserved.