在SQL語句最佳化過程中,我們經常會用到hint,現總結一下在SQL最佳化過程中常見Oracle HINT的用法:1. /*+ALL_ROWS*/表明對語句塊選擇基於開銷的最佳化方法,並獲得最佳輸送量,使資源消耗最小化。例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';2. /*+FIRST_ROWS*/表明對語句塊選擇基於開銷的最佳化方法,並獲得最佳回應時間,使資源消耗最小化。例如:
Oracle在啟用使用者的角色時,最多允許啟用148個。其實這個限制比較奇怪,因為148與2的冪相差較大,不知道Oracle出於什麼原因確定的這個值:SQL> CREATE USER U_ROLE IDENTIFIED BY U_PASSWORD;使用者已建立。SQL> GRANT CREATE ROLE TO U_ROLE;授權成功。SQL> GRANT CREATE SESSION TO U_ROLE;授權成功。SQL> CONN
暫存資料表的redo產生要比普通表少的多,但是undo的產生並不比普通表少。通過一個簡單的例子說明:SQL> create global temporary table t_temp2 (id number, name varchar2(30))3 on commit preserve rows;表已建立。SQL> create table t_normal2 (id number, name varchar2(30));表已建立。SQL>
dbms_metadata.get_ddl()用於擷取對象的DDL,其具體用法如下。注意:在sqlplus裡,為了更好的展示DDL,需要設定如下參數:set line 200 set pagesize 0 set long 99999 set feedback offset echo off1)獲得表、索引、視圖、預存程序、函數的DDLselect dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER') from dual;
Data Guard主從庫之間的角色切換分為以下兩種:1) SwitchoverSwithchover通常都是人為的有計劃的進行角色互換,比如升級等。它通 常都是無損的,即不會有資料丟失。其執行主要分為兩個階段:Primary轉為StandbyStandby(之一)轉為Primary2)FailoverFailover是指由於Primary故障無法短時間恢複,Standby不得不充當 Primay的角色,如果處於最高效能模式,這種切換很有可能導致資料丟失。下面分別