"오라클 수동설치"의 두 판 사이의 차이
DB CAFE
(같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
== 오라클 수동설치 == | == 오라클 수동설치 == | ||
− | * 테스트 완료 버전 (11g,12c,..) | + | {{틀:타이틀 투명 |
− | + | |보더색=#696969 | |
+ | |배경색=#483d8b | ||
+ | |제목=* 테스트 완료 버전 (11g,12c,..) | ||
* CREATE DATABASE 명령어를 사용해서 DB 생성(dbca 사용하지 않고) | * CREATE DATABASE 명령어를 사용해서 DB 생성(dbca 사용하지 않고) | ||
* 신규 SID 생성 하여 개별 업무 관리 | * 신규 SID 생성 하여 개별 업무 관리 | ||
+ | }} | ||
+ | |||
+ | |||
=== OS 환경변수 설정 === | === OS 환경변수 설정 === | ||
229번째 줄: | 234번째 줄: | ||
2. invalid 상태인 오브젝트가 있는지 확인 | 2. invalid 상태인 오브젝트가 있는지 확인 | ||
− | + | <source lang=sql> | |
sql> select object_name from dba_objects where status='INVALID' and owner='SYS'; | sql> select object_name from dba_objects where status='INVALID' and owner='SYS'; | ||
+ | </source> | ||
3. password 파일 생성 | 3. password 파일 생성 | ||
− | + | <source lang=shell> | |
cd $ORACLE_HOME/dbs | cd $ORACLE_HOME/dbs | ||
orapwd file=orapwnewdb password=oracle | orapwd file=orapwnewdb password=oracle | ||
− | + | </source> | |
4. tnsnames.ora, listener.ora 파일 수정 | 4. tnsnames.ora, listener.ora 파일 수정 | ||
− | + | <source lang=shell> | |
cd $ORACLE_HOME/network/admin | cd $ORACLE_HOME/network/admin | ||
246번째 줄: | 252번째 줄: | ||
vi listener.ora | vi listener.ora | ||
− | + | </source> | |
259번째 줄: | 265번째 줄: | ||
------------------------------------------------- | ------------------------------------------------- | ||
− | + | <source lang=shell> | |
− | |||
cd $ORACLE_HOME/sqlplus/admin | cd $ORACLE_HOME/sqlplus/admin | ||
266번째 줄: | 271번째 줄: | ||
SQL> @pupbld | SQL> @pupbld | ||
− | + | </source> | |
− | + | *pupbld.sql 스크립트는 Product User Profile 테이블 및 관련 프로시져를 생성. | |
− | |||
− | |||
=== 멀티 SID 사용 확인 === | === 멀티 SID 사용 확인 === | ||
306번째 줄: | 309번째 줄: | ||
* 주요 프로세스중 하나인 smon의 프로세스가 기동중인지 확인. | * 주요 프로세스중 하나인 smon의 프로세스가 기동중인지 확인. | ||
* prod와 orcl모두 올라와 있다면 각각 데이터베이스에 연결된 인스턴스 확인. | * prod와 orcl모두 올라와 있다면 각각 데이터베이스에 연결된 인스턴스 확인. | ||
+ | [[Category:oracle]] |
2020년 11월 9일 (월) 00:21 기준 최신판
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 오라클 수동설치[편집]
attach_file
- 테스트 완료 버전 (11g,12c,..)
- CREATE DATABASE 명령어를 사용해서 DB 생성(dbca 사용하지 않고)
- 신규 SID 생성 하여 개별 업무 관리
1.1 OS 환경변수 설정[편집]
- ORACLE_SID, ORACLE_HOME 환경변수 설정(Oracle Instance를 기동시 연결할 데이터베이스 정보)
- oraenv를 사용하여 다중 DB 접속 환경변수 변경작업
- 오라클 설치 위치 : /u01/app (사용자별로 다름)
$ . oraenv
ORACLE_SID = [orcl] ? prod
ORACLE_HOME = [/u01/app/oracle] ? /u01/app/oracle/product/11.2.0/dbhome_1
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
[oracle@6host ~]$ echo $ORACLE_SID
prod
$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/dbhome_1
1. oratab 파일 수정 oraenv를 사용해서 환경변수 변경작업이 가능하지만, ORACLE_HOME 경로같은 경우는 오타 문제 때문에 /etc/oratab 파일을 열어 변수를 정의하듯 미리 변경할 정보를 저장해두면 더 간편하게 환경변수 수정 가능.
$ vi /etc/oratab
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
- orcl는 기존 생성한 SID
- ORACLE_SID=prod (추가 생성할 데이터베이스)
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
prod:/u01/app/oracle/product/11.2.0/dbhome_1:N
oratab 파일 수정 후 oraenv 명령으로 prod로 변경.
$ . oraenv
ORACLE_SID = [prod] ? prod
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
ORACLE_SID 값만 입력하면 ORACLE_HOME에 대한 정보를 자동 인식하여 변경 완료.
=== 오라클 PFILE/SPFILE 생성 ===
1. pfile 생성
* 파라미터 파일에 DB명,컨트롤파일,SGA_TARGET,... 추가
<source lang=shell>
$ cd $ORACLE_HOME/dbs
[oracle@host dbs]$ ls
hc_DBUA0.dat hc_orcl.dat init.ora initorcl.ora lkORCL orapworcl spfileorcl.ora
[oracle@host dbs]$ vi initprod.ora
db_name=prod
control_files='/u01/app/oracle/oradata/prod/control01.ctl'
sga_target=400M
remote_login_passwordfile='EXCLUSIVE'
- Database Create는 nomount 상태에서 가능.
- 파라미터 파일을 읽을 수 있는 상태까지 Database를 올리는 작업이 필요하여 pfile을 직접 생성하여 최소로 필요한 내용 작성.
- pfile은 $ORACLE_HOME/dbs 경로에 init<ORACLE_SID>.ora 형태로 파일이 존재해야함.
- 기본적으로 Parameter file을 열기 위해서는 db_name, control_files, shared_pool_size 그리고 db_cache_size 이 4개지 파라미터가 정의되어 있어야함.
- (하지만 sga_target 파라미터를 정의한다면 sga 메모리를 자동으로 할당하기 때문에 shared_pool_size와 db_cache_size의 정보를 제외.
- remote_login_passwordfile은 Password fie이 하나의 데이터베이스에서 사용할 수 있도록 설정.(필수요소는 아님)
2. spfile 생성
$ sqlplus / as sysdba
SQL> create spfile from pfile;
File created.
SQL> !ls $ORACLE_HOME/dbs
hc_DBUA0.dat hc_orcl.dat init.ora initorcl.ora initprod.ora lkORCL orapworcl spfileorcl.ora spfileprod.ora
pfile을 사용해서 실행할 수 있지만, 편의상 작성한 pfile로 spfile을 생성하고 Database를 실행.
spfile 생성 작업은 DB가 내려가있는 상태에서 만들 수 있고 생성 이후 spfile<ORACLE_SID>.ora 형태의 파일이 생성된것 확인 필요.
1.2 DB nomount 실행[편집]
SQL> startup nomount
ORACLE instance started.
Total System Global Area 417546240 bytes
Fixed Size 2213936 bytes
Variable Size 134219728 bytes
Database Buffers 272629760 bytes
Redo Buffers 8482816 bytes
- Database 생성을 위해 nomount 상태로 DB 실행.
(정상적으로 올라왔다면 생성한 pfile에 문제 없다는 뜻)
1.3 DB 생성[편집]
1. 오라클 데이터 저장 경로 생성 (T/S,REDO로그,등.. )
$ mkdir /u01/app/oracle/oradata/prod
DB 생성하면서 만들어질 datafile, redologfile들의 경로 생성
$ sqlplus / as sysdba
CREATE DATABASE prod
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
CONTROLFILE REUSE
LOGFILE GROUP 1 ( '/u01/app/oracle/oradata/prod/redo01a.log'
, '/u01/app/oracle/oradata/prod/redo01b.log' ) SIZE 100M REUSE,
GROUP 2 ( '/u01/app/oracle/oradata/prod/redo02a.log'
, '/u01/app/oracle/oradata/prod/redo02b.log' ) SIZE 100M REUSE
DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' SIZE 400M REUSE AUTOEXTEND EXTENT MANAGEMENT LOCAL
ON SYSAUX DATAFILE '/u01/app/oracle/oradata/prod/sysaux01.dbf' SIZE 200M REUSE AUTOEXTEND
ON DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/prod/temp01.dbf' SIZE 100M REUSE AUTOEXTEND
ON UNDO TABLESPACE UNDOTBS1 DATAFILE '/u01/app/oracle/oradata/prod/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND \
ON CHARACTER SET KO16MSWIN949;
-- CHARACTER SET AL32UTF8
-- NATIONAL CHARACTER SET AL16UTF16;
Database created.
- USER SYS IDENTIFIED ... : SYS 유저 비밀번호 지정
- USER SYSTEM IDENTIFIED ... : SYSTEM 유저 비밀번호 지정
- CONTROLFILE :REUSE 명령을 사용하기 위해 명시. LOGFILE GROUP 이나 DATAFILE들에서도 REUSE(파일이 이미 존재한다면 해당 파일 이름 그대로 사용하여 덮어써서 DB를 생성) 옵션
- LOGFILE GROUP : 로그 파일은 최소 2개의 그룹으로 지정 해야함 .
- EXTENET MANAGEMENT LOCAL : LOCAL 방식은 Tablespace에 대한 free space 공간을 datafile 자체에서 bitmap을 이용해서 관리하는 방법.
- 다른방법으로 Tablespace의 free space 공간에 대한 정보를 data dictionary에서 관리하는 DICTIONARY 방식이 있지만
- data dictionary에 대한 경합이 발생하고 성능저하의 원인으로 Oracle 8i부터 LOCAL 방식이 처음 소개되면서 이 방식으로 관리하도록 권장.
리두로그 3개 그룹으로 추가 예)
CREATE DATABASE "prod"
LOGFILE
GROUP 1 ('/u01/app/oracle/oradata/prod/redo01.log') SIZE 20M,
GROUP 2 ('/u01/app/oracle/oradata/prod/redo02.log') SIZE 20M,
GROUP 3 ('/u01/app/oracle/oradata/prod/redo03.log') SIZE 20M
DATAFILE '/u01/app/oracle/oradata/prod/system01.dbf' SIZE 700M EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/app/oracle/oradata/prod/sysaux01.dbf' SIZE 500M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/prod/temp01.dbf' SIZE 2000M
UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u01/app/oracle/oradata/prod/undotbs01.dbf' SIZE 300M AUTOEXTEND ON NEXT 100M MAXSIZE 1000M
CHARACTER SET KO16MSWIN949;
1.4 DB Open 확인[편집]
1. DB 오픈 상태 확인
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
prod OPEN
Instance가 Open 상태인지 확인
1.5 오라클 설치 후 후속작업[편집]
- 하지만 수동 생성했을 때 Data Dictionary 조회작업이나, Oracle에서 제공하는 패키지들이 실행되지 않음.
- 이런 문제들을 해결하기 위해 몇 가지 후속작업 진행 해야함.
1. 딕셔너리,패키지(catalog.sql, catproc.sql) 실행
cd $ORACLE_HOME/rdbms/admin/
sqlplus "/as sysdba"
SQL> @catalog.sql
=>데이터 딕셔너리 뷰와 다이나믹 퍼포먼스 뷰를 생성
SQL> @catproc.sql
=>PL/SQL을 사용하는데 필요한 패키지 및 프로시져를 생성
2. invalid 상태인 오브젝트가 있는지 확인
sql> select object_name from dba_objects where status='INVALID' and owner='SYS';
3. password 파일 생성
cd $ORACLE_HOME/dbs
orapwd file=orapwnewdb password=oracle
4. tnsnames.ora, listener.ora 파일 수정
cd $ORACLE_HOME/network/admin
vi tnsnames.ora
vi listener.ora
※ PUPBLD.SQL
유저 생성후 로그인 할때 아래 메세지 발생시.
PRODUCT_USER_PROFILE를 액세스하는데 오류입니다 경고: 사용자 프로파일 정보가 적재되지 않았습니다. SYSTEM으로 PUPBLD.SQL 실행이 필요합니다
cd $ORACLE_HOME/sqlplus/admin
sqlplus system/******
SQL> @pupbld
- pupbld.sql 스크립트는 Product User Profile 테이블 및 관련 프로시져를 생성.
1.6 멀티 SID 사용 확인[편집]
1.환경변수 변경
$ . oraenv
ORACLE_SID = [prod] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
$ sqlplus / as sysdba
2.prod에 붙어서 작업하다가 orcl로 변경해서 작업하기 위해서 oraenv로 환경변수의 정보 변경 후 로그인.
1) orcl instance startup
SQL> startup
2) orcl instance 기동
SQL> select instance_name, status from v$instance;
orcl에서도 마찬가지로 instance의 open 상태를 확인.
$ ps -ef | grep smon
- 주요 프로세스중 하나인 smon의 프로세스가 기동중인지 확인.
- prod와 orcl모두 올라와 있다면 각각 데이터베이스에 연결된 인스턴스 확인.