使用 DBA Studio:歷程 → 資料庫 → 歸檔查看;或查詢 V$DATABASE 的 LOG_MODE 欄位。
#include,引入另一參數檔STARTUP 後僅能指定 PFILE。
SELECT * FROM EMPLOYEE WHERE ROWNUM < N ORDER BY EMPNO;
SHOW PARAMETER PROCESSES;
一般不可修改,不建議嘗試。
SELECT (SELECT COUNT(ID) FROM AA) + (SELECT COUNT(ID) FROM BB) 總數 FROM DUAL;
SELECT * FROM (
SELECT T.*, DENSE_RANK() OVER (ORDER BY SAL) RANK FROM EMPLOYEE
) WHERE RANK = N;
-- 加 2 年
SELECT ADD_MONTHS(SYSDATE, 24) FROM DUAL;
屬無害現象,可忽略。
指 TNSNAMES.ORA 中服務名稱後的連線描述字串。
建立臨時 Redo Log Group → 切換日誌 → 刪除舊日誌 → 建立新日誌。
無限制。
SELECT CEIL(N) FROM DUAL; -- 大於等於 N 的最小整數
SELECT FLOOR(N) FROM DUAL; -- 小於等於 N 的最大整數
SELECT LAST_DAY(SYSDATE) FROM DUAL;
IMP SYSTEM/MANAGER FILE=AA.DMP FROMUSER=USER_OLD TOUSER=USER_NEW ROWS=Y INDEXES=Y
SELECT * FROM USER_CONSTRAINTS
WHERE CONSTRAINT_TYPE='P' AND TABLE_NAME='TABLE_NAME';
INTERSECT -- 交集
UNION -- 聯集 (去重)
UNION ALL -- 聯集 (保留重複)
MINUS -- 差集
CREATE SEQUENCE SEQ_CUSTID START WITH 1 INCREMENT BY 1;
-- 建表時
CREATE TABLE CUST (CUST_ID SMALLINT NOT NULL, ...);
-- 插入時
INSERT INTO CUST VALUES (SEQ_CUSTID.NEXTVAL, ...);
| 需求 | 語法範例 |
|---|---|
| 年份 | TO_CHAR(SYSDATE,'YYYY') |
| 月份 | TO_CHAR(SYSDATE,'MM') |
| 日期 | TO_CHAR(SYSDATE,'DD') |
| 小時(24制) | TO_CHAR(SYSDATE,'HH24') |
| 分鐘 | TO_CHAR(SYSDATE,'MI') |
| 秒數 | TO_CHAR(SYSDATE,'SS') |
| 純日期(無時間) | TRUNC(SYSDATE) |
| 純時間 | TO_CHAR(SYSDATE,'HH24:MI:SS') |
| 日期轉字串 | TO_CHAR(SYSDATE) |
| 字串轉日期 | TO_DATE('2003/08/01') |
| 星期幾(1-7) | TO_CHAR(SYSDATE,'D') |
| 年中第幾天 | TO_CHAR(SYSDATE,'DDD') |
| 午夜至今秒數 | TO_CHAR(SYSDATE,'SSSSS') |
| 年中第幾週 | TO_CHAR(SYSDATE,'WW') |
CURRVAL / NEXTVAL:Sequence 當前/下一值ROWNUM:查詢結果排序序號ROWID:資料列物理位址DECLARE
N NUMBER := 1000000;
RET VARCHAR2(100);
BEGIN
RET := TRUNC(N/3600) || '小時' ||
TO_CHAR(TO_DATE(MOD(N,3600),'SSSSS'),'FMMi"分 "SS"秒"');
DBMS_OUTPUT.PUT_LINE(RET);
END;
-- 大排序進程
SELECT B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS,
A.SID, A.SERIAL#, A.USERNAME, A.OSUSER, A.STATUS
FROM V$SESSION A, V$SORT_USAGE B
WHERE A.SADDR = B.SESSION_ADDR
ORDER BY B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS;
-- 該進程 SQL 全文
SELECT /*+ ORDERED */ SQL_TEXT
FROM V$SQLTEXT A
WHERE A.HASH_VALUE = (
SELECT SQL_HASH_VALUE FROM V$SESSION B
WHERE B.SID = &SID AND B.SERIAL# = &SERIAL
)
ORDER BY PIECE ASC;
-- 查找
SELECT * FROM TABLE_NAME
WHERE ROWID != (SELECT MAX(ROWID) FROM TABLE_NAME D
WHERE TABLE_NAME.COL1 = D.COL1
AND TABLE_NAME.COL2 = D.COL2);
-- 刪除
DELETE FROM TABLE_NAME
WHERE ROWID != (SELECT MAX(ROWID) FROM TABLE_NAME D
WHERE TABLE_NAME.COL1 = D.COL1
AND TABLE_NAME.COL2 = D.COL2);