이 글 요약
- Create를 누르자
compartment quotas were exceeded오류. 서버가 하나도 없는데 쿼터 초과가 났다- 원인은 과금을 막으려고 직접 만들어 둔 쿼터 정책. 정책 이름 두 줄을 추가해서 해결했다
- 쿼터 정책 만드는 법, 예산 알림과 차이, 가장 흔한 오류
Out of capacity대처법까지 정리
3편에서 화면을 따라 설정을 끝내고 Create를 눌렀다. 서버 대신 빨간 오류가 나왔다.
이번 편은 그 오류를 해결한 과정이다. 오라클 무료 서버를 만들다 막히는 곳은 대부분 정해져 있다. 내가 겪은 쿼터 오류, 그리고 가장 많이 겪는 Out of capacity를 같이 정리한다.
오류: compartment quotas were exceeded
Review 화면에서 Create를 누르자 화면 아래에 이런 오류가 떴다.

Create 직후 나온 API Error
The following compartment quotas were exceeded:
standard-a1-core-regional-count in policy '<정책 ID>' by 2,
standard-a1-memory-regional-count in policy '<정책 ID>' by 12.
풀어 쓰면 "정책 하나가 A1 코어를 2개, 메모리를 12GB만큼 초과했다고 막았다"는 뜻이다.
이상한 점이 있었다. 이 계정에는 인스턴스가 하나도 없었다. 0개에서 2개를 만들려는데 초과라니, 한도가 0이라는 얘기다. 3편에서 확인한 Service limits는 분명히 0 of 2, 0 of 12였다.
먼저 알아둘 것: 한도는 두 종류다
오라클에는 이름이 비슷한 한도가 두 가지 있다. 이걸 구분해야 오류 메시지가 읽힌다.
| 구분 | Service limit | Compartment quota |
|---|---|---|
| 누가 정하나 | 오라클 | 나(계정 관리자) |
| 무엇인가 | 내 계정이 쓸 수 있는 최대치 | 그 안에서 내가 스스로 거는 제한 |
| 예시 | A1 코어 2개, 메모리 12GB | "A1 말고는 아무것도 못 만들게" |
| 늘리려면 | Request Increase로 오라클에 요청 | 정책 문장을 직접 고친다 |
| 어디서 보나 | Limits, quotas and usage | Quota policies |
비유하자면 Service limit은 은행이 정한 카드 한도고, Quota는 내가 카드 앱에서 걸어 둔 "해외 결제 차단" 같은 것이다. 은행 한도가 넉넉해도 내가 걸어 둔 차단에 걸리면 결제가 안 된다.
오류 메시지에 compartment quotas라고 적혀 있었다. 오라클이 아니라 누군가 이 계정에 걸어 둔 제한에 걸렸다는 뜻이다. 이 계정을 쓰는 사람은 나 하나다.
범인 찾기: Quota policies
쿼터 정책은 콘솔 ☰ 메뉴 → Governance & Administration → Tenancy Management → Quota policies에 있다.
- Governance & Administration: 계정 전체의 규칙과 권한을 관리하는 메뉴다.
- Tenancy: 오라클에서 "내 계정 전체"를 부르는 이름이다.

Quota policies 목록: free-only
free-only라는 정책이 하나 있었다. 생성일은 2026년 10월 12일. 서버를 만들기 사흘 전이다. 무료 범위를 넘는 자원이 실수로 만들어지지 않게 하려고 내가 걸어 둔 정책이었다. 만든 기억은 흐릿했지만, 이름을 보니 의도는 분명했다.
정책 이름을 누르고 Statements 탭을 열면 정책 내용이 나온다.

free-only 정책의 원래 문장 5줄
zero compute-core quotas in tenancy
set compute-core quota standard-a1-core-count to 2 in tenancy
zero compute-memory quotas in tenancy
set compute-memory quota standard-a1-memory-count to 12 in tenancy
set block-storage quota total-storage-gb to 200 in tenancy
한 줄씩 읽으면 이렇다.
| 문장 | 뜻 |
|---|---|
zero compute-core quotas in tenancy |
계정 전체에서 모든 종류의 CPU 코어를 0개로 막는다 |
set ... standard-a1-core-count to 2 |
그중 A1(무료 ARM) 코어만 2개까지 허용한다 |
zero compute-memory quotas in tenancy |
모든 종류의 메모리를 0으로 막는다 |
set ... standard-a1-memory-count to 12 |
A1 메모리만 12GB까지 허용한다 |
set block-storage quota total-storage-gb to 200 |
디스크는 합계 200GB까지만 허용한다 |
"전부 막고, 무료인 것만 열어 준다." 화이트리스트 방식이라 설계는 맞다. 문제는 열어 준 이름이었다.
원인: 이름이 하나 더 있었다
오류 메시지에 나온 이름과 정책의 이름을 나란히 놓으면 바로 보인다.
| 오류 메시지가 검사한 이름 | 정책에서 열어 준 이름 |
|---|---|
standard-a1-core-regional-count |
standard-a1-core-count |
standard-a1-memory-regional-count |
standard-a1-memory-count |
A1 한도에는 이름이 두 개 있다.
standard-a1-core-count: 가용 도메인(AD) 단위 한도standard-a1-core-regional-count: 리전 단위 한도
지금 오라클은 A1 인스턴스를 만들 때 리전 단위 이름도 검사한다. 내 정책은 첫 줄 zero compute-core quotas로 리전 단위까지 전부 0으로 막고, AD 단위 이름만 2로 열어 줬다. 그래서 리전 단위 검사에서 "0개 한도에 2개를 만들려 한다"며 막혔다.
정리하면, 문을 전부 잠그고 열쇠를 하나 남겼는데 그 열쇠가 옆집 문 열쇠였다.
해결: 두 줄 추가
정책 상세 화면 오른쪽 위 Manage quota policy를 누르면 문장을 고칠 수 있다.

Manage quota policy 편집 화면
기존 5줄은 그대로 두고, 맨 아래에 리전 단위 이름 두 줄을 추가한 뒤 Update를 누른다.
set compute-core quota standard-a1-core-regional-count to 2 in tenancy
set compute-memory quota standard-a1-memory-regional-count to 12 in tenancy
- 정책을 지우지 않은 이유: 지우면 오류는 바로 사라진다. 하지만 과금 방지 장치도 같이 사라진다. 막힌 문은 열쇠를 고치면 되지, 문을 떼어 낼 일은 아니다.
- 기존 두 줄을 남긴 이유: AD 단위 이름도 검사 대상일 수 있다. 둘 다 열어 두면 어느 쪽으로 검사해도 통과한다.
- 값을 2와 12로 둔 이유: 무료 한도와 정확히 같은 값이다. 이보다 크게 열면 정책을 둔 의미가 없다.
저장하면 문장이 7줄이 된다.

두 줄을 추가한 뒤의 정책 7줄
이 상태로 다시 Create를 눌렀고, 1~2분 뒤 서버가 Running이 됐다.
재시도할 때 주의: VCN이 이미 생겼을 수 있다
실패한 생성 시도에서도 네트워크(VCN)는 먼저 만들어질 수 있다. 재시도할 때 또 "Create new virtual cloud network"를 고르면 같은 VCN이 하나 더 생긴다. VCN 자체는 무료라 요금은 없지만, 나중에 어느 쪽이 진짜인지 헷갈린다. 재시도할 때는 Select existing virtual cloud network로 먼저 생긴 VCN을 고르자. 목록은 Networking → Virtual cloud networks에서 볼 수 있다.
쿼터 정책, 나도 만들어야 할까
내 오류의 원인이 쿼터 정책이었으니 "그냥 안 만들면 되는 거 아닌가" 싶을 수 있다. 계정 종류에 따라 다르다.
- 무료 계정(Free Tier): 무료 체험 크레딧이 끝나면 유료 자원은 아예 만들 수 없다. 쿼터 정책이 없어도 요금이 나올 일은 거의 없다.
- 종량제 계정(PAYG): 유료 자원도 만들 수 있다. 실수로 AMD Shape를 고르거나 디스크를 크게 잡으면 그대로 청구된다. 나는 유휴 회수를 피하려고 PAYG로 쓰고 있어서 이 정책이 필요했다.
PAYG라면 만들어 두길 권한다. 만드는 법은 간단하다.
- Quota policies → Create quota를 누른다.
- Name과 Description에
free-only처럼 알아보기 쉬운 이름을 넣는다. - Compartment는 root(계정 이름)를 고른다. 계정 전체에 적용하기 위해서다.
- 아래 7줄을 붙여 넣고 Create를 누른다.
zero compute-core quotas in tenancy
set compute-core quota standard-a1-core-count to 2 in tenancy
set compute-core quota standard-a1-core-regional-count to 2 in tenancy
zero compute-memory quotas in tenancy
set compute-memory quota standard-a1-memory-count to 12 in tenancy
set compute-memory quota standard-a1-memory-regional-count to 12 in tenancy
set block-storage quota total-storage-gb to 200 in tenancy
알아둘 점이 있다.
- 이 정책은 A1 말고 모든 컴퓨트를 막는다. AMD 무료 Micro 인스턴스도 막힌다. 다른 Shape를 쓰려면 그 Shape의 이름으로 한 줄을 더 열어야 한다. 정확한 이름은 Limits, quotas and usage 화면에서 찾을 수 있다.
- 나중에 유료 자원을 일부러 쓰고 싶어지면, 그때 정책을 고치면 된다. 막혀서 오류가 나는 편이 모르는 사이에 청구되는 것보다 낫다.
예산 알림과는 무엇이 다른가
오라클에는 Budgets(예산 알림)도 있다. 나는 free-guard라는 이름으로 1달러 예산을 걸어 두었다. 둘은 역할이 다르다.
| 구분 | Quota policy | Budget |
|---|---|---|
| 하는 일 | 자원 생성을 막는다 | 금액이 넘으면 메일을 보낸다 |
| 시점 | 만들기 전 | 이미 쓴 뒤 |
| 비유 | 잠금장치 | 화재경보기 |
경보기는 불이 난 뒤에 울린다. 잠금장치는 애초에 못 들어가게 한다. 둘 다 걸어 두는 게 맞다. 예산 알림은 Billing & Cost Management → Budgets에서 만들 수 있다.
가장 흔한 오류: Out of capacity
나는 춘천 리전에서 겪지 않았지만, 오라클 무료 서버 후기에서 가장 많이 보이는 오류다. 메시지는 Out of capacity for shape VM.Standard.A1.Flex 또는 Out of host capacity 같은 형태다.
무슨 뜻인가: 내 계정 한도 문제가 아니다. 그 리전(또는 AD)의 데이터센터에 무료 ARM 서버를 올릴 물리 장비가 지금 남아 있지 않다는 뜻이다. 오라클 문서도 일시적인 부족이라고 설명한다. 인기 리전일수록 자주 난다.
해볼 수 있는 것 (효과가 큰 순서는 상황마다 다르다)
- 다른 AD로 바꾼다: 서울처럼 AD가 여러 개인 리전이라면 2단계의 Availability domain을 바꿔 본다. AD마다 남은 장비가 다르다.
- 시간을 두고 다시 시도한다: 다른 사용자가 서버를 지우면 자리가 난다. 새벽이나 평일 낮에 된다는 후기가 많다.
- 사양을 낮춰서 먼저 만든다: 1 OCPU / 6GB로 만들고, 나중에 인스턴스 상세 화면의 Edit → Shape에서 2 OCPU / 12GB로 늘릴 수 있다. 바꿀 때 서버가 재부팅된다. Flex Shape라서 가능하다. 늘릴 때 자리가 없으면 다시 같은 오류가 난다.
- PAYG로 전환한다: 전환 후 생성이 잘 됐다는 후기가 많다. 무료 범위 안에서 쓰면 PAYG도 요금은 0원이다. 대신 유료 자원도 만들 수 있게 되니, 위의 쿼터 정책과 예산 알림을 같이 걸어 두자.
리전은 바꿀 수 없다. 무료 자원은 홈 리전에서만 만들 수 있기 때문이다. 3편에서 홈 리전을 신중히 고르라고 한 이유다.
그 밖에 만난 오류
3편에서 다룬 것들이지만 오류 메시지로 검색해서 들어온 사람을 위해 다시 적는다.
| 증상 | 원인 | 해결 |
|---|---|---|
Invalid ssh public key type "sh-rsa" |
공개키를 붙여 넣다 첫 글자가 빠짐 | ssh-rsa, ssh-ed25519로 시작하는지 확인하고 다시 붙여 넣기 |
| 공인 IP 자동 할당 스위치가 회색 | 생성 화면에서 켤 수 없는 상태 | 그대로 만들고 VNIC → IP administration → Edit에서 Ephemeral IP 붙이기 |
| Service limits 빨간 경고 | 한도를 꽉 채워 쓰려 한다는 안내 | 에러 아님. Request Increase는 누르지 않기 |
에이전트와 한 부분
오류가 났을 때 Claude Code가 한 일은 순서가 정확했다.
- Create를 다시 누르지 않았다. 같은 조건으로 다시 누르면 같은 오류가 난다.
- 인스턴스 목록부터 확인했다. 0개였다. 이 시점에 "한도를 다 써서 난 오류"라는 가능성이 지워졌다.
- 오류 메시지의
compartment quotas를 보고 Quota policies로 갔다. 정책 문장을 읽고, 오류에 나온 이름과 정책의 이름을 비교했다. - 고칠 두 줄을 제안하고, 계정 설정을 바꾸는 작업이라며 먼저 확인을 받았다. 정책을 지우는 쉬운 길도 있었지만 과금 방지 기능은 유지하는 쪽을 골랐다.
확인 요청에 나는 이렇게 답했다. "뭔지 모르지만 일단 추가 ㄱㄱ."
정리하면 이렇다. 사흘 전 과금을 막으려고 정책을 만든 사람도 나고, 그 정책이 뭔지 모른 채 고치라고 한 사람도 나다. 에이전트만 그 정책이 뭔지 알고 있었다.
오늘의 교훈 안전장치는 사고만 막지 않는다. 만든 사람도 막는다. 만들었으면 어디에, 왜 만들었는지 적어 두자.
다음 편에서는 서버에 도메인을 연결한다. 포트를 하나도 열지 않고 Cloudflare Tunnel로 연결하는 방법이다. 그 준비를 하다가 알게 됐다. 맥북에서 몇 달째 돌던 터널에는 설정 파일이 없었다.
'맥북 서버 탈출기' 카테고리의 다른 글
| [맥북 서버 탈출기 6편] 운영 중인 앱, 3분 만에 서버 옮기기: DB 덤프부터 행 개수 대조까지 (0) | 2026.10.15 |
|---|---|
| [맥북 서버 탈출기 5편] 포트 하나 안 열고 서비스하기: Cloudflare Tunnel로 도메인 연결 (0) | 2026.10.15 |
| [맥북 서버 탈출기 3편] 오라클 클라우드 무료 서버 만들기 (2026, 캡처로 따라 하기) (0) | 2026.10.15 |
| [맥북 서버 탈출기 2편] 오라클 vs Cloudflare, 고를 필요가 없었다 (0) | 2026.10.15 |
| [맥북 서버 탈출기 1편] 내 앱 서버는 맥북 에어였다 (1) | 2026.10.15 |