본문 바로가기
ORACLE/ADMIN

[Oracle] 데이터베이스 생성 후속 작업, Data Dictionary 조회 안되는 것 문제 해결

by 🌻♚ 2020. 7. 11.

데이터베이스 생성 후속 작업

 

이전 글에서 데이터베이스 수동생성하는 작업을 진행했습니다. 수동으로 작업을 진행 했을 때 문제없이 데이터베이스를 사용할 수 있지만, 몇가지 안되는 기능들이 있어 후속 작업을 진행해주어야 합니다. dbca로 데이터베이스를 생성했을 때 자동으로 해주는 후속작업을 따로 해주는 것입니다.  Database 수동 생성하는 방법은 아래 링크를 통해서 확인할 수 있습니다.

 

[Oracle] 데이터베이스 생성 SID 추가 CREATE DATABASE 명령어 사용

OS : Red Hat Enterprise Linux Server 6.10 DB : Oracle 11.2.0.1 Oracle Database에서 DBCA를 이용하지 않고 수동으로 CREATE DATABASE 명령어를 사용해서 데이터베이스를 생성하는 실습을 하려고합니다. 새로..

myjamong.tistory.com

 

1. Data Dictionary 조회 View 생성 catalog.sql

[oracle@host ~]$ sqlplus / as sysdba
SQL> select table_name from dba_tables;

테이블스페이스의 정보를 확인하려고 dba_tablespaces 뷰를 조회하려고 했지만 테이블이 없다는 ORA-00942에러가 발생합니다. 이는 데이터베이스 생성 후에 Data Dictionary를 생성해주는 작업을 해주지 않았기 때문에 발생하는 문제입니다. 이 문제를 해결하기 위해서 $ORACLE_HOME/rdbms/admin 경로 안에 catalog.sql 파일을 실행해주면 자동으로 Data Dictionary를 조회할 수 있는 뷰를 생성해줍니다. 해당 작업은 sys 계정에서 진행해주어야합니다.

 

SQL> @?/rdbms/admin/catalog.sql

"?"는 ORACLE_HOME의 경로를 의미합니다. 해당 쿼리를 실행완료된 이후 다시 Data Dictionary를 조회해보겠습니다.

 

SQL> select table_name from dba_tables;

문제 없이 dba_tables의 Data Dictionary 뷰가 보이는 것을 확인할 수 있습니다.

하지만, catalog.sql을 실행했다고 해서 모든 DataDictionary 뷰를 조회할 수 있는 것은 아닙니다. 아직 필요한 모든 뷰가 생성되지는 않았습니다. 대표적으로 dba_tablespaces의 뷰를 조회해보면 해당 뷰는 존재하지 않는다는 에러가 발생합니다.

 

SQL> select tablespace_name from dba_tablespaces;

이 문제는 catproc.sql 파일을 실행해서 해결할 수 있습니다.

 

 

2. Oracle Package 설치 catproc.sql

SQL> @?/rdbms/admin/catproc.sql

sys 계정에서 catproc.sql파일을 실행해줍니다. 해당 쿼리파일은 Oracle에서 제공해주는 dbms와 같은 패키지들을 만들어주는 쿼리이기도하고 아직 생성되지 않은 Data Dictionary 뷰들을 몇몇 생성해줍니다.

 

3. 계정 접속 경고 해결 pupbld.sql

사용자 계정을 생성해서 해당 계정으로 로그인할때 경고가 발생합니다.

SQL> create user hr identified by hr;

User created.

SQL> grant connect, resource to hr;

Grant succeeded.

SQL> conn hr/hr
Error accessing PRODUCT_USER_PROFILE
Warning:  Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
Connected.
SQL> show user
USER is "HR"

확인해보면 생성한 새로운 유저로 접속하는데 문제는 없습니다. 하지만, profile관련된 문제로 경로를 발생시킵니다. 해당 경고가 안보이도록 system 계정에서 pupbld.sql을 실행합니다.

 

SQL> conn system/oracle
@?/sqlplus/admin/pupbld.sql
SQL> conn hr/hr 
Connected.
SQL> show user
USER is "HR"

 

경고 없이 접속이 가능한 것을 확인했습니다.

 

댓글0