새싹 DBA/Scripts
[오라클] 실제 테이블 row 수를 count 하는 테이블 생성
LIMMI
2024. 11. 25. 10:15
SET SERVEROUTPUT ON;
DECLARE
v_owner VARCHAR2(128);
v_table_name VARCHAR2(128);
v_sql VARCHAR2(500);
v_row_cnt NUMBER;
BEGIN
FOR rec IN ( SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER IN ('IGWOWN','MBMS') AND TABLE_NAME NOT LIKE 'BIN$%' AND NOT REGEXP_LIKE(TABLE_NAME, '.*[0-9]{8}$')) LOOP
v_owner := rec.owner;
v_table_name := rec.table_name;
BEGIN
v_sql := 'SELECT /*+ PARALLEL(4) FULL(A) */ COUNT(*) FROM '|| v_owner||'.'||v_table_name ||' A';
-- DBMS_OUTPUT.PUT_LINE(v_sql);
EXECUTE IMMEDIATE v_sql INTO v_row_cnt ;
INSERT INTO DBADM.TB_TOBE_COUNT_INFO VALUES (v_owner, v_table_name, v_row_cnt, SYSDATE);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -942 THEN
dbms_output.put_line('테이블 '||v_owner ||'.'||v_table_name || ' 이 존재하지 않습니다. ');
ELSE
dbms_output.put_line('[오류] '||v_owner ||'.'||v_table_name || ';' ||SQLERRM);
END;
END LOOP;
END;
/