1. 权限传递:
系统权限传递:with admin option
对象权限传递:with grant option
2. 查看package的所有方法:
DESC DBMS_WORKLOAD_REPOSITORY;
3. 查看AWR setting
select * from dba_hist_wr_control;
4. package, procedure, function
function有返回值,有参数;
procedure无返回值,有参数;
package可包括function,procedure
package中只有各个方法的定义,package body中涉及具体的实现。
5. 块
DECLARE v_object_id NUMBER(4); v_object_type VARCHAR2(10); BEGIN v_object_type := '&TYPE'; SELECT OBJECT_ID INTO V_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = 'DBA_HIST_WR_CONTROL' AND OBJECT_TYPE = v_object_type; dbms_output.put_line(v_object_id); END;
6. 使用sqlplus 的时候,密码中有特殊字符。
./sqlplus 'user/"#Ee_l!f832"'@SID
7. Wait event
"DFS lock handle": (due to ordered)
"row cache lock": (due to cache size too small)
8. Select space usage for each tablespaces
SELECT A.TABLESPACE_NAME,TOTAL,FREE,(TOTAL-FREE) USDED,ROUND((TOTAL-FREE)/TOTAL,4)*100 "USAGE %" FROM (SELECT TABLESPACE_NAME,SUM(BYTES) FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME ) A, (SELECT TABLESPACE_NAME,SUM(BYTES) TOTAL FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) B WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME ORDER BY TABLESPACE_NAME;
9. 转义 单引号
SELECT CHR(39) FROM DUAL;
select Q'[']' from dual;
10. BULK COLLECT & FORALL
DECLARE TYPE TYPE_INVST_ACCT_NUM IS TABLE OF TMP_SH_ACCT.INVST_ACCT_NUM%TYPE INDEX BY BINARY_INTEGER; V_INVST_ACCT_NUM TYPE_INVST_ACCT_NUM; BEGIN SELECT INVST_ACCT_NUM BULK COLLECT INTO V_INVST_ACCT_NUM FROM TMP_SH_ACCT WHERE FUNCTION_TYPE = 'GFIX_EXEC'; FORALL i IN V_INVST_ACCT_NUM.first..V_INVST_ACCT_NUM.last EXECUTE IMMEDIATE 'BEGIN SC_PRODUCT_CODE_RANDOM(:1, 1);END;' USING V_INVST_ACCT_NUM(i); COMMIT; END; /
11. 最高效的删除重复记录方法 (因为使用了ROWID)例子:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); 12. AWR report
SELECT * FROM DBA_HIST_SNAPSHOT ORDER BY BEGIN_INTERVAL_TIME desc; SELECT OUTPUT FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(2503047371,'1','110345','110346')); SELECT OUTPUT FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_SQL_REPORT_HTML(2503047371,'1','110345','110346','d72f1bx3vsv1t'));
13. Java calls function & stored procedure.
# Stored procedure CallableStatement ctmt = conn.prepareCall("{call TESTP()}"); CallableStatement ctmt = conn.prepareCall("{call TESTP(?)}"); ctmt.registerOutParameter(1, Types.VARCHAR); # Function PreparedStatement stmt = conn.prepareStatement("SELECT TESTF() FROM dual"); CallableStatement ctmt = conn.prepareCall("{? = call TESTF}"); ctmt.registerOutParameter(1, Types.VARCHAR);