找到關於 Oracle 的 61 篇文章
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 ... 閱讀更多
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, ... 閱讀更多
987 次瀏覽
問題:您想將 GROUPING() 與 ROLLUP、CUBE 和 SETS 函式一起使用。解決方案:GROUPING() 函式接受一個列並返回 0 或 1。當列值為 null 時,此函式返回 1;當列值為非 null 時,返回 0。但是,GROUPING() 僅用於使用 ROLLUP 或 CUBE 的查詢中。當您希望在返回 null 時顯示一個值時,GROUPING() 非常有用。ROLLUP 中的單個列的 GROUPING() 將列傳遞給 ROLLUP 的 SQL 下面的示例中的最後一行將生成費用的總計/總和。此總計表示為 ... 閱讀更多
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 ;當您遇到效能問題時 ... 閱讀更多
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 ... 閱讀更多
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 ... 閱讀更多
2K+ 次瀏覽
問題:您的查詢在多個表上具有 JOIN 條件,並且存在效能問題,並且 Oracle 最佳化器沒有選擇您想要的連線順序。解決方案:Oracle 有兩個提示,ORDERED 提示和 LEADING 提示,可用於影響查詢中使用的連線順序。ORDERED 提示您正在執行一個 SQL 來連線兩個表 student 和 departments,因為您想獲取每個學生的部門名稱。透過將 ORDERED 提示放入查詢中,您可以看到提示如何改變執行訪問路徑。示例EXPLAIN PLAN FOR SELECT first_name, department_name FROM students e, departments ... 閱讀更多
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP