摘要:查詢 oracle 數(shù)據(jù)庫新添加的表有三種方法:使用數(shù)據(jù)字典視圖:查詢 dba_objects 視圖,指定時間范圍篩選。使用閃回查詢:使用 flashback_table 偽表,指定時間戳查詢。使用日志文件查詢:解析 oracle 重做日志文件,過濾創(chuàng)建表和添加列的行。
如何查詢 Oracle 數(shù)據(jù)庫中新添加的表
方法 1:使用數(shù)據(jù)字典視圖
使用 DBA_OBJECTS 視圖:
<code class="sql">SELECT TABLE_NAME, CREATED
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND CREATED >= TO_DATE('2023-03-01', 'YYYY-MM-DD') -- 指定一個日期范圍
ORDER BY CREATED DESC;</code>
登錄后復(fù)制
方法 2:使用閃回查詢
使用 FLASHBACK_TABLE 偽表:
<code class="sql">SELECT * FROM FLASHBACK_TABLE('SCHEMA_NAME'.'TABLE_NAME', TIMESTAMP '2023-03-01')
ORDER BY CREATE_TIME DESC;</code>
登錄后復(fù)制
方法 3:使用日志文件
查詢 Oracle 重做日志文件(redo logs):
<code class="sql">SET SERVEROUTPUT ON;
DECLARE
sql_text VARCHAR2(4000);
BEGIN
FOR logfn IN (SELECT MEMBER FROM V$LOG) LOOP
DBMS_OUTPUT.PUT_LINE('Reading log file: ' || logfn);
FOR line IN (SELECT LINE FROM V$LOGFILE(logfn) WHERE INST_ID = (SELECT INST_ID FROM V$INSTANCE) ORDER BY SEQ) LOOP
IF line LIKE '%CREATE TABLE%' OR line LIKE '%ALTER TABLE ADD COLUMN%' THEN
DBMS_OUTPUT.PUT_LINE('New table created: ' || line);
END IF;
END LOOP;
END LOOP;
END;
/</code>
登錄后復(fù)制






