개발자

Oracle 21c 에서 default tablespace 지정해주는데 오류가 납니다.

2024년 01월 03일조회 725

안녕하세요. Oracle 21c에서 tablespace를 새로 생성하여 새로 만든 계정에 default tablespace로 지정해주려 하는데, 오류가 납니다. window cmd 창에서 sys as sysdba 로 접속했습니다. --------------------------- 오류 내용--------------------------------- SQL> ALTER USER C##SSO_USER DEFAULT TABLESPACE SSO_DB; ALTER USER C##SSO_USER DEFAULT TABLESPACE SSO_DB * 1행에 오류: ORA-65048: 플러그인할 수 있는 데이터베이스 XEPDB1에서 현재 DDL 문을 처리하는 중 오류가 발생했습니다. ORA-00959: 테이블스페이스 'SSO_DB'이(가) 존재하지 않습니다. --------------------------------------------------------------------- SELECT tablespace_name FROM DBA_TABLESPACES; 를 하면 TABLESPACE_NAME ------------------------------------------------------------ SYSTEM SYSAUX UNDOTBS1 TEMP USERS TEST_UP SSO_DB 라고 잘 뜨는데.. 왜 PDB 인 XEPDB1 에서 처리하는지 의문입니다. sys as sysdba로 접속 후 따로 PDB로 접속하진 않았거든요 이전에도 동일한 작업(tablespace 생성, 다른 계정이 default tablespace로 지정) 을 했었는데, 그땐 잘 됐거든요..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

kaydash님의 프로필 사진

이것만으로는 문제를 알 수 없지만 tablespace status 이상이 있거나, 쿼터 설정이 안되었거나, 해당 tablespace에 대한 제어 권한이 없는것같아요 상태 조치 겸 권한확인을 위해 이걸해보세요 .

1alter tablespace SSO_DB online;
2alter system checkpoint;
3/*이후 원래 하시려던 구문 수행*/
profile picture

익명

작성자

2024년 01월 04일

안녕하세요. 답변 감사합니다. 왜 열려있었는지 이유는 모르겠지만 ALTER PLUGGABLE DATABASE XEPDB1 CLOSE; 라는 명령어로 XEPDB1 라는 PDB를 닫으니 default tablespace 지정이 잘 되네요.. 감사합니다

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 01월 03일

출력된 오류 메시지를 보니, 'SSO_DB' 테이블스페이스가 PDB 데이터베이스(XEPDB1)에 존재하지 않아서 오류가 발생한 것으로 보입니다. 참고로 Oracle 12c부터 도입된 Multitenant Architecture에서는 Container Database (CDB)와 Pluggable Database (PDB)라는 개념이 있습니다. 공유 리소스를 사용하는 CDB와 실제 데이터를 포함하며 독립적으로 운영되는 PDB가 있죠. 여기서 문제가 되는 부분은, 거론해주신대로 실행중인 환경이 CDB인데 PDB의 문제에 대해 오류 메시지가 나오고 있다는 것입니다. 아마도 이전에 만들었던 'SSO_DB' 테이블 스페이스를 현재 접속한 CDB에서 찾을 수 없기 때문일 가능성이 높습니다. 여기서 해결할 수 있는 방법 중 하나는 사용자(C##SSO_USER)가 속한 PDB에 직접 접속하여 해당 커맨드를 다시 실행해보는 것입니다. 다음과 같은 명령어로 PDB에 접속할 수 있습니다. ```shell SQL> ALTER SESSION SET CONTAINER = XEPDB1; ``` 그 후 다시 'ALTER USER...' 명령어를 입력해보세요. 다른 방법으로는, 사용자를 생성할 때에 특정 PDB를 지정해주는 방법이 있습니다. 이 경우, 사용자가 로그인 시 자동으로 해당 PDB에 접속되도록 설정할 수 있습니다. 그러면 해당 PDB 내에서만 작업을 진행하게 되므로 CDB와 PDB 간의 충돌 문제를 해결할 수 있게 됩니다. 처음에 언급드렸던 것처럼, 이는 가능성 중 하나일 뿐 정확한 원인을 찾아내는 것은 실제 환경을 확인해야 가능합니다. 기존에 잘 동작하였다면 사용자 생성이나 테이블 스페이스 할당 시 조건이나 설정값 등 변경사항은 없었는지 점검해보시기 바랍니다. 또한 Oracle 버전 업그레이드 후 발생한 문제라면 호환성 문제도 고려해 볼 만합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!