Oracle常用指令碼
阿新 • • 發佈:2021-08-30
1.檢視SQL執行計劃
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('75n7rjsypwy7w',NULL,'Advanced'))
2.檢視會話執行過的sql
select * from v$open_cursor where sid=xxx;
3.檢視資料庫中表大小
/* Formatted on 2021-08-30 上午 10:00:23 (QP5 v5.163.1008.3004) */ SELECT * FROM ( SELECT OWNER, SEGMENT_NAME, ROUND (SUM (BYTES) / 1024 / 1024 / 1024, 2) SIZEG FROM DBA_SEGMENTS WHERE SEGMENT_TYPE IN ('TABLE PARTITION', 'TABLE') --AND OWNER LIKE '%MONKEY%' GROUP BY OWNER, SEGMENT_NAME) WHERE SIZEG > 5
4.檢視隱含引數
SELECT x.ksppinm name, y.ksppstvl VALUE, y.ksppstdf isdefault, DECODE (BITAND (y.ksppstvf, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE') ismod, DECODE (BITAND (y.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadj FROM sys.x$ksppi x, sys.x$ksppcv y WHERE x.inst_id = USERENV ('Instance') AND y.inst_id = USERENV ('Instance') AND x.indx = y.indx and x.ksppinm ='_kgl_hot_object_copies' --ORDER BY TRANSLATE (x.ksppinm, ' _', ' ')
5.新增ID欄位並賦值
--使用ROWID進行,表很大的時候使用 DECLARE V_COUNT NUMBER := 0; V_ROWID VARCHAR2 (200); BEGIN FOR r IN (SELECT ROWIDTOCHAR (ROWID) v_rowid, a.* FROM MONKEY.TEST01 a) LOOP UPDATE MONKEY.TEST01 SET id = MONKEY.TEST01_SEQ.NEXTVAL WHERE ROWID = r.v_rowid; V_COUNT := V_COUNT + 1; IF V_COUNT = 50000 THEN V_COUNT := 0; COMMIT; END IF; END LOOP; COMMIT; END; / --小表的時候使用 UPDATE MONKEY.TEST01 SET ID = MONKEY.TEST01_SEQ.NEXTVAL; COMMIT;