惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cisco Talos Blog
Cisco Talos Blog
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
T
Tenable Blog
Stack Overflow Blog
Stack Overflow Blog
P
Palo Alto Networks Blog
J
Java Code Geeks
T
True Tiger Recordings
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
博客园 - 【当耐特】
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Help Net Security
F
Future of Privacy Forum
Scott Helme
Scott Helme
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Security @ Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 司徒正美
V
V2EX
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Malwarebytes
Malwarebytes
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
The GitHub Blog
The GitHub Blog
The Hacker News
The Hacker News
博客园 - 聂微东
李成银的技术随笔
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Vulnerabilities – Threatpost
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Comments on: Blog
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
N
Netflix TechBlog - Medium
博客园 - Franky
aimingoo的专栏
aimingoo的专栏
M
Microsoft Research Blog - Microsoft Research
Security Latest
Security Latest
T
Tor Project blog

DEV Community

Self-Hosted LLM Tool Calling: Forge and the Build-vs-Buy Decision OpenWA for CTOs: Self-Hosted WhatsApp Gateway Trade-Offs NotebookLM Automation With notebooklm-py: Useful, But Classify Data First Docker v29.5.x Operator Upgrade Checklist Coding-Agent Instruction Design: The CLAUDE.md File That Prevents Rework When I Finally Realized My Runtime Was Holding Me Back GnokeOps: Host Your Own AI House Party AI Agents in Practice — Part 2: What Makes Something an Agent Stop scattering LLM SDK/API calls across your codebase. Here is the 2-file rule that fixed mine Beyond Prompts: Structuring AI Workflows for Real Frontend Engineering From an Abandoned Hackathon Project to an AI Study Workspace 🚀 Terraform with AI: Build AWS Infra (Cursor + MCP) What If AI Didn’t Need the Internet? 750,000 Chips, 140 Trillion Tokens: The Math Behind DeepSeek's Permanent Price Cut You're Renting Someone Else's Compute — And It's Costing You More Than You Think CSS :has() Selector: The Layout Trick I Wish I Knew 5 Years Ago Five Clusters. Five Lessons. One Production System. Synaptic: A Local-First AI Dev Companion That Remembers How You Think Revolutionizing Edge MedTech: Building a Sovereign Sleep Apnea Companion ("XiHan Snore Coach") with Gemma 4 HDD Eksternal Tiba-Tiba Tidak Bisa Diakses di Windows? Ini Tiga Lapis Fix-nya DMARC p=none vs p=quarantine vs p=reject: what to use and when DSA Application in Real Life: How Git Diff Works: LCS Intuition, Myers Algorithm, and Real Code Changes I solo-built a reputation layer for AI agents on NEAR — and here's what I learned I built an AI faceless video generator in 2 months — here's the stack Diffusion Language Models: How NVIDIA Nemotron-Labs Diffusion Shatters the Autoregressive Speed Ceiling llm-nano-vm v0.8.0 — deterministic FSM runtime for LLM pipelines, now with output validation and per-step timeouts From the Renaissance to the Quantum Dawn: AI, Computation, and the Next Paradigm Shift How I Built a Review Site with 800+ Articles Using AI I Built a Smart Kitchen AI with Gemma 4 That Turns Fridge Photos Into Recipes Why your vulnerability dashboard is lying to you (and how to fix it) From Abandoned Prototype to Smart AI System: Reviving Trafiq AI with GitHub Copilot Why Country/State/City Pickers Are Weirdly Hard Node.js 22 LTS — EOL Date, Support Timeline, and What Comes Next The 7-Layer Memory Architecture Behind Modern AI Agents I Imagined Hermes Agent Running an Entire Smart City — And It Changed How I See AI One backend, four products: why we bet on platform-per-brand AI's tech debt is invisible — even to AI. I solved it at the architecture layer. Why ROAS 300% Can Still Mean Losses — Gross Margin in 5 Ecommerce Verticals You Don’t Need to Try Every AI Tool to Keep Up NovelPilot: A Novel Writing Agent Powered by Gemma 4 BoxAgnts is an Out-Of-The-Box Secure AI Agent ToolBox in a WASM SandBox Gemma 4 deep dive: why a 1.5 GB model scores 37.5% on competition mathematics, how the MoE routing actually works, and which model fits your hardware. Full breakdown inside. BeeLlama v0.2.0: 164 tok/s on a 27B model, one RTX 3090 Google Just Declared the Chat-Log Interface Dead. Here's What Neural Expressive Actually Signals for Developers. ARCHITECTURE SPECIFICATION & FORMAL SYSTEM REPORT: k501-AIONARC Notes from a Hammock What's Google Antigravity 2.0 ? Here's What the Agent Harness Actually Changes for Developers. Building an E2EE Chat App in Flask - Part 3: Keeping File Uploads Safe Google's Gemini Spark. Here's What It Actually Does for Developers. Microsoft Just Shipped MCP Governance for .NET. Here's What It Actually Enforces. How I Built a Pakistan Internet Speed Test Platform at 16 How to Build a Supervisor Agent Architecture Without Frameworks I Built My Own Corner of the Internet — Here's What It Looks Like How does VuReact compile Vue 3's defineExpose() to React? Neo-VECTR's Rift Ascent Idempotency Keys: The API Safety Net You Probably Aren't Using Building E-Commerce Sites for Niche Products: Technical Lessons from Specialty Outdoor Retailers Audit Logs: The Silent Guardian of Every Serious System Open-source SDS tooling for Japanese MHLW compliance: the gap nobody filled BetAGracevI I Built a Post-Quantum Cryptographic Identity SDK for AI Agents — Here's Why It Needs to Exist Running Claude Code across multiple repos without losing context There Are Cameras in Every Room of My House. I Put Them There. Why your AI agent loops forever (and how to break the cycle) How does VuReact compile Vue 3's defineSlots() to React? Building a Privacy-First Resume Editor with Typst WASM and React One Soul, Any Model: Portable Memory for Open-Source Agents with .klickd From Pixels to Prescriptions: Building an Autonomous Healthcare Booking Agent with LangGraph MonoGame - A Game Engine for Those Who Love Reinventing the Wheel # Day 24: In Solana, Everything is an Account Mastering Node.js HTTP Module: Build Servers, REST APIs, and Handle Requests Mastering Node.js HTTP Module: Build Servers, REST APIs, and Handle Requests RP2040 Wristwatch Tells Time With a Vintage VU Meter Needle observations about models / 2026, may From Video Transcripts to Source-Grounded AI Notes: A Practical Look at Notesnip AI Agent Dev Environment Guide — Real Experience from an AI Living Inside a Server How I Run 7 AI Models 24/7: Multi-Agent Architecture in Practice What exactly changes with the Claude Max plan? I Revived a Broken MLOps Platform — Now It's Self-Service, Policy-Guarded, and Operationally Credible OpenAI's $2M-tokens-for-equity YC deal, decoded Why DMX Infrastructure is Still Stuck in the 90s Agent Series (2): ReAct — The Most Important Agent Reasoning Paradigm Open Source Project (No.73): Sub2API - All-in-One Claude/OpenAI/Gemini Subscription-to-API Relay I Made the Wrong Bet on Event Streaming in Our Treasure Hunt Engine #ai #productivity #chatgpt #python Symbolic Constant Conundrum From Manual RAG to Real Retrieval — Embedding-Based RAG with NVIDIA NIM Building an outbound-only WebSocket bridge for local AI agents Our System's Sins in Ghana: Why We Had to Rethink Digital Product Sales Execution Governance, AI Drift, and the Security Paradox of Runtime Enforcement Differential Pair Impedance: Why USB and HDMI Routing Is a Geometry Problem Small AI database questions can become big scans Claude Code 2.1 Agent View & /goal: Autonomous Dev Guide 2026 Your AI database agent should not see every column Rust's Low-Latency Conquest: Why We Ditched C++ for a Treasure Hunt Engine Floating-point will quietly corrupt your emissions math, and 0.1 + 0.2 already warned you Autonomous Agents: what breaks first (and why that's the real product) [2026-05-23] Agent payments are the new cloud bill footgun ORA-00069 오류 원인과 해결 방법 완벽 가이드 How I Built a Local, Multimodal Gemma 4 Visual Regression & Patch Agent: Closed-Loop Validation, Canvas Pixel Diffing, and Reproducible Benchmarks
ORA-00072 오류 원인과 해결 방법 완벽 가이드
umzzil nng · 2026-05-23 · via DEV Community

umzzil nng

ORA-00072란?

ORA-00072 에러는 "process is not active"라는 메시지와 함께 발생하며, Oracle이 특정 프로세스에 접근하거나 해당 프로세스와 통신을 시도할 때 그 프로세스가 이미 종료되었거나 비활성 상태임을 감지할 때 발생합니다. 주로 DBA가 ALTER SYSTEM KILL SESSION 명령을 실행하거나, 백그라운드 프로세스 상태를 조회하는 과정에서 대상 프로세스가 이미 사라진 경우에 이 에러를 마주치게 됩니다. 실무에서는 비정상 종료된 세션 처리, RAC 환경에서의 노드 간 프로세스 통신 실패, 또는 장시간 대기 중이던 프로세스가 OS 레벨에서 강제 종료된 직후에 빈번히 발생합니다.


주요 발생 원인

1. 이미 종료된 세션에 대한 KILL SESSION 시도

가장 흔한 원인으로, DBA가 V$SESSION 뷰를 조회하여 세션 정보를 확인한 후 ALTER SYSTEM KILL SESSION 명령을 실행하는 사이에 해당 세션이 자연적으로 종료되는 경우 발생합니다. 특히 오래된 쿼리를 통해 세션 정보를 조회한 뒤 시간이 지나 명령을 실행할 때 자주 발생하므로, 명령 실행 직전에 세션 상태를 반드시 재확인해야 합니다.

2. OS 레벨에서 강제 종료된 Oracle 프로세스

운영체제 관리자가 kill -9 명령으로 Oracle 서버 프로세스(Shadow Process)를 강제 종료했을 때, Oracle 인스턴스는 해당 프로세스가 사라졌음을 즉시 인지하지 못하고 내부적으로 통신을 시도하다가 이 에러를 발생시킵니다. PMON(Process Monitor) 백그라운드 프로세스가 죽은 프로세스를 정리하기 전까지 짧은 시간 동안 V$PROCESSV$SESSION에 좀비 세션으로 남아 있어 DBA를 혼란스럽게 만들 수 있습니다.

3. RAC(Real Application Clusters) 환경에서의 인터-노드 통신 실패

RAC 환경에서는 서로 다른 노드의 프로세스 간 통신이 빈번하게 발생하는데, 한 노드가 네트워크 단절이나 노드 장애로 인해 응답하지 못할 경우 상대 노드에서 ORA-00072 에러가 발생할 수 있습니다. 이는 단순한 세션 에러로 그치지 않고 클러스터 전체의 안정성에 영향을 줄 수 있기 때문에, RAC 환경에서는 Interconnect 네트워크 상태 모니터링이 특히 중요합니다.


해결 방법

원인 1: 이미 종료된 세션 KILL SESSION 시도

먼저 세션이 실제로 활성 상태인지 확인합니다.

-- 현재 활성 세션 목록 확인 (STATUS = 'ACTIVE' 또는 'INACTIVE')
SELECT s.sid,
       s.serial#,
       s.username,
       s.status,
       s.machine,
       s.program,
       s.last_call_et AS elapsed_seconds,
       p.spid          AS os_pid
FROM   v$session s
JOIN   v$process p ON p.addr = s.paddr
WHERE  s.username IS NOT NULL
  AND  s.type     = 'USER'
ORDER BY s.last_call_et DESC;

Enter fullscreen mode Exit fullscreen mode

세션이 KILLED 상태로 남아 있는 경우를 확인합니다.

-- KILLED 상태로 남아있는 세션 조회
SELECT sid,
       serial#,
       username,
       status,
       last_call_et
FROM   v$session
WHERE  status = 'KILLED';

Enter fullscreen mode Exit fullscreen mode

세션이 존재하고 아직 ACTIVE/INACTIVE 상태라면 즉시 종료합니다.

-- 정상적인 세션 종료 (권장)
ALTER SYSTEM KILL SESSION '&sid,&serial#' IMMEDIATE;

-- 세션이 응답하지 않을 경우 DISCONNECT SESSION 사용
ALTER SYSTEM DISCONNECT SESSION '&sid,&serial#' POST_TRANSACTION;

-- 즉시 강제 종료
ALTER SYSTEM DISCONNECT SESSION '&sid,&serial#' IMMEDIATE;

Enter fullscreen mode Exit fullscreen mode

세션 종료 후 KILLED 상태가 지속된다면 OS 레벨에서 직접 처리합니다.

-- OS PID 확인
SELECT p.spid,
       s.sid,
       s.serial#,
       s.username,
       s.status
FROM   v$process p
JOIN   v$session s ON s.paddr = p.addr
WHERE  s.status = 'KILLED';

Enter fullscreen mode Exit fullscreen mode

# Linux/Unix 환경에서 OS 프로세스 확인 및 종료
ps -ef | grep <spid>

# Oracle 권장: kill -9 대신 정상 종료 시도 후 필요 시 강제 종료
kill -15 <spid>
# 위 명령이 효과 없을 경우
kill -9 <spid>

Enter fullscreen mode Exit fullscreen mode


원인 2: PMON 정리 전 좀비 프로세스 처리

PMON이 자동으로 정리할 때까지 잠시 대기하거나, 아래 쿼리로 실제 OS 프로세스 존재 여부를 먼저 확인합니다.

-- V$PROCESS와 실제 OS PID 비교를 위한 상세 조회
SELECT p.pid,
       p.spid,
       p.program,
       p.background,
       s.sid,
       s.serial#,
       s.status    AS session_status,
       s.username
FROM   v$process p
LEFT JOIN v$session s ON s.paddr = p.addr
WHERE  p.spid IS NOT NULL
ORDER BY p.pid;

Enter fullscreen mode Exit fullscreen mode

-- PMON 프로세스 정상 동작 여부 확인
SELECT name, description
FROM   v$bgprocess
WHERE  name = 'PMON'
  AND  paddr <> '00';

Enter fullscreen mode Exit fullscreen mode

-- 인스턴스 전체 프로세스 현황 요약
SELECT status,
       COUNT(*) AS cnt
FROM   v$session
GROUP  BY status
ORDER  BY cnt DESC;

Enter fullscreen mode Exit fullscreen mode


원인 3: RAC 환경 인터-노드 통신 장애

-- RAC 환경 노드 상태 확인
SELECT inst_id,
       instance_name,
       host_name,
       status,
       active_state
FROM   gv$instance
ORDER BY inst_id;

Enter fullscreen mode Exit fullscreen mode

-- 각 노드별 활성 세션 수 비교 (비정상 노드 탐지)
SELECT inst_id,
       COUNT(*) AS active_sessions
FROM   gv$session
WHERE  type = 'USER'
  AND  status = 'ACTIVE'
GROUP  BY inst_id
ORDER  BY inst_id;

Enter fullscreen mode Exit fullscreen mode

-- RAC Interconnect 관련 통계 확인
SELECT name,
       value
FROM   gv$sysstat
WHERE  name LIKE '%gc%'
  AND  inst_id = 1  -- 조회할 노드 번호로 변경
ORDER BY name;

Enter fullscreen mode Exit fullscreen mode

-- 글로벌 세션 정보에서 KILLED 상태 세션 전체 노드 조회
SELECT inst_id,
       sid,
       serial#,
       username,
       status,
       machine
FROM   gv$session
WHERE  status = 'KILLED'
ORDER BY inst_id, sid;

Enter fullscreen mode Exit fullscreen mode


예방 방법

1. 세션 종료 전 상태 검증 자동화 스크립트 운영

수동으로 세션을 종료할 때 발생하는 실수를 줄이기 위해, 아래와 같이 세션 상태를 먼저 확인하고 조건부로 종료하는 표준 스크립트를 팀 내 공통 절차로 정착시키는 것이 중요합니다. 특히 배치 작업이나 정기 점검 시 스크립트화된 절차를 따르면 ORA-00072와 같은 불필요한 에러 발생을 사전에 차단할 수 있습니다.

-- 안전한 세션 종료 표준 스크립트 (세션 존재 확인 후 종료)
DECLARE
    v_count NUMBER;
    v_sid   NUMBER := &target_sid;
    v_ser   NUMBER := &target_serial;
BEGIN
    SELECT COUNT(*)
    INTO   v_count
    FROM   v$session
    WHERE  sid     = v_sid
      AND  serial# = v_ser
      AND  status  NOT IN ('KILLED');

    IF v_count > 0 THEN
        EXECUTE IMMEDIATE
            'ALTER SYSTEM KILL SESSION ''' || v_sid || ',' || v_ser || ''' IMMEDIATE';
        DBMS_OUTPUT.PUT_LINE('세션 종료 완료: SID=' || v_sid || ', SERIAL#=' || v_ser);
    ELSE
        DBMS_OUTPUT.PUT_LINE('대상 세션이 이미 종료되었거나 존재하지 않습니다.');
    END IF;
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('에러 발생: ' || SQLERRM);
END;
/

Enter fullscreen mode Exit fullscreen mode

2. 장기 실행 세션 및 유휴 세션 자동 관리를 위한 Profile 설정

DBA가 수동으로 세션을 종료하는 상황 자체를 줄이려면, Oracle Profile을 활용하여 유휴 세션과 장기 실행 세션을 자동으로 관리하는 정책을 수립해야 합니다. IDLE_TIMECONNECT_TIME 파라미터를 업무 특성에 맞게 설정하면 좀비 세션 누적을 예방하고, 결과적으로 ORA-00072 발생 빈도를 크게 낮출 수 있습니다.

-- 유휴 세션 자동 관리를 위한 Profile 생성
CREATE PROFILE app_user_profile LIMIT
    IDLE_TIME          30     -- 30분 유휴 시 자동 종료 (분 단위)
    CONNECT_TIME        480   -- 최대 8시간 연결 허용 (분 단위)
    SESSIONS_PER_USER   10    -- 사용자당 최대 세션 수 제한
    FAILED_LOGIN_ATTEMPTS 5;

-- 특정 사용자에게 Profile 적용
ALTER USER app_user PROFILE app_user_profile;

-- Profile 적용 현황 확인
SELECT username,
       profile,
       account_status
FROM   dba_users
WHERE  username = 'APP_USER';

-- 현재 Profile 파라미터 상세 확인
SELECT profile,
       resource_name,
       limit
FROM   dba_profiles
WHERE  profile        = 'APP_USER_PROFILE'
  AND  resource_name IN ('IDLE_TIME', 'CONNECT_TIME', 'SESSIONS_PER_USER')
ORDER BY resource_name;

Enter fullscreen mode Exit fullscreen mode


관련 에러

  • ORA-00031: session marked for killALTER SYSTEM KILL SESSION 실행 후 세션이 즉시 종료되지 않고 KILLED 상태로 마킹될 때 발생하며, ORA-00072와 함께 연속으로 나타나는 경우가 많습니다.
  • ORA-00055: maximum number of DML locks exceeded — 프로세스 관련 리소스 한계 초과 에러로, 비정상 프로세스 누적 시 함께 발생할 수 있습니다.
  • ORA-03113: end-of-file on communication channel — 서버 프로세스가 예기치 않게 종료될 때 클라이언트 측에서 발생하며, OS 레벨 강제 종료 직후 ORA-00072와 거의 동시에 나타납니다.
  • ORA-03114: not connected to ORACLE — 세션이 강제 종료된 후 클라이언트가 계속 통신을 시도할 때 발생하며, ORA-00072와 밀접하게 연관됩니다.
  • ORA-00060: deadlock detected while waiting for resource — 교착 상태로 인해 Oracle이 세션을 강제 롤백한 직후, 해당 세션 프로세스 상태가 불안정해지면서 ORA-00072로 이어지는 경우가 있습니다.