2015년 Oracle XE 11g 쓰던 이후 7년 만에 Oracle을 다시 설치해본다.
요즘은 버전이 21c로 되어있어서 11g와 설치 과정에서 큰 차이는 없을거다 라고 생각했었는데, 초반부터 막혀서 애좀 먹었다.
설치 자체는 크게 어렵지 않았으나, 설치하고 나서 Oracle에서 제공하는 hr 계정과 스키마가 존재하지 않았다.
이 부분을 찾아보니 21c에서는 11g와 다르게 스키마를 수동으로 작업해야 한다는 부분을 알게 되었다....
설치 과정은 생략하였으며, 초기 설정부분 부터 짚고 넘어가도록 하겠다.
사용 환경
OS : Windows 10 21H2
Tools : Oracle SQL Developer 22.2.0
DB : Oracle 21c
우선 아래 링크를 통해 스키마를 다운받는다.
source code (zip)으로 다운 받고 다운로드 폴더에 우선 압축을 풀어주었다.
압축을 풀고나면 아래와 같이 압축 푼 폴더가 나오게 되는데, 폴더 내에 존재하는 human_resources
디렉터리를 복사해서 DB 설치 파일 디렉터리에 넣어준다.
보통 DB 설치 경로는 아래와 같다. (버전 및 디렉터리명 상이할 수 있음)
C:app\사용자이름\product\21c\dbhomeXE
C:\app\사용자이름\product\버전\dbhomeXE\demo\schema
디렉터리를 타고 들어와서 위 경로에 human_resources 디렉터리를 붙여넣는다.
그리고 SQL PLUS를 관리자 권한으로 실행한다.
(혹시나 권한 부족으로 인해 꼬이는 상황을 방지)
위와 같은 창이 뜨면 사용자명을 시스템 사용자로 넣고 비밀번호를 입력하여 로그인한다.
SQL>가 뜨면 정상적으로 로그인 된 상태이며,
다음과 같은 코드를 입력한다.
alter session set "_ORACLE_SCRIPT"=true;
이 코드는 원래 12c부터는 계정명 앞에 C##를 붙여줘야 계정을 생성할 수 있다.
하지만 이 C##를 입력하지 않고도 계정이름을 생성할 수 있게 하는 코드다.
11g 의 계정 생성 코드
create user 아이디 identified by 비밀번호
12c 의 계정 생성 코드
create user C##아이디 identified by 비밀번호
여기서 12c부터는 C##를 포함한 C##아이디 전부가 아이디가 되어버리기 때문에 위 코드로 편리하게 생성하고자 한다.
@?/demo/schema/human_resources/hr_main.sql
위 코드는 hr_main.sql 스크립트를 실행하기 위해 해당 경로에 있는 파일을 호출한다.
@가 실행시키는 것을 의미하며 ?는 Oracle 홈 환경 변수의 위치를 호출한다.
고로 실질적으로는 $ORACLE_HOME/demo/schema/human_resources/hr_main.sql
가 되는 것이다.
그 후 실행되는 value 1 ~ 6까지의 값은 각각 다음과 같다.
권한이 다 부여되고 나면 생성이 완료되는데
SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_cre.sql"
SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_popul.sql"
SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_idx.sql"
SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_code.sql"
SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_comnt.sql"
SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_analz.sql"
이와 같이 파일을 못열었다고 뜰 수가 있다.
그러면 SQL PLUS에 @?/demo/schema/human_resources/hr_cre.sql
@?/demo/schema/human_resources/hr_popul.sql
이런식으로 직접 스크립트를 실행해서 해결했다.
오우! 정상적으로 테이블이 조회 되는 것을 확인 했으니 이제 다음 시간에는 DB를 본격적으로 공부해봐야겠다.