ORACLE_SID 추가 - ORACLE_SID chuga

[ASM disk 추가 방법]

0. ASM disk 조회 및 rebalance 모니터링

- disk 모니터링

SQL> select * from v$asm_operation; 

SQL> select est_work from v$asm_estimate;

- 적용 확인

SQL>select group_number, name, allocation_unit_size alloc_unit_size, state, type, total_mb,usable_file_mb

       from v$asm_diskgroup;

1. raw device

-- ASM disk 추가 

$ export ORACLE_SID=+ASM1

$ export ORACLE_HOME=$GRID_HOME

$ sqlplus / as sysasm

SQL> alter diskgroup OCR add disk '/dev/raw/raw15','/dev/raw/raw14','/dev/raw/raw13' rebalance power 1024;

SQL> alter diskgroup DATA add disk '/dev/raw/raw4','/dev/raw/raw3' rebalance power 1024;

SQL> alter diskgroup MGMT add disk '/dev/raw/raw1','/dev/raw/raw2' rebalance power 1024;

-- ASM disk 삭제

$ export ORACLE_SID=+ASM1

$ export ORACLE_HOME=$GRID_HOME

$ sqlplus / as sysasm

## 삭제시 경로 명이 아닌 name 으로 진행해야 한다. ( v$asm_disk -> name 컬럼 조회)

SQL> alter diskgroup OCR drop disk 'OCR_0001','OCR_0000','OCR_0002' rebalance power 1024;

SQL> alter diskgroup DATA drop disk 'DATA_0001','DATA_0000' rebalance power 1024;

SQL> alter diskgroup MGMT drop disk 'MGMT_0000','MGMT_0001' rebalance power 1024;

2. ASM device (oracleasm)

-- ASM disk 추가 

$ export ORACLE_SID=+ASM1

$ export ORACLE_HOME=$GRID_HOME

$ sqlplus / as sysasm

alter diskgroup OCR add disk 'OCR_0001','OCR_0000','OCR_0002' rebalance power 1024;

alter diskgroup DATA add disk 'DATA_0001','DATA_0000' rebalance power 1024;

alter diskgroup MGMT add disk 'MGMT_0000','MGMT_0001' rebalance power 1024;

-- ASM disk 삭제

$ export ORACLE_SID=+ASM1

$ export ORACLE_HOME=$GRID_HOME

$ sqlplus / as sysasm

alter diskgroup DATA drop disk 'ORCL:DATA101','ORCL:DATA102','ORCL:DATA103' rebalance power 1024;

alter diskgroup RECO drop disk 'ORCL:RECO201','ORCL:RECO202','ORCL:RECO203' rebalance power 1024;

alter diskgroup CRS drop disk 'ORCL:CRS301','ORCL:CRS302','ORCL:CRS303' rebalance power 1024;

alter diskgroup MGMT drop disk 'ORCL:GIMR401','ORCL:GIMR402','ORCL:GIMR403' rebalance power 1024;

목차

  • 1 오라클 수동설치
    • 1.1 OS 환경변수 설정
    • 1.2 DB nomount 실행
    • 1.3 DB 생성
    • 1.4 DB Open 확인
    • 1.5 오라클 설치 후 후속작업
    • 1.6 멀티 SID 사용 확인

1 오라클 수동설치

 attach_file

  • 테스트 완료 버전 (11g,12c,..)
  • CREATE DATABASE 명령어를 사용해서 DB 생성(dbca 사용하지 않고)
  • 신규 SID 생성 하여 개별 업무 관리

1.1 OS 환경변수 설정

  1. ORACLE_SID, ORACLE_HOME 환경변수 설정(Oracle Instance를 기동시 연결할 데이터베이스 정보)
  2. 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모두 올라와 있다면 각각 데이터베이스에 연결된 인스턴스 확인.

Toplist

최신 우편물

태그