'02.Oracle'에 해당되는 글 248건

  1. 2008.07.24 [oracle] oracle system password변경하기
  2. 2008.07.24 [oracle] 오라클 보안
  3. 2008.07.23 [oracle] tablespace 삭제 및 생성
  4. 2008.07.23 [oracle] imp 시 buffer IMP-00032 error
  5. 2008.07.23 [oracle] system 계정 암호변경및 락해체
  6. 2008.07.23 [oracle] table lock 확인
  7. 2008.07.22 [oracle] 리눅스에서 오라클 리스너 설정 1
  8. 2008.07.22 [Fedora] Network
  9. 2008.07.21 [oracle] OC4J Configuration issue... (^.^)
  10. 2008.07.21 [oracle] enterprise manager start error
  11. 2008.07.21 [oracle] iSQL*Plus의 시작 및 중단:
  12. 2008.07.21 [oracle] Oracle Enterprise Manager Database Control의 시작 및 중단:
  13. 2008.07.18 [oracle] $ lsnrctl start 리스너 시작이 안될때.. TNS-01201: Listener cannot find executable 1
  14. 2008.07.18 [oracle] oracle 사용자 추가 (특정권한만
  15. 2008.07.18 [oracle] Linux Oracle 설치와 활용(Ⅰ)
  16. 2008.07.18 [oracle] oracle 자동 시작/종료 1
  17. 2008.07.18 [oracle] 오라클 원격 접속하기
  18. 2008.07.17 [oracle] 삽질...설치기
  19. 2008.07.17 [oracle] sqlplus 안될때 삽질....
  20. 2008.07.17 [oracle] linux pedora 9core 에 oracle11g 설치시 에러 ins_rdbms.mk 2
  21. 2008.07.17 [oracle] ORA-01034: ORACLE not available 3
  22. 2008.07.17 [oracle] 기본계정..
  23. 2008.07.17 [oracle] Linux에서 오라클 삭제하기
  24. 2008.07.17 [oracle] SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
  25. 2008.07.14 linux에서 오라클11g 설치 2
  26. 2008.07.14 [oracle] oracle base 설치정보..
  27. 2008.07.14 [Ubuntu Hardy Heron] Oracle 11g 설치.
  28. 2008.07.14 페도라에서 오라클10g 설치성공담
  29. 2008.07.14 [oracle] imp error 원인...imp-00003, ora-01435, imp-00000 1
  30. 2008.07.08 [oracle] 오라클개잘바튜닝가이드
02.Oracle/DataBase2008. 7. 24. 12:42
반응형
sqlplus "/as sysdba"

SQL> show user

USER is "SYS"


이제 암호를 원하는 대로 설정합니다.


SQL> alter user sys identified by 암호;

SQL> alter user system identified by 암호;


이제 접속이 잘 될 것입니다.


SQL> connect sys/암호 as sysdba

SQL> connect system/암호

Posted by 1010
02.Oracle/DataBase2008. 7. 24. 12:41
반응형

Parameter 설정을 통한 오라클 보안

오라클의 보안을 강화하기 위해 지난 호에서 알아본 "OEM(Oracle Enterprise Manager)을 이용한 오라클 계정 관리"에 이어서 이번 호에서는 파라미터 설정을 통해 오라클의 보안을 강화할 수 있는 방법에 대해 알아보겠다.

1. Data Dictionary 보호

Data Dictionary는 데이터베이스의 핵심 정보가 기록되는 곳으로 데이터 베이스의 구조, 객체에 대한 정의 및 공간 할당, 사용자, 롤(role), 권한, 감사 와 같은 정보들을 제공한다. Data Dictionary는 테이블의 형태로 제공되며 데이터베이스 엔진에서 관리하여 사용자가 직접 변경할 수 없도록 되어있다. 또한 Data Dictionary는 대부분 DBA_, ALL_, USER_ 로 시작하는 접두어를 가지고 있어 구분하기가 쉽다.
이러한 Data Dictionary는 'DROP ANY TABLE' 시스템 권한 가진 사용자가 악의적으로 Data Dictionary 테이블의 삭제가 가능하므로 오라클에서 제공하는 파라미터를 변경하여 DBA 권한으로 접속한 사용자만이 Data Dictionary의 ANY 시스템권한을 사용할 수 있도록 해야 한다.

** 파라미터 파일
오라클 데이터베이스 인스턴스의 초기화 설정에 사용되며 텍스트 형식인 PFILE과 바이너리 형태인 SPFILE이 존재한다. PFILE은 init.ora과 같은 이름으로 SPFILE은 spfile.ora 같은 이름으로 각각 생성되며 PFILE과 SPFILE파일이 모두 존재할 경우 SPFILE파일이 우선순위를 가진다. Oracle 9i 에서는 디폴트 설치 시 기본적으로 SPFILE을 이용하게 된다. OS별 파라미터 파일의 경로는 다음과 같다.


OS 경로
Windows $ora_home\database\spfile.ora
Unix/Linux $ora_home/dbs/spfile.ora

OEM(Oracle Enterprise Manager)을 이용하여 파라미터 파일을 확인하고 설정하기 위해서는 다음과 같은 방법을 이용한다.
① OEM에서 [데이터베이스] -> [세부정보보기/편집] -> [데이터베이스 편집] -> [모든 초기화 매개변수...] 창을 열어 [모든 매개변수]탭을 확인하면 다음과 같이 현재 적용된 모든 파라미터의 값을 확인할 수 있다.
Data Dictionary와 관련된 파라미터는 7_DICTIONARY_ACCESSIBILITY으로 해당 값을 FALSE로 설정하여 Data Dictionary를 보호해야 한다.

② [모든 매개변수]탭에서 [SPFILE]을 선택하여 현재 구성파일(SPFILE)에 있는 O7_DICTIONARY_ACCESSIBILITY 파라미터의 값이 TRUE로 되어 있을 경우 이를 변경하여야 한다.
Oracle 9i 및 10g에서는 O7_DICTIONARY_ACCESSIBILITY 파라미터의 값이 기본적으로 FALSE로 설정되어 있으나 Oracle8i는 TRUE로 설정되어 있으므로 반드시 변경하여야 한다.
③ O7_DICTIONARY_ACCESSIBILITY 파라미터의 값을 변경한 후 [적용]을 누르면 다음과 같이 데이터베이스를 재시작하라는 메시지가 뜬다. 이때 데이터베이스를 재시작해야만 변경된 파라미터의 값이 적용된다.

참고로 SPFILE에서 동적 매개변수를 변경할 경우 현재 실행중인 메모리에 즉시 반영이 되고 동시에 SPFILE에 저장되나 O7_DICTIONARY_ACCESSIBILITY와 같은 정적 매개변수의 값이 변경된 경우 변경된 값은 SPFILE파일에만 저장되므로 데이터베이스를 재시작하여 변경된 값을 적용해야 한다.

2. 원격 인증기능 설정

오라클에서 지원하는 원격인증 기능이 활성화되면, 원격의 클라이언트는 오라클 데이터베이스에 접속할 수 있도록 허용된다. 즉, 데이터베이스는 적절하게 인증된 (클라이언트 자체OS의 인증) 모든 클라이언트들을 신뢰한다. 그러나 PC와 같은 클라이언트의 경우 Virus, Worm, Backdoor 등이 설치되어 있을 수 있어 데이터베이스에 접속할 경우 적절한 인증여부를 보장할 수 없어 보안이 대단히 취약해진다.
이러한 원격 인증기능을 비활성화시켜 오라클 데이터베이스에 접속하는 클라이언트는 Server-Based 인증(데이터베이스 어플리케이션의 인증)을 하도록 파라미터를 변경하여 보안을 강화하여야 한다.

OEM(Oracle Enterprise Manager)을 이용하여 파라미터 파일을 확인하고 설정하기 위해서는 다음과 같은 방법을 이용한다.
① OEM에서 [데이터베이스] -> [세부정보보기/편집] -> [데이터베이스 편집] -> [모든 초기화 매개변수...] 창을 열어 [모든 매개변수]탭의 구성파일(SPFILE)을 선택한 후 파리미터 값을 확인한다.
원격 인증기능과 관련된 파라미터는 REMOTE_OS_AUTHENT으로 해당 값을 FALSE로 설정하여 OS인증이 아닌 오라클 어플리케이션의 인증을 받도록 설정한다.

Oracle 9i 및 10g 에서는 O7_DICTIONARY_ACCESSIBILITY 파라미터와 같이 REMOTE_OS_AUTHENT 파라미터의 값이 기본적으로 FALSE로 설정되어 있으나 Oracle8i는 TRUE로 설정되어 있으므로 반드시 변경하여야 한다.
② REMOTE_OS_AUTHENT 파라미터의 값을 변경한 후에는 Data Dictionary 를 위한 파라미터 변경과 마찬가지로 데이터베이스를 재시작하여 변경된 파라미터값을 적용하면 된다.

3. Listener의 설정 제한

Listener는 오라클 데이터베이스에 원격의 클라이언트가 접속할 수 있도록 실행되는 프로세스이며 클라이언트측의 요청을 받아 실제 쿼리문을 수행하는 서버프로세스를 생성하게 된다.
그러나 Listener의 패스워드는 디폴트로 설정되어 있지 않아 오라클의 service Name을 알경우 공격자에 의하여 Listener프로세스가 시작/정지 또는 재설정될 수 있다.

** Service Name

하나의 오라클 서버에 여러 DBMS프로세스(인스턴스)가 동작할 경우 이를 구별하기 위해 하나의 인스턴스를 Service Name으로 나타내게 된다. 이러한 Service Name은 sid, 서버IP, 접속 프로토콜 등의 정보로 구성이 되며 TNSNAME.ORA 파일에 의해서 정의되게 된다.


이러한 Listener에 패스워드를 설정하여 임의의 공격자가 Listener를 정지시켜 원격의 사용자가 오라클에 접속하지 못하게 하는 것을 방지하여야 한다. Listener에 패스워드는 LSNRCTL 유틸리티의 change_password 명령어를 이용하여 설정이 가능하며 설정된 패스워드는 LISTENER.ORA파일에 암호화되어 저장되게 된다.
Listener에 패스워드를 설정하기 위해서는 LSNCTL유틸리티를 사용하며 다음과 순서로 진행된다.
OS> lsnrctl LSNRCTL> set current_listener LISTENER
LSNRCTL> set save_config_on_stop on
LSNRCTL> change_password
Old password: 처음의 경우 enter
New password: ******
Reenter new password: ******

위와 같이 설정한 후 Listener에 설정된 내용을 확인하기 위해서는$ORACLE_HOME/network/admin/listener.ora 경로에 존재하는 LISTENER.ORA파일을 텍스트에디터를 이용하여 확인해 보면 된다.
LISTENER.ORA파일에 다음과 같이 설정되어 있을 경우 Listener의 시작 및 정지 시에 패스워드를 물어보게 된다.

SAVE_CONFIG_ON_STOP_LISTENER = ON
PASSWORDS_LISTENER = 2D6C48144CF753AC

또한 Listener의 설정파일인 LISTENER.ORA은 LSNRCTL 유틸리티의 SET 명령어를 사용하여 수정이 가능하므로 다음과 같은 파라미터를 수정하여 원격에서 LSNRCTL 유틸리티를 사용한 Listener의 설정을 변경할 수 없도록 해야 한다.
Listener의 설정을 변경하기 위해서는 OS상에서 LISTENER.ORA파일을 텍스트 에디터로 열어 수정해야 한다.
ADMIN_RESTRICTIONS_listener_name=ON


4. 접근 IP 대역 제한

오라클에서 임의의 사용자에 의한 원격 접속을 차단하기 위해 Listener의 IP 접근제한을 설정할 수 있다. 특정 클라이언트에서의 접근만 가능하도록 접근 가능 IP를 설정하여 불필요한 외부의 사용자가 접근하는 것을 차단한다.
환경설정 파일에서 접근 가능한 IP 대역과 접근 불가능한 IP대역을 설정하여 네트워크 접근통제를 할 수 있으며 Oracle 8i 는 ORACLE_HOME/network/admin/protocol.ora 파일에서, Oracle9i 에서는 $ORACLE_HOME/network/admin/sqlnet.ora 파일에서 설정을 한다.
SQLNET.ORA 및 PROTOCOL.ORA파일을 OS상에서 텍스트 에디터로 열어 다음과 같이 편집하여 설정을 한다.
TCP.VALIDNODE_CHECKING = YES
TCP.INVITED_NODES=(접속을 허용할 ip)
TCP.EXCLUDED_NODES =(접속을 차단할 ip)

tcp.validnode_checking를 YES 로 설정한 후 접속을 허용·차단할 IP 또는 호스트 네임을 ','를 구분자로 하여 넣어주면 된다.
다음 예제와 같이 접근통제를 할 IP, 및 네트워크 대역을 넣어 설정할 수 있다.
TCP.VALIDNODE.CHECKING = YES
TCP.INVITED_NODES =(192.168.100.12, 192.168.100.13, dbms.com)
TCP.EXCLUDED_NODES =(192.168.200.0)

tcp.invited_nodes 만을 사용할 경우 허용된 IP에서만 접근이 되며 그 외의 IP에 대해서는 접근이 불가능하다. 이때 주의해야 할 것은 반드시 자기자신의 IP를 추가해줘야 한다는 것이며 tcp.excluded_nodes를 같이 사용하여 차단할 IP를 추가하여도 된다.
SQLNET.ORA 및 PROTOCOL.ORA파일을 수정한 후에는 Listener를 재시작해야 해당 설정이 적용된다.


[저자] 안랩코코넛 컨설팅사업부 김진수(midorii2@coconut.co.kr)

Posted by 1010
02.Oracle/DataBase2008. 7. 23. 15:40
반응형
create tablespace TS_MISD datafile 'E:MIS_DBTS_MISD01.dbf' size 2000M; 2GByte로 테이블 생성

create tablespace TS_MISI datafile 'E:MIS_DBTS_MISI01.dbf' size 100M; 2GByte로 테이블 생성


alter tablespace TS_MISI
DEFAULT STORAGE(
INITIAL 65536
NEXT 0
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0);

alter tablespace TS_MISD
DEFAULT STORAGE(
INITIAL 65536
NEXT 0
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0);


CREATE TABLESPACE TS_FMSD
DATAFILE
'E:MIS_DBTS_FMSD03.DBF' SIZE 2097152 K ,
'E:MIS_DBTS_FMSD02.DBF' SIZE 2097152 K ,
'E:MIS_DBTS_FMSD01.DBF' SIZE 2097152 K
MINIMUM EXTENT 64 K
NOLOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64 K;

CREATE TABLESPACE TS_MISD DATAFILE
'E:MIS_DBTS_MISD01.DBF' SIZE 2097152 K
NOLOGGING
ONLINE
PERMANENT;
MINIMUM EXTENT 64 K;

CREATE TABLESPACE TDMS_TEMP DATAFILE
'/oracle/oradata/tdms_temp.DBF' SIZE 2097152 K
NOLOGGING
ONLINE
PERMANENT;
MINIMUM EXTENT 64 K;


EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64 K;


CREATE TABLESPACE TS_MISI
DATAFILE
'E:MIS_DBTS_MISI02.DBF' SIZE 2097152 K,
'E:MIS_DBTS_MISI01.DBF' SIZE 2097152 K
MINIMUM EXTENT 64 K
NOLOGGING
ONLINE
PERMANENT;
--EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64 K;



--PCTINCREASE : initialize의 증가치 퍼센트고

---자료영역 늘리기
SQL> Alter tablespace riaa_data add datafile 'c:riaadata1.ora' size 1M;
--테이블스페이스의 수정
테이블 영역이 변경되었습니다. ( 테이타 자료영역이 4M로 증가된다)

----------------------------
--***Object가 있을 경우 삭제 방법
------------------
SQL> drop tablespace riaa_data;
--테이블스페이스에 Object영역이 있으므로 삭제가 안된다.
라인 1 에 오류:
ORA-01549: 테이블 영역이 비어있지 않으므로 INCLUDING CONTENTS를 사용해 주십시오.

***Object가 있을 경우 삭제 방법
SQL> Drop tablespace TS_BILD including contents;
테이블 영역이 삭제되었습니다.
--user는 지워지지 않는다.. 다만 그 사용영역만 삭제된다.



2. SYSTEM and Non-SYSTEM Tablespace
- SYSTEM Tablespace : data dictionary 정보, SYSTEM rollback segment
- Non-SYSTEM Tablespace : Rollback segments, Temporary segments, App' data, App' index

3. CREATE TABLESPACE

CREATE TABLESPACE tablespace
DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]]...
[MINIMUM EXTENT integer [K|M]]
[DEFAULT storage_clause]
[PERMANENT|TEMPOARY] -- default PERMANENT
[ONLINE|OFFLINE] -- default ONLINE

예) CREATE TABLESPACE app_data
DATAFILE '/DISK4/app01.dbf' SIZE 100M,
'/DISK5/app02.dbf' SIZE 100M
MINIMUM EXTENT 500K
DEFAULT STORAGE (INITIAL 500K NEXT 500K
MAXEXTENTS 500 PCTINCREASE 0) ;

* Storage Parameters
- INITIAL : first extent의 size를 정한다. 최소 size는 2blocks이다. (2 * DB_BLOCK_SIZE)
default는 5 bolcks (5 * DB_BLOCK_SIZE)
- NEXT : 다음 extent의 size를 정한다. 최소 size는 1block 이다.
default는 5 bolcks (5 * DB_BLOCK_SIZE)
- MINEXTENTS : segment가 생성되었을 때 할당된 extent의 갯수.
default는 1
- PCTINCREASE n : 다음에 extent가 생성될 때 이전 extent보다 n% 증가된 size (PCT: percent)
default는 50
- MAXEXTENTS : segment가 갖을 수 있는 extent의 최대 수

4. Temporary Tablespace

CREATE TABLESPACE sort
DATAFILE '/DISK2/sort01.dbf' SIZE 50M
MINIMUM EXTENT 1M
DEFAULT STORAGE (INITIAL 2M NEXT 2M
MAXEXTENTS 500 PCTINCREASE 0)
TEMPORARY ;

5. Tablespace의 size 설정 (data file을 추가하면서...)

ALTER TABLESPACE app_data
ADD DATAFILE
'/DISK5/app03.dbf' SIZE 200M ;

6. Data File이 꽉차면 자동으로 datafile을 증가하게 만드는 방법.

ALTER TABLESPACE app_data
ADD DATAFILE
'/DISK6/app04.dbf' SIZE 200M
AUTOEXTEND ON NEXT 10M
MAXSIZE 500M ;

* 3가지 방법이 있다.
1) CREATE DATABASE
2) CREATE TABLESPACE DATAFILE
3) ALTER TABLESPACE ADD DATAFILE

7. 기존에 존재하는 datafile의 size를 resize하는 방법

ALTER DATABASE DATAFILE
'/DISK5/app02.dbf' RESIZE 200M ;

8. Changing the Storage Settings

ALTER TABLESPACE app_data
MINIMUM EXTENT 2M ;

ALTER TABLESPACE app_data
DEFAULT STORAGE
(INITIAL 2M NEXT 2M
MAXEXTENTS 999) ;

9. Tablespace OFFLINE/ONLINE
- tablespace가 만들어지면 default가 ONLINE이다.
- OFFLINE이 되면 다른 user의 access가 불가능하다.
- SYSTEM tablespace는 OFFLINE이 불가!
- transaction이 끝나지 않은 tablespace는 OFFLINE 불가!

ALTER TABLESPACE tablespace
{ ONLINE | OFFLINE [NORMAL|TEMPORARY|IMMEDIATE] }
- Normal : checkpoint를 적용시키고 offline한다.
- Temporary : datafile 중에서 online datafile에만 checkpoint를 적용시키고 offline한다.
- Immediate : checkpoint 없이 offline한다.

예) ALTER TABLESPACE app_data OFFLINE ;

10. Moving Data File : ALTER TABLESPACE
- 반드시 offline 한 상태에서 한다.
- target data file이 반드시 존재해야 한다.

ALTER TABLESPACE app_data
RENAME DATAFILE '/DISK4/app01.dbf'
TO '/DISK5/app01.dbf' ;

11. Moving Data File : ALTER DATABASE
- 반드시 database가 mount 상태여야 한다.
- target data file이 반드시 존재해야 한다.
- shutdown하고 host상태에서 datafile을 제거해야 한다.

ALTER DATABASE RENAME FILE
'/DISK1/system01.dbf' TO '/DISK2/system01.dbf' ;

12. READ-ONLY Tablespace 상태
- 오직 select만 할 수 있다.
- CREATE는 안되고... DROP은 할 수 있다.
- user들이 data변경을 못하고, backup과 recovery가 쉽다.

ALTER TABLESPACE app_data
READ ONLY

ALTER TABLESPACE app_data
READ WRITE -- read only 상태를 다시 read write상태로 바꿔준다.

* 주의점!
- tablespace가 반드시 online상태여야 한다.
- active transaction이 허용되지 않아야 한다.
- tablespace가 active rollback segment를 갖고 있으면 안된다.
- online backup중엔 못한다.

13. DROP TABLESPACE
- file 삭제는 host에 나가서 삭제를 해야 한다.

DROP TABLESPACE app_data
INCLUDING CONTENTS ;

* including contents를 안썼을 때, tablespace가 비워져 있어야만 drop이 된다.
including contents는 데이터가 들어 있어도 tablespace를 삭제하겠다는 뜻이다.

14. DBA_TABLESPACES : tablespace 정보를 갖고 있다.
- TABLESPACE_NAME, NEXT_EXTENT, MAX_EXTENTS, PCT_INCREASE, MIN_EXTLEN, STATUS, CONTENTS

SVRMGR> SELECT tablespace_name, initial_extent, next_extent,
2 max_extents, pct_increase, min_extlen
3 FROM dba_tablespaces ;

15. DBA_DATA_FILES : file에 관한 정보를 갖고 있다.
- FILE_NAME, TABLESPACE_NAME, BYTES, AUTOEXTENSIBLE, MAXBYTES, INCREMENT_BY

SVRMGR> SELeCT file_name, tablespace_name, bytes,
2 autextensible, maxbytes, increment_by
3 FROM dba_data_files ;

16. Contol File 정보
- V$DATAFILE : ts 
Posted by 1010
02.Oracle/DataBase2008. 7. 23. 15:28
반응형
buffer부족시
만약 IMP-00032까지 나올 경우에는 buffer를 충분히 주고 import합니다.
ex) imp system/manager file=test.dmp full=y log=test.log buffer=20000000
Posted by 1010
02.Oracle/DataBase2008. 7. 23. 15:05
반응형
alter user system identified by pass(아무거나) account unlock;
Posted by 1010
02.Oracle/DataBase2008. 7. 23. 14:38
반응형

select 'alter system kill session '''||sid||','||serial#||''';'
from v$session
where sid in (select distinct sid from v$lock where type ='TM');
Posted by 1010
02.Oracle/DataBase2008. 7. 22. 12:20
반응형
오라클 리스너 설정

$ORACLE_HOME/network/admin/   디렉토리에는 네트워크관련 환경설정파일들이 있습니다. listener.ora, tnsname.ora 이지요.

listener.ora 파일 설정
 

#
# Installation Generated Net8 Configuration
# Version Date: Jun-17-97
# Filename: Listener.ora
#
LISTENER =
  (ADDRESS_LIST =
        (ADDRESS= (PROTOCOL= IPC)(KEY=
<Oracle_SID>))
        (ADDRESS= (PROTOCOL= IPC)(KEY= PNPKEY))
        (ADDRESS= (PROTOCOL= TCP)(Host= 210.123.5.17)(Port= 1521))
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME= linux.)
      (ORACLE_HOME= /usr1/oracle/app/oracle/product/8.0.5)
      (SID_NAME =
<Oracle_SID>)
    )
    (SID_DESC =
      (SID_NAME = extproc)
      (ORACLE_HOME = /usr1/oracle/app/oracle/product/8.0.5)
      (PROGRAM = extproc)
    )
  )
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10

TRACE_LEVEL_LISTENER = OFF
~
~



리스너 명령요약

lsnrctl start  :   리스너의 시작
lsnrctl status :  리스너의 동작 상태확인
lsnrctl stop   :  리스터의 동작 중지

6. Oracle에서 환글 데이트 처리

1. sqlplus system/manager
2. SQL > select convert('a','KO16KSC5601','US7ASCII') from dual;
3. SQL > update sys.prop$ set value$ = 'KO16KSC5601'
             where name = 'NLS_CHARACTERSET';

4. SQL> select name, value$ from sys.prop$ where value$ = 'KO16KSC5601'

제대로 출력이 된다면 ...  아니면 처음부터 다시..

5. SQL> commit;
6. shutdown , startup


Posted by 1010
02.Oracle/DataBase2008. 7. 22. 09:27
반응형
리눅스에서의 네트워크 장치 이름

    랜카드 장착시 -> '/dev/eth0'  ,  '/dev/eth1'  ,  ...




☆ IP 주소

- 각 컴퓨터 랜카드에 부여되는 고유한 주소

예) 255 . 255 . 255 . 255




☆ 네트워크 주소

- 같은 네트워크에 있는 공통된 주소.

- 각 IP에 서브넷 마스크( C클래스의 경우 : 255 . 255 . 255 . 0 ) 를 XOR하면 나오는 주소.


예)  리눅스 서버 IP          : 192 . 168 . 184 . 100

      리눅스 클라이언트 IP : 192 . 168 . 184 . 200

      윈도우 클라이언트 IP : 192 . 168 . 184 . 201


      >> 굵은 부분이 네트워크 주소

      >> 밑줄 부분이 사설 네트워크 주소

           : 외부와 분리된 별도의 네트워크 공인 IP가 부족할때 사용함.




☆ Broadcast

- 내부 네트워크의 모든 컴퓨터가 듣게되는 주소.

- 네트워크 주소 + 255

   예)  ( C클래스 )  192 . 168 . 184 . 255




☆ Gateway , Router

- 게이트웨이 = 라우터

- 네트워크 간에 데이터를 전송하는 장비 또는 컴퓨터.

- 외부 네트워크로 나가기 위한 통로.

- 게이트웨이 주소 마지막 숫자는 관리자가 정하기 나름.

※ 게이트웨이 를 별도로 추가시

    # route  add  default  gw  <게이트웨이 주소>  dev  <장치 이름>

    예)  # route  add  default  gw  192.168.184.254  dev  eth0




☆ Net Mask  &  Class


- 넷마스크 : 네트워크의 규모를 등급별로 결정함.

- C 클래스 : 256개의 IP주소 사용가능

                 예)  네트워크 주소 : 192 . 168 . 184 . 0
                       넷마스크 주소 : 255 . 255 . 255 . 0

- B 클래스 : 65536개의 IP주소 사용가능 ( 2^16 )

                 예)  네트워크 주소 : 192 . 168 . 0 . 0
                       넷마스크 주소 : 255 . 255 . 0 . 0

- A 클래스 : 2^24 개의 IP주소 사용가능

                 예)  네트워크 주소 : 192 . 0 . 0 . 0
                       넷마스크 주소 : 255 . 0 . 0 . 0


※ 설치 가능한 컴퓨터 갯수

    네트워크 주소, 브로드 캐스트 주소, 게이트 웨이 주소 3개를 제외한

    갯수의 컴퓨터를 네트워크 내부에 설치할 수 있다. (C클래스의 경우 256-3 = 253대)




☆ DNS 서버 주소

- URL을 해당 컴퓨터의 IP주소로 변환해주는 서버 컴퓨터의 주소

- 설정 파일  :  /etc/resolv.conf

                    ------------------------------------
                    ........

                    Default  Server : *****                       // DNS 제공자

                    nameserver < ***.***.***.*** >         // 해당 DNS 서버 IP
                    ........

                    ------------------------------------




☆ 네트워크 관련 명령어


ⓐ # system-config-network

    - 네트워크 연결방식을 DHCP 클라이언트 또는 고정 IP 주소를 사용할지 결정

    - IP 주소 , 서브넷 마스크 , 게이트웨이 정보

    - DNS 정보

    - 네트워크 카드 드라이버 설정 , 장치 (eth0) 설정


ⓑ # system-config-network-tui

    - Text User Interface  :  네트워크 설정의 텍스트 모드


ⓒ # service  network  restart

    - 네트워크 설정 변경후 변경 내용을 시스템에 적용 (네트워크 서비스 재시작)


ⓓ # ifconfig < 장치 이름 >

    - 해당 장치의 IP 주소 설정 정보를 출력


ⓔ # nslookup

    - DNS 서버작동 테스트


ⓕ # ping

    - 네트워크에 응답 테스트




☆ 네트워크 설정 변경 관련 파일

 /etc/sysconfig/network                                 // 기본 정보

 /etc/sysconfig/network-scripts/ifcfg-eth0       // eth0 에대한 정보 몽창..

/etc/resolv.conf                                            // DNS 서버정보 및 호스트 이름 정보




☆ 네트워크 카드 교체

- 실제로 네트워크 카드에 문제가 발생시 적용시킬수 있다.


1. 네트워크 카드를 제거.

2. 네트워크 카드를 새로 장착.

3. root 로 부팅~

4. # system-config-network

5. "하드웨어" 탭  →  'eth0' 지우기

                       [새로만들기]  →  하드웨어 타입 'Ethernet' 선택

                       →  <네트워크 아답터 설정 창>  →  아답터 'AMD PCnet32' 선택

6. "장치" 탭  →  [새로만들기]  →  '이더넷 연결' 선택  →  'AMD PCnet32' 선택

                       →  <네트워크 셋팅 설정 창>  →  '정적으로 설정된 IP 주소들' 선택

                       →  네트워크 정보 입력

7. "DNS" 탭  →  DNS 주소 확인

8. 완료 (창닫기 or  메뉴 [파일]-[끝내기] 선택)

9. # service  network  restart            // 서비스 재시작

10. # ping  www.google.co.kr          //  응답확인

11. # ifconfig  eth0                          //  네트워크 설정 확인




☆ 네트워크 설정 - Text Mode

# vi  /etc/sysconfig/network         // 확인

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

   다음 사항을 수정한다.

   ----------------------------------------------------

   ..............

   NETMASK = *** . *** . *** . ***              // 넷마스크

   IPADDR = *** . *** . *** . ***                  // IP 주소
   ..............

   GATEWAY = *** . *** . *** . ***             // 게이트 웨이 주소
   ..............

   ----------------------------------------------------

# service  network  restart




☆ 네트워크 설정 - Command Mode

# ifconfig  eth0  <IP 주소>  netmask  <넷마스크>  broadcast  <브로드캐스트 주소>  up

# route  add  -net  <네트워크 주소>  netmask  <넷마스크>  eth0

# route  add  default  gw  <게이트웨이 주소>  dev  eth0

# vi /etc/resolv.conf          // DNS 설정

# service  network  restart





※  인터넷이 잘 안될때 , DNS 서버 고장을 의심해보자

ⓐ DNS 서버 작동 확인하기

    # nslookup

    > server                     // 사용중인 DNS 서버 주소확인,  "Default server :" 이후에 나오는 주소가 DNS주소

    > www.google.co.kr

       ;; connection timed out; no servers could be reached

        위와 같은 에러 메시지가 나온다면 DNS 서버가 고장나거나, DNS 서버의 주소가 잘못된것.


ⓑ 다른 컴퓨터에서 DNS 주소 따오기

     windows 인경우 : cmd 창에서 'nslookup' 명령으로 DNS 주소 획득~

     linux 인 경우 :  위 ⓐ방법으로 확인


ⓒ 가져온 DNS 주소 확인하기

    # nslookup

    > server  <새로운 DNS 주소>

    > www.google.co.kr               // DNS 서버 작동 확인


ⓓ 정상 작동하는 DNS 주소 적용하기

    # vi  /etc/resolv.conf               // 'nameserver' 부분 수정
Posted by 1010
02.Oracle/DataBase2008. 7. 21. 13:51
반응형

OC4J Configuration issue...

First you should check database/instance configure for DATABASE CONTROL


If a hostname_sid directory does not exist in the Oracle Database 10g home directory, then the Oracle Enterprise Manager 10g Database Control Console was not configured for the database instance.




E:\>set oracle_sid=db01

E:\>emctl getemhome
Oracle Enterprise Manager 10g Database Control Release 10.1.0.2.0
Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.
EMHOME=C:\oracle\product\10.1.0\Db_1/taj.domainname.local_db01

If you get above output mean DATABASE configure FOR DB CONTROL otherwise DATABASE is not configure for DB CONTROL and you will see message like "EM Configuration issue".

We can configure DATABASE/INSTANCE for DB CONTROL through TWO WAY
1.DBCA
2.EMCA

DBCA
E:\>set oracle_sid=sh

E:\>emctl status dbconsole
OC4J Configuration issue. C:\oracle\product\10.1.0\Db_1/oc4j/j2ee/OC4J_DBConsole
_taj.domainname.local_sh not found.

E:\>dbca
Note : dbca ---> Configure Database option ---> Select DB and give PWD ---> Check Mark on Configure database with enterprise manager. ---> Finish
E:\>set oracle_sid=sh

E:\>emctl status dbconsole
Oracle Enterprise Manager 10g Database Control Release 10.1.0.2.0
Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.
http://taj.domainname.local:5503/em/console/aboutApplication
Oracle Enterprise Manager 10g is running.
------------------------------------------------------------------
Logs are generated in directory C:\oracle\product\10.1.0\Db_1/taj.domainname.local_sh/sysman/log

--------------------------------------------------------------
You can also Configure Database Control through EMCA command line utility.
E:\>set oracle_sid=db01

E:\>emca

STARTED EMCA at Thu Jan 11 10:39:37 GST 2007
Enter the following information about the database to be configured
Listener port number: 1521
Database SID: db01
Service name: db01
Email address for notification:
Email gateway for notification:
Password for dbsnmp:
Password for sysman:
Password for sys:

-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ C:\oracle\product\10.1.0\Db_1
Enterprise Manager ORACLE_HOME ................ C:\oracle\product\10.1.0\Db_1

Database host name ................ taj.domainname.local
Listener port number ................ 1521
Database SID ................ db01
Service name ................ db01
Email address for notification ...............
Email gateway for notification ...............

-----------------------------------------------------------------
Do you wish to continue? [yes/no]: yes
Jan 11, 2007 10:40:22 AM oracle.sysman.emcp.EMConfig checkConfiguration
SEVERE: Repository already exists. Fix the error(s) and run EM Configuration As
sistant again in standalone mode.
Could not complete the configuration. Refer to the log file for details

emca -r :skip creation of repository schema
E:\>emca -r

STARTED EMCA at Thu Jan 11 10:42:33 GST 2007
Enter the following information about the database to be configured
Listener port number: 1521
Database SID: db01
Service name: db01
Email address for notification:
Email gateway for notification:
Password for dbsnmp:
Password for sysman:
Password for sys: :
Password for sys:
-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ C:\oracle\product\10.1.0\Db_1
Enterprise Manager ORACLE_HOME ................ C:\oracle\product\10.1.0\Db_1

Database host name ................ taj.domainname.local
Listener port number ................ 1521
Database SID ................ db01
Service name ................ db01
Email address for notification ...............
Email gateway for notification ...............

-----------------------------------------------------------------
Do you wish to continue? [yes/no]: yes
Jan 11, 2007 10:42:59 AM oracle.sysman.emcp.EMConfig updateReposVars
INFO: Updating file C:\oracle\product\10.1.0\Db_1\sysman\emdrep\config\repositor
y.variables ...
Jan 11, 2007 10:43:05 AM oracle.sysman.emcp.util.PortQuery findUsedPorts
INFO: Searching services file for used port
Jan 11, 2007 10:43:08 AM oracle.sysman.emcp.EMConfig addPortEntries
INFO: Updating file C:\oracle\product\10.1.0\Db_1\install\portlist.ini ...
Jan 11, 2007 10:43:09 AM oracle.sysman.emcp.EMConfig updateEmdProps
INFO: Updating file C:\oracle\product\10.1.0\Db_1\sysman\config\emd.properties .
..
Jan 11, 2007 10:43:10 AM oracle.sysman.emcp.EMConfig updateConfigFiles
INFO: targets.xml file is updated successfully
Jan 11, 2007 10:43:10 AM oracle.sysman.emcp.EMConfig updateEmomsProps
INFO: Updating file C:\oracle\product\10.1.0\Db_1\sysman\config\emoms.properties
...
Jan 11, 2007 10:43:10 AM oracle.sysman.emcp.EMConfig updateConfigFiles
INFO: emoms.properties file is updated successfully
Jan 11, 2007 10:43:12 AM oracle.sysman.emcp.EMConfig startOMS
INFO: Starting the DBConsole ...
Jan 11, 2007 10:44:53 AM oracle.sysman.emcp.EMConfig perform
INFO: DBConsole is started successfully
Jan 11, 2007 10:44:53 AM oracle.sysman.emcp.EMConfig perform
INFO: >>>>>>>>>>> The Enterprise Manager URL is http://taj.domainname.lo
cal:5504/em <<<<<<<<<<<>Agent Unreachable

First check agent services is start or not.
e:\>set oracle_sid=db01
e:\>emctl status agent
if stop or not running then start
e:\>emctl start agent
or check log file for more info.
OracleHome\Db_1\localhost_sid\sysman\log
------------------------------------------------------------

Io exception: SO Exception was generated
INFO: Block size for SYSAUX is greater than or equal to 8K
INFO: Job queue size is greater than or equal to 10

or check log file for more info.
Oracle_Home\Db_1\cfgtoollogs\emca_repos_xxxx.log
For above error because of your not drop repository properly.

SQL> DECLARE
2 CURSOR c1 IS
3 SELECT owner, synonym_name name
4 FROM dba_synonyms
5 WHERE table_owner = 'SYSMAN';
6
7 BEGIN
8 FOR r1 IN c1
9 LOOP
10 IF r1.owner = 'PUBLIC' THEN
11 EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM 'r1.name;
12 ELSE
13 EXECUTE IMMEDIATE 'DROP SYNONYM 'r1.owner'.'r1.name;
14 END IF;
15 END LOOP;
16 END;
17 /

PL/SQL procedure successfully completed.

SQL> DROP ROLE mgmt_user;

Role dropped.

SQL> drop user mgmt_view cascade;

User dropped.

SQL> drop user sysman cascade;

User dropped.

------------------------------------------------------------------
After drop complete repository you can create new repository through EMCA.
E:\>emca

STARTED EMCA at Thu Jan 11 18:13:11 GST 2007
Enter the following information about the database to be configured
Listener port number: 1521
Database SID: db01
Service name: db01
Email address for notification:
Email gateway for notification:
Password for dbsnmp:
Password for sysman:
Password for sys: :
Password for sys:
-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ C:\oracle\product\10.1.0\Db_1
Enterprise Manager ORACLE_HOME ................ C:\oracle\product\10.1.0\Db_1

Database host name ................ taj.domainname.local
Listener port number ................ 1521
Database SID ................ db01
Service name ................ db01
Email address for notification ...............
Email gateway for notification ...............

-----------------------------------------------------------------
Do you wish to continue? [yes/no]: yes
DBConsole is already configured for the database db01
Would you like to re-configure DBConsole for the specified database? [yes/no]: y
es
Make sure that DBConsole has been shutdown
When you are ready to continue, press

Jan 11, 2007 6:13:27 PM oracle.sysman.emcp.EMConfig updateReposVars
INFO: Updating file C:\oracle\product\10.1.0\Db_1\sysman\emdrep\config\repositor
y.variables ...
Jan 11, 2007 6:19:07 PM oracle.sysman.emcp.EMConfig createRepository
INFO: Creating repository ...
Jan 11, 2007 6:19:07 PM oracle.sysman.emcp.EMConfig perform
INFO: Repository was created successfully
Jan 11, 2007 6:19:15 PM oracle.sysman.emcp.EMConfig stopOMS
INFO: Stopping the DBConsole ...
Jan 11, 2007 6:19:21 PM oracle.sysman.emcp.EMConfig addPortEntries
INFO: Updating file C:\oracle\product\10.1.0\Db_1\install\portlist.ini ...
Jan 11, 2007 6:19:21 PM oracle.sysman.emcp.EMConfig updateEmdProps
INFO: Updating file C:\oracle\product\10.1.0\Db_1\sysman\config\emd.properties .
..
Jan 11, 2007 6:19:23 PM oracle.sysman.emcp.EMConfig updateConfigFiles
INFO: targets.xml file is updated successfully
Jan 11, 2007 6:19:23 PM oracle.sysman.emcp.EMConfig updateEmomsProps
INFO: Updating file C:\oracle\product\10.1.0\Db_1\sysman\config\emoms.properties
...
Jan 11, 2007 6:19:23 PM oracle.sysman.emcp.EMConfig updateConfigFiles
INFO: emoms.properties file is updated successfully
Jan 11, 2007 6:19:34 PM oracle.sysman.emcp.EMConfig startOMS
INFO: Starting the DBConsole ...
Jan 11, 2007 6:21:13 PM oracle.sysman.emcp.EMConfig perform
INFO: DBConsole is started successfully
Jan 11, 2007 6:21:13 PM oracle.sysman.emcp.EMConfig perform
INFO: >>>>>>>>>>> The Enterprise Manager URL is http://taj.domainname.lo
cal:5504/em <<<<<<<<<<<>


Note : In 10.1.0.2.0 RepManager is not working properly so that we are not able to use below command.

emca -config dbcontrol db -repos recreate

If is working in 10.1.0.3.0
for you have to manully drop repository and create again.

Related Links

1. http://dbataj.blogspot.com/2007/07/error-during-dbconsole-shutting-down.html

2. http://dbataj.blogspot.com/2007/07/change-sysman-password.html

3. http://dbataj.blogspot.com/2007/07/e-mail-notification.html

4. http://dbataj.blogspot.com/2007/06/enabling-isqlplus-dba-access.html

5. http://dbataj.blogspot.com/2007/04/export-database-with-sysdba-role.html


Posted by 1010
02.Oracle/DataBase2008. 7. 21. 11:30
반응형

enterprise manager start error

Postby amgad_go on Mon Jun 09, 2008 2:13 am

Dear Tim
I just installed Oracle 10.0.2 on fedora 9 and the installation was successful;
later i 'm trying to start the enterprise manager using this command
emctl start

i get this error

TZ set to Canada/Eastern
Exception in getting local host
java.net.UnknownHostException: f9.localdomain: f9.localdomain
at java.net.InetAddress.getAllByName0(InetAddress.java:1011)
at java.net.InetAddress.getAllByName0(InetAddress.java:981)
at java.net.InetAddress.getAllByName(InetAddress.java:975)
at java.net.InetAddress.getByName(InetAddress.java:889)
at oracle.sysman.emSDK.conf.TargetInstaller.getLocalHost(TargetInstaller.java:4983)
at oracle.sysman.emSDK.conf.TargetInstaller.main(TargetInstaller.java:3758)
Exception in getting local host
java.net.UnknownHostException: f9.localdomain: f9.localdomain
at java.net.InetAddress.getAllByName0(InetAddress.java:1011)
at java.net.InetAddress.getAllByName0(InetAddress.java:981)
at java.net.InetAddress.getAllByName(InetAddress.java:975)
at java.net.InetAddress.getByName(InetAddress.java:889)
at oracle.sysman.emSDK.conf.TargetInstaller.getLocalHost(TargetInstaller.java:4983)
at oracle.sysman.emSDK.conf.TargetInstaller.main(TargetInstaller.java:3758)
EM Configuration issue. /u01/app/oracle/product/10.2.0/db_1/f9.localdomain_DB11G not found.

I'm new to both Linux and Oracle and i don't know how to trouble shoot this kind of error

please help :) :)
thanks
Amgad
amgad_go
Member
Posts: 3
Joined: Thu Jun 05, 2008 2:18 pm

Re: enterprise manager start error

Postby Salman on Mon Jun 09, 2008 6:48 am

You command is incomplete, the complete command is as follows
emctl start dbconsole

BUT
this error message is not because of incomplete command. I think you might have some miss configuration with your hostname. You need to make sure that you have correct hostanem in /etc/hosts and also correct name secified for this host which should be "f9.localdomain"
Posted by 1010
02.Oracle/DataBase2008. 7. 21. 09:27
반응형

iSQL*Plus를 이용한 데이타베이스 접근

iSQL*Plus는 SQL*Plus의 웹 기반 버전입니다. iSQL*Plus를 사용하려면, OEM 콘솔의 Related Links 섹션에 있는 iSQL* Plus 링크를
클릭하거나, 설치 과정에서 제공된 iSQL*Plus URL을 브라우저에 입력합니다.

Ex:
http://ds1.orademo.org:5560/isqlplus (데이타베이스에 DNS가 설정되지 않은 경우, 호스트 네임 대신 IP 주소를 입력해야 합니다.)

User Name: SYSTEM
Password: <설치과정에서 입력한 패스워드>

을 클릭합니다.

Workspace 박스에 SQL 명령을 입력한 뒤 Execute를 클릭합니다.

figure 7

iSQL*Plus의 시작 및 중단:

$ isqlplusctl start
$ isqlplusctl stop
Posted by 1010
02.Oracle/DataBase2008. 7. 21. 09:27
반응형

Oracle Enterprise Manager 10g Database Control의 사용

웹 브라우저에서 설치과정에서 제공된 URL을 입력합니다.

Ex:
http://ds1.orademo.org:5500/em (데이타베이스에 DNS가 설정되지 않은 경우, 호스트 네임 대신 IP 주소를 입력해야 합니다.)

User Name: SYS
Password: <설치과정에서 입력한 패스워드>
Connect As: SYSDBA

을 클릭합니다

figure 6

Oracle Enterprise Manager 10g Database Control의 놀라운 세계에 오신 것을 환영합니다!

Oracle Enterprise Manager Database Control의 시작 및 중단:

$ emctl start dbconsole
$ emctl stop dbconsole
Posted by 1010
02.Oracle/DataBase2008. 7. 18. 14:13
반응형

오라클 엔진을 다른 디렉토리로 옮긴후에 아래와 같은 에러 발생
/usr/oracle -> /oracle


$ lsnrctl start

LSNRCTL for IBM/AIX RISC System/6000: Version 8.1.7.0.0 - Production on 25-SEP-2002 19:13:30

(c) Copyright 1998 Oracle Corporation.  All rights reserved.

Starting /oracle/app/oracle/product/8.1.7/bin/tnslsnr: please wait...

TNSLSNR for IBM/AIX RISC System/6000: Version 8.1.7.0.0 - Production
System parameter file is /oracle/app/oracle/product/8.1.7/network/admin/listener.ora
Log messages written to /oracle/app/oracle/product/8.1.7/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=su405.chonbuk.ac.kr)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
TNS-01201: Listener cannot find executable /usr/oracle/app/oracle/product/8.1.7/bin/extproc for SID
PLSExtProc


@ 해결책

$ cd $ORACLE_HOME/network/admin
$ vi listener.ora

(ORACLE_HOME = /usr/oracle/app/oracle/product/8.1.7)
->
(ORACLE_HOME = /oracle/app/oracle/product/8.1.7)

[출처] [Oracle] 오라클 리스너 실행이 안될때 해결책|작성자 poporena

Posted by 1010
02.Oracle/DataBase2008. 7. 18. 11:53
반응형

CREATE USER test1521 IDENTIFIED BY test1521;
GRANT CREATE SESSION TO test1521;
GRANT SELECT ON SMBI.sbcsba2007 TO test1521;

scott : DB
student : Table Name
tiger : 계정



GRANT SELECT ON SMBI.cuolac TO test1521;
GRANT SELECT ON SMBI.sbcsba2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbb2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbc2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbe2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbg2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbh2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbi2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbk2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbo2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbp2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbr2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbr22007 TO test1521;
GRANT SELECT ON SMBI.sbcsbs2007 TO test1521;
GRANT SELECT ON SMBI.sbcsbt2007 TO test1521;

Posted by 1010
02.Oracle/DataBase2008. 7. 18. 11:38
반응형



Linux Oracle 설치와 활용(Ⅰ)

이수준 (dislevel@newhuman.org)



서  론

    인터넷 서버로서의 많은 가능성을 보여주고 있는 Linux는 사실상 미묘한 문제가 있었다. Apache는 웹서버로서의 더할 나위 없는 정상의 고지에 있었고, Samba는 많은 작업들을 MS WINDOWS로부터 해방시켜 주었으며 X WINDOW는 MS의 그것과 못지 않은 많은 윈도우 매니저들로 치장되었다. 문제는 좀더 신뢰성 있는 서비스들이었고 그것은 대체로 D/B 시스템과의 밀접한 관계를 가진다. 물론 Linux에서도 아주 훌륭한(그것도 공개의) D/B 들이 존재하는데 MiniSQL이나 Postgresql등이 그것이고 MySQL같은 조금 특별한(반 공개/반 상용) 것들도 있다. 하지만, 이것들이 아무리 훌륭하다고 해도 사용자의 입장에서는 누구하나 책임져주지도, 기술지원 해주지도 않는 이러한 D/B 시스템들에 자신의 귀중한, 혹은 상업적인 목적의 자료를 담아두고 맘 편해 하는 이는 별로 없을 것이다. 그러나 지금은 여러 우여 곡절 끝에 Linux는 Oracle 을 위시한 대형 D/B시스템 업체들로부터 지원을 받게 되었다. 대형 상용 D/B시스템 업체들의 지원과 엔터프라이즈급 성능을 갖춘 커널 2.2의 발표로 인터넷 서버 시장을 넘어 이제는 국내에서도 엔터프라이즈 플랫폼으로 Linux 가 강력하게 등장하고 있다.

 

목  적

    이 글의 목적은 간단하다. 여러 D/B벤더들의 제품중에서 유독 한국에서 초강세를 보이고 있는 Oracle (server for Linux 8.0.5)를 Linux상에서 설치하는 방법과 운용 방법, 그리고 간단한 pro-c 사용법, 그리고 한참 주가를 올리고 있는 php3와의 연동을 약 3회분에 걸쳐 살펴본다. Test에 사용된 Oracle server는 정품이 아니고 Oracle Home Page에 가면 쉽게 구할 수 있는 개발자 버전임을 알려둔다.

    ◎ 시스템 요구사항

    메모리 : 활용의 목적이 아닐 경우 32메가도 가능

    스왑영역 : 일반적으로 RAM의 3배 크기의 스왑영역이 권장. 1GB이상의 RAM을 가진
                   시스템에서는 2배 크기의 스왑영역이 권장된다.

    디스크 : 최소한 4개(At least four devices) : Oracle 소프트웨어 설치를 위해 하나, 나머지
                세개는 OFA호환 데이터베이스를 생성하기 위해 사용된다.
                - 활용의 목적이 아닐 경우 한 개의 디스크라도 상관없다.
                - 활용의 목적이라면 최소 2개의 물리적 디스크 추천 (리눅스, 오라클 )
                - 다운로드 받은 파일과 압축을 풀고 설치할 용량으로 최소 1기가 이상이 필요하다.

    Operating System : Linux 2.0.34
    - 오라클의 리눅스 팀은 실제 2.0.33 이상이라고 한다.
    - 필자는 참고로 국내에서 유명한 알짜 리눅스 5.2를 사용하였으며 커널은 2.0.36을
       사용하였다.

    System Libraries : GNU C Library, version 2.0.7
    - 문서상에서는 2.0.7이상을 요구하고 있으나 오라클의 리눅스 개발 팀으로부터의 설명으로는
       실제 2.0.6이상이면 된다고 한다.
       GLIBC 2.1.x 용으로는 패치 파일이 따로 나와 있다. 아직 테스트는 해보지 못했다.

    Window Manager : 어떤 X 윈도우 시스템도 가능
    -솔라리스에서는 X-window 상에서 관리할 수 있는 svrmgrm 이 있지만 Linux에서는 현재
      커맨드 라인 모드에서만 작동하는svrmgrl 만이 존재한다.

 

가. root 로 하여야 할일

    1. 다운로드 http://technet.oracle.com에서 오라클 리눅스를 다운 받는다.

    2. /usr/src 에 다운로드 받은 805ship.tgz 파일을 옮긴 후 /usr/src/ora에서 압축을 푼다.
       /usr/src/ora 상에 다음과 같은 파일과 디렉토리가 생성되었을 것이다.

        # ls
        DST.LST          network/           plsql/
        nlsrtl/              precomp/          RELDESC.TXT
        ocommon/       rdbms/             bin/
        oemagent/       slax/                oracore/
        sqlplus/           jdbc/                orainst/
        svrmgr/           lib/                   ord/
        unix.prd          otrace/              unixdoc/

    3. Create Mount Points
        이제 오라클을 설치할 위치를 정하는 단계이다. 여기서는 /home/oracle에 오라클을 설치
        하는 것으로 가정하겠다. 이 위치에 오라클을 설치할 하드 디스크 파티션을 마운트 시켜야
        한다.
    - 대부분의 사용자가 하나의 파티션에 리눅스를 설치할 것이다. 그렇지만 만일 두개 이상의
       하드디스크 파티션을 이용할 것이라면 /etc/fstab의 내용을 적합하게 고쳐야 한다.
       각 파티션의 내용을 다음에 설명하도록 하겠다.

    4. DBA group 생성
       /etc/group 파일에 dba라는 그룹을 생성한다.

       # groupadd dba
       혹은 직접 vi edit로 /etc/group을 편집할 수도 있다.

    5. 리눅스 커널 설정
        오라클8 서버의 SGA 구조를 수용하기 위해 리눅스 커널의 Interprocess Communication
        (IPC) 파라메터들을 설정해야 한다. 시스템이 SGA를 수용하기에 충분한 shared 메모리를
        가지지 않았다면 데이터베이스를 실행할 수 없을 것이다.

    다음에 상응하는 커널 파라메터를 설정한다.

    maximum size of a shared memory segment(SHMMAX)
    maximum number of shared memory segments in the system(SHMMNI)
    maximum number of shared memory segments a user process can attatch(SHMSEG)
    maximum amount of shared memory that can be allocated system-wide(SHMMNS)
    SHMMAX*SHMSEG에 의해 허용되는 전체 shred 메모리 크기가 결정된다.

    ㄱ) SHMMAX = 4294967295 : 단일 공유 메모리 세그먼트의 최대크기(바이트단위)
    ㄴ) SHMMIN = 1 : 단일 공유메모리 세그먼트의 최소크기(바이트)
    ㄷ) SHMIMNI = 100 : 공유메모리 지시자(identifiers)의 갯수
    ㄹ) SHMSEG = 10 : 각 프로세스에 부여될 수 있는 공유메모리 세그먼드의 최대 갯수
    ㅁ) SEMMNS = 200 : 시스템 내의 세마포어 갯수
    ㅂ) SEMMNI = 70 : 세마포어 지시자(identifiers)의 갯수. SEMMNI은  동시에 생성될 수 있는
                               세마포어 갯수를 결정한다.
    ㅅ) SEMMSL = PROCESSES 초기화 파라메터의 값과 같거나 크도록, 하나의 세마포어 안에
                                            존재할 수 있는 세마포어들의 최대 갯수.
                                            오라클 프로세스들의 최대 갯수와 같아야 한다.

    솔라리스의 경우에는 다음의 값들을 /etc/system 파일에서 설정해 주어야 하지만, 설정을 하지 않아 문제가 발생한적은 없었다. 기본 커널 상태로 놓고 인스톨하여도 무방하다. (레드헷의 디폴트 커널이든 다시 컴파일한 커널이든)

    6. 오라클 관리자 계정 생성
        adduser 혹은 useradd 로 dba그룹에 속하는 유저 oracle을 생성한다.

      ㄱ) adduser 명령으로 oracle user를 생성한다.
           # adduser oracle
      ㄴ) vi /etc/passwd 명령을 사용하여 oracle user 의 설정 값을 위에서
          설명한 것대로 바꾼다. - dba gid와 같아야 한다.

    7. oratab 파일 생성
       오라클 인스턴스에 대한 정보는 oracle 소유의 oratab 파일에 저장된다.
       하지만 이 스크립트를 root로 실행해서 /etc 디렉토리에 oratab 파일이 생성되도록 한다.

       실제 인스톨과정에서 oratab.sh을 실행하면 ORACLE_OWNER환경변수가 설정되어 있는지
       묻고 있다. 따라서 ORACLE_OWNER을 다음과 같이 설정한다.

      #export ORACLE_OWNER=oracle

 

나. oracle user 로 할 일

    1. ~/.bash_profile의 수정
       ( sh을 사용할 경우 .profile을 수정한다. redhat 리눅스를 기준으로 설명한다.)
       oracle로 접속하여 다음과 같이 .profile을 만든다. RedHat에서는 .bash profile 이다.

      export
      ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5
      export
      LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
      export ORACLE_SID=linux
      export ORACLE_TERM=386
      export
      ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
      export PATH=$PATH:$ORACLE_HOME/bin
      export TMPDIR=/tmp
      export
      CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
      umask 022
      (위에서 export 다음의 줄을 export 뒤에 나와야 한다.)

    위의 경우는 “root 작업 4”의 “Create Mount Points”에서 이야기한 오라클을 설치할 경로로 /home/oracle인 경우이다.

각 설정에 대한 설명

    ORACLE_HOME :
    오라클을 /home/oracle에 설치하기로 하였으므로 /home/oracle/app/oracle/product/8.0.5로 지정된다.

    LD_LIBRARY_PATH :
    오라클의 동적/정적  라이브러리의 경로를 나타내는 환경변수로 Pro*C나 PHP등을 사용할 때 중요하게 적용된다.

    ORACLE_SID :
    오라클 인스턴스의 이름이다. 영문자로 3-4글자로 정해준다. 필자는 인스턴트의 이름을 linux 라고 지었다.

    그 외의 환경변수는 예제에 나와 있는 데로 하면 된다.

    지역언어설정 환경변수 NLS_LANG은 모든 인스톨이 끝나고 설명하도록 하겠다.

환경변수 갱신

    위와 같이 .profile내용을 변경하였다면

      # . .bash_profile 혹은
      # source .bash_profile 하여 환경변수 내용을 업데이트한다. 또는 oracle계정으로 다시 로그인한다.

 

다. 실제적인 Oracle 의 설치

    1. 인스톨러 실행

      ㄱ) oracle로 로그인 한다. - 절대 root로 인스톨로를 실행하면 안된다.
      ㄴ) oracle 설치 디렉토리로 이동
           # cd /usr/src/ora/orainst
      ㄷ) orainst를 실행한다.
           # ./orainst 를 실행한다.

    화면에서 [TAB]키, 화살표키, 스페이스 바를 이용하여 항목을 선택할 수 있다.

    2. 검은 배경의 설치화면이 나오면 Custom Install을 선택한다.

    3. 처음 설치하는 것이므로, (o) Install, Upgrade, or De-Install Software을 선택한다.

    4. 새롭게 인스톨 할 것이므로  Install New Product - Create DB Objects을 선택한다.

    5. Mount Point를 설정한다. root user로 할 일 5. 번에서 설정한 것처럼 mount point를
        /home/oracle로 설정한다.

    6. .bash_profile에서 설정한 것처럼 $ORACLE_HOME 디렉토리를 설정한다.

    7. ORACLE_BASE 와 ORACLE_HOME을 설정한다.

    8. log 파일이 남을 위치를 설정한다.

    9. Install from CD-ROM을 선택하여야 한다.

    10. ORACLE_SID를 .bash_profile에서 설정한 것과 같이 linux로 선택한다.

    11. NLS 의 설정 - 여기에서는 일단 ALL language를 선택한다.

    12. install 이 끝이 난 후 root.sh을 실행하라는 메시지가 출력된다. 반드시 install 후에는
         root.sh을 실행하여야 한다.

    13. Software Asset Manager에서 설치한 부분을 선택한다.여기에서는 모든 부분을 설치
         한다고 가정을 한다.

    14. 13)에서처럼 Install을 선택한 후 몇 가지 사항에 대하여 OK를 한 후 OSOPER group (dba)
          를 설정한다.

    15. 생성할 DB Object를 선택한다. - Filesystem-Based Database을 선택한다.

    16. Database Mount Points를 정한다. 설치도중에 3개의 mount points를 기입하라고 하는데
         물리적으로 분리된 하드가 3개 존재하면 가장 좋지만 실제 PC에서는 힘든 일이다.
         이렇게 3곳으로 데이터를 분리하는 이유는 데이터베이스가 하드 디스크로의 읽기/쓰기를
         하는 과정에서 경합을 줄이고 에러 및 문제의 발생시 자연스런 복구를 위한 것이다.
         하지만 오라클 프로그램과 동일한 하드디스에 밖에 인스톨 할 공간이 없다면 여기에 모두
         동일한 경로를 적어주면 된다.

         필자도 오라클을 설치할 때  /home/oracle에 오라클 프로그램을 설치하고 데이터 파일을
         위한 3개의 마운트 포인트도 /home/oracle로 설정하였다.

    17. Character Set 설정 - 한글을 쓰기 위해서KO16KSC5601로 설정한다.

    18. National Character Set 설정

    19. System password 의 설정 (보통 manager라고 password를 입력한다. )

    20. sys password 의 설정 ( manager로 password를 설정. )

    21. dba password 의 설정 ( no라고 설정한다. )

    22. TNS Listener Password 의 설정

    23. Configure MTS and start SQL*Net listener 설정은 no로 한다.

    24. Control files 의 위치 확인.

    25. 기본적인 데이터베이스 관련 파일의 위치와 용량의 확인

    26.  JDBC 셋의 선택 (default로 선택을한다.)

    27. CTX Temporary Tablespace을 선택한다.

    28. CTX demo table을 설치할 것을 선택한 후에, Oracle Document를 설치할 것에 대하여
         셋팅한다. 디렉토리를 설정한 후 pdf, html, both 어떤 형식으로 설치할 것인지 묻는데
         그때에는 자신이 원하는 항목 중에서 한가지를 선택하면 된다.

    29. 이제 인스톨이 시작되기 시작하고 그래프가 올라가기 시작한다. 하염없이 기다리자 -_-;

    30. 설치완료 화면.

    31. 설치 검증
         설치가 모두 끝났다면 $ORACLE_HOME/orainst 디렉토리에 생성된 root.sh을 root 계정
         으로 실행 시킨다.

       ㄱ) root로 로그인한다.
       ㄴ) cd $ORACLE_HOME/orainst
       ㄷ) ./root.sh

      # ./root.sh
      - /etc/oratab 아래에 다음과 같은 내용이 추가되었다.

      *:/home/oracle//app/oracle/product/8.0.5:N
      linux:/home/oracle/app/oracle/product/8.0.5:N

 

라. Oracle Database 의 구동

    1. oracle user로 login.

    2. svrmgrl을 실행시킨 후 database를 가동한다.

      $ svrmgrl   - svrmgrl 의 실행

      SVRMGR> connect internal - internal 접속
      Connected.
      Oracle Server Manager Release 3.0.5.0.0 - Production

      (c) Copyright 1997, Oracle Corporation. All Rights  
           Reserved.

      Oracle8 Release 8.0.5.0.0 - Production
      PL/SQL Release 8.0.5.1.0 - Production

      SVRMGR> connect internal - internal 접속
      Connected.

      SVRMGR> startup;
      ORACLE instance started.
      Total System Global Area    4754704 bytes
      Fixed Size                         48400 bytes
      Variable Size                     4222976 bytes
      Database Buffers               409600 bytes
      Redo Buffers                     73728 bytes
      Database mounted.
      Database opened.

      SVRMGR> exit - svrmgrl 의 종료
      Server Manager complete.

    3. lsnrctl 명령을 이용하여 Oracle listener을 가동시킨다.
        - lsnrctl start : Oracle listener 의 가동
        - lsnrctl stop  : Oracle listener 의 멈춤
       $ lsnrctl start

    LSNRCTL for Linux: Version 8.0.5.0.0 - Production on 26-APR-99 21:56:51
    (c) Copyright 1997 Oracle Corporation.  All rights reserved.

    Starting /home/oracle/app/oracle/product/8.0.5/bin/tnslsnr: please wait...

    TNSLSNR for Linux: Version 8.0.5.0.0 - Production
    System paramete rfile is
    /home/oracle/app/oracle/product/8.0.5/network/admin/
    listener.ora
    Log messages written to
    /home/oracle/app/oracle/product/8.0.5/network/log/
    listener.log
    Listening on:
    (ADDRESS=(PROTOCOL=ipc)(DEV=6)(KEY=linux))
    Listening on:
    (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=PNPKEY))
    Listening on:
    (ADDRESS=(PROTOCOL=tcp)(DEV=11)(HOST=192.168.1.1)(PORT=1521))

    Connecting to
    (ADDRESS=(PROTOCOL=IPC)(KEY=linux))
    STATUS of the LISTENER
    ------------------------
    Alias                       LISTENER
    Version                   TNSLSNR for Linux: Version 8.0.5.0.0 - Production
    Start Date                26-APR-99 21:56:56
    Uptime                    0 days 0 hr. 0 min. 1 sec
    Trace Level              off
    Security                   OFF
    SNMP                      OFF
    Listener Parameter File  
    /home/oracle/app/oracle/product/8.0.5/network/admin/
    listener.ora
    Listener Log File        
    /home/oracle/app/oracle/product/8.0.5/network/log/
    listener.log
    Services Summary...
    extproc               has 1 service handler(s)
    linux         has 1 service handler(s)
    The command completed successfully

    - 오라클 리스너가 제대로 실행이 되지 않을 경우 listener.ora, tnsnames.ora을 알맞게
       편집한다.
     (/home/oracle/app/oracle/product/8.0.5/network/admin 위치하여 있다.)

    다음은 tcp/ip 프로토콜을 기준으로 하여서 listener.ora를 알맞게 편집한 것이다.

    #
    # Installation Generated Net8 Configuration
    # Version Date: Jun-17-97
    # Filename: Listener.ora
    #
    LISTENER =
    (ADDRESS_LIST =
    (ADDRESS= (PROTOCOL= IPC)(KEY= linux))
    (ADDRESS= (PROTOCOL= IPC)(KEY= PNPKEY))
    (ADDRESS= (PROTOCOL= TCP)(Host= 192.168.1.1)
    (Port= 1521))
    - database 가 설치되어 있는 ip를 적어준다.
    )
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME= 192.168.1.1.)
    - database 가 설치되어 있는 ip를 적어준다.
    (ORACLE_HOME=
    /home/oracle/app/oracle/product/8.0.5)
    (SID_NAME = linux)
    - linux sid , 설치도중 적어준 sid를 적어준다.
    )
    (SID_DESC =
    (SID_NAME = extproc)
    (ORACLE_HOME =
    /home/oracle/app/oracle/product/8.0.5)


    (PROGRAM = extproc)
    )
    )
    STARTUP_WAIT_TIME_LISTENER = 0
    CONNECT_TIMEOUT_LISTENER = 10
    TRACE_LEVEL_LISTENER = OFF

    #
    # Installation Generated Net8 Configuration
    # Version Date: Oct-27-97
    # Filename: Tnsnames.ora
    #  
    extproc_connection_data =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = linux))
    (CONNECT_DATA = (SID = extproc))
    )
    linux =
    - oracle alias
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= 192.168.1.1)
    (Port= 1521))
    - database 가 설치되어있는 database 의 ip
      (CONNECT_DATA = (SID = linux))
    - oracle sid
    )

    linux_BEQ =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = BEQ)(PROGRAM =
    /home/oracle/app/oracle/product/8.0.5)
    (argv0 = oraclelinux)
    (args = ‘(DESCRIPTION =
    (LOCAL=YES)(ADDRESS=(PROTOCOL=BEQ)))’)
    (envs =
    ‘ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5,ORACLE_SID=linux’)
    )
    )

    4. 이제 다시 lsnrctl start 명령으로 실행하여 Oracle listener을 실행한다.
        이제 sqlplus을 실행하여 접속이 되나 확인을 하자. test 용으로 id : scott password : tiger
        가 제공됨을 알 수 있다. 이미 설치 중에 system과 sys의 password는 직접 입력하였으므
        로, system 혹은 sys로 접속이 가능한지 확인할 수 있다.

    5. sqlplus로 접속이 확인되었으면 이제 listener을 종료한 후 database를 종료시켜 보자.

    - listener 의 종료
    $ lsnrctl stop

    LSNRCTL for Linux: Version 8.0.5.0.0 - Production on 26-APR-99 22:18:35

    (c) Copyright 1997 Oracle Corporation.  All rights reserved.

    Connecting to
    (ADDRESS=(PROTOCOL=IPC)(KEY=linux))
    The command completed successfully

    - oracle database 의 shutdown
    $ svrmgrl
    Oracle Server Manager Release 3.0.5.0.0 - Production

    (c) Copyright 1997, Oracle Corporation.  All Rights Reserved.

    Oracle8 Release 8.0.5.0.0 - Production
    PL/SQL Release 8.0.5.0.0 - Production

    SVRMGR> connect internal
    Connected.
    SVRMGR> shutdown
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SVRMGR> exit
    Server Manager complete.

    $

 

마. Oracle Database 의 사용자 등록

    system/manager라는 Oracle 사용자 계정은 UNIX시스템에서의 root를 사용하는 것과 유사하기 때문에 우리는 문제를 발생시키는 것을 최소화하기 위해 되도록 적은 권한을 갖는 사용자를 생성할 필요가 있다.

    SQL*PLUS에 연결하고 사용자를 생성한다.

    $ sqlplus system/manager

    SQL*Plus: Release 8.0.5.1.0 - Production

    Copyright (c) Oracle Corporation 1997.  All rights reserved.

    Connected to:
    Oracle8 Server Release 8.0.5.0.0 - Production Release
    PL/SQL Release 8.0.5.0.0 - Production

    SQL> create user <user> identified by <psw>
    2  default tablespace users
    3  temporary tablespace temp;

    User created.
    SQL> grant connect, resource to <user>

    Grant succeeded.

    SQL> exit

    Disconnected from Oracle8 Server Release 8.0.5.0.0 -
    Production Release
    PL/SQL Release 8.0.5.0.0 - Production

    시스템에 새로운 사용자계정을 생성하였기 때문에 새로운 계정을 가지고 시스템에 로그인 할수 있다. Oracle 데이터베이스에 로그인 하기 위해서는 다음과 같다.

    $ sqlplus <user>/<password>

    이 부분이 에러 메시지 없이 수행된다면, 성공적으로 Oracle 데이터베이스를 설치한 것이다.

 

바. Oracle 데이터 베이스의 자동 실행

    Oracle 데이터베이스의 자동 시작과 중지는 Oracle에서 제공하는 파일인 dbstart와 dbstop를 이용하여 설정할 수 있다. 이러한 파일들은 etc/oratab 파일의 존재여부에 의존한다.

    /etc/oratab 파일의 형식은 다음과 같다.

    SID:ORACLE_HOME:AUTO

설정  예

    #
    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by the Oracle8 and SQL*Net install procedures.
    #
    # 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 field 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.
    #
    #
    linux:/oracle8/app/oracle/product/8.0.5:Y

    init.d & rc.d

    리눅스 시스템의 시작과정이나 종료과정을 변형하여 데이타베이스를 시작시키고 종료 시킬 수 있다. 이것은 매우 쉽지만, 어떠한 Linux(slackware, debian, redhat, etc)시스템을 사용하느냐에 따라  변경될 수 있다는 것을 필자는 지적한다. 이 문서에서는 Redhat Linux 5.2 에서 동작하는 예를 보여줄 것이다. 자신의 Linux 시스템에 따라 수정하기 위해서는 자신의 Linux 시스템 문서 자료를 참고한다. 우선, 우리는 /etc/rc.d/init.d 디렉토리에 있는 dbshut와 dbstart를 실행할 스크립트를 생성할 필요가 있다.

    #!/bin/sh
    #
    # /etc/rc.d/init.d/oracle
    # Description: Starts and stops the Oracle database and listeners
    # See how we were called.

    case “$1” in
    start)
     echo -n “Starting Oracle Databases: “
     echo “----------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Starting Oracle Databases as part of system up.”  >> /var/log/oracle
     echo “--------------------------------------------” >> /var/log/oracle
     su - oracle -c dbstart >> /var/log/oracle
     echo “Done.”
     echo -n “Starting Oracle Listeners: “
     su - oracle -c “lsnrctl start” >> /var/log/oracle
     echo “Done.”
     echo “”
     echo “--------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Finished.” >> /var/log/oracle
     echo “--------------------------------------------” >> /var/log/oracle
     touch /var/lock/subsys/oracle
     ;;
    stop)
     echo -n “Shutting Down Oracle Listeners: “
     echo “-----------

    ---------------------------------” >> /var/log/oracle
     date +”! %T %a %D : ShutDown Oracle Databases as part of system down.” >> /var/log/oracle
     echo “--------------------------------------------” >> /var/log/oracle
     echo “Done.”
     rm -f /var/lock/subsys/oracle
     echo -n “Shutting Down Oracle Databases: “
     su - oracle -c dbshut >> /var/log/oracle
     echo “Done.”
     echo “”
     echo “--------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Finished.” >> /var/log/oracle
     echo “-------------------------------------------” >> /var/log/oracle
     ;;

    restart)
     echo -n “Restarting Oracle Databases: “
     echo “-------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Restarting Oracle Databases as part of system up.” >> /var/log/oracle
     echo “-------------------------------------------” >> /var/log/oracle
     su - oracle -c dbstop >> /var/log/oracle
     su - oracle -c dbstart >> /var/log/oracle
     echo “Done.”
     echo -n “Restarting Oracle Listeners: “
     su - oracle -c “lsnrctl stop” >> /var/log/oracle
     su - oracle -c “lsnrctl start” >> /var/log/oracle
     echo “Done.”
     echo “”
     echo “--------------------------------------------” >> /var/log/oracle
     date +”! %T %a %D : Finished.” >> /var/log/oracle
     echo “-------------------------------------------” >> /var/log/oracle
     touch /var/lock/subsys/oracle
     ;;

    *)

    echo “Usage: oracle {start|stop|restart}”
    exit 1
    esac

    이 파일이 실제적으로 정확히 당신의 시스템에서  데이터베이스를 중지하고 실행시키는지를 확인해야 한다. 에러메세지를 위한 /var/log/oracle인 log 파일을 확인하라.
    다음 명령들은 실행수준 2,3,4에 해당하는 데이테베이스를 실행시는 것을 확인 시켜줄 것이다.

    $ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
    $ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
    $ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle

    시스템을 재 부팅하거나, 재 실행 시킬 때에 데이터베이스를 중지시키기 위해서 우리는 다음과 같은 연결(link)이 필요한다.

    $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle          # Halting
    $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle          # Rebooting

 

마치는 글

    이상으로 간략하게나마 Linux 상에서의 Oracle 데이터베이스 설치와 구동법에 대해서 알아보았다.
    그림과 함께 좀 더 명확한 설치법을 소개해 줄 수도 있었지만, 이제 간단한 설치법 정도는 기타 책이나 오라클사 세미나에 가면 쉽게 구할 수 있으므로 기본 설치법에 사용자 등록, 자동 시작/종료를 추가해 첫 글을 마친다. 다음에는 간단한 sqlplus 사용법, Oracle SQL, pro-c 에대해서 알아보고 마지막으로 PHP3와 연동하는 것으로 이 글을 마칠까 한다.




▲ top

home으로...

Posted by 1010
02.Oracle/DataBase2008. 7. 18. 11:01
반응형
ORACLE DB AUTO STARTUP/SHUTDOWN ON RedHat Linux 8.0

구경탁 jinuxer@yahoo.co.kr

1차수정 : 2002년 11월 04일

--------------------------------------------------------------------------------

이 자료는 O/S startup 시에 Oracle RDBMS 서비스를 자동으로 startup하는 방법에 대한 자료이다.

Oracle RDBMS 서비스를 startup하기위해 $ORACLE_HOME/bin/dbstart를 사용할 수 있고, Oracle RDBMS 서비스를 shutdown하기위해 $ORACLE_HOME/bin/dbshut를 사용할 수 있다.

--------------------------------------------------------------------------------

1. /etc/rc.d/rc.local Boot Time Script 이용



첫번째 방법은 System Boot Time때에 Oracle RDBMS를 자동적으로 서비스를 하기위해서 /etc/rc.d/rc.local에 $ORACLE_HOME/bin/dbstart를 추가하면된다.



# cd /etc/rc.d/

# vi rc.local
Posted by 1010
02.Oracle/DataBase2008. 7. 18. 09:47
반응형

오라클 원격 접속하기


1. 오라클 서버에 리스너(Listener) 를 가동한다.

다른 컴퓨터에서 오라클에 접속하려면 리스너가 동작해야 한다. 오라클 9i라면, 설치시에 기본적으로 리스너를 설치하고, 서비스를 구성한다. Enterprise Edition이나 Standard Edition은 기본으로 구성하는 단계가 있는데, 혹시 구성 중에 취소했다면 안 만들어 졌을 수도 있다.


리스너는 네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 오라클 네트워크 관리자 이다. 오라클 서버에서 리스너를 시작시켜 주어야 클라이언트들이 접속 할 수 있다.


리스너 관련 명령어

c:\>lsnrctl start  리스너 시작하기

c:\>lsnrctl stop  리스너 정지하기

c:\>lsnrctl reload  리스너 재시작하기

c:\>lsnrctl status  리스너 상태보기

c:\>lsnrctl help  도움말


리스너 구성 파일은 $ORACLE_HOME/network/admin 아래에 있는 listener.ora 파일이며, 오라클 서버에서 클라이언트의 요청을 듣고 클라이언트와의 통신 환경을 설정한다.


listener.ora 파일이 없다면, cmd 창을 열어서

C:\> lsnrctl start

라고 치면 자동으로 만들어진다.

만들어진 리스너는 서비스로 등록되는데, 서비스 관리자에서 Oracle....TNSListener라는 이름이 바로 리스너 서비스다.

이 서비스의 시작 유형을 "자동" 으로 해 놓는 것이 편리하다.


서비스 관리자에서 이 서비스를 start 시키거나, cmd 창에서

C:\> lsnrctl start

하면 외부에서 접속할 수 있다.

2. 클라이언트에 오라클 클라이언트를 설치 한다.


리눅스용 오라클 클라이언트는 http://www.oracle.com/technology/global/kr/software/products/database/oracle10g/index.html 에서 다운 받을 수 있다. 되도록이면 설치되어 있는 오라클 버전하고 같은 것을 다운 받는다.
주) 리눅스용 오라클 클라이언트는 X 윈도 에서 설치가 가능하다.

3. 리눅스 시스템의 경우 .bash_profile 파일을 수정한다.

SQL PLUS 같은 터미널 접속 이라면 먼저 해당 계정의 .bash_profile 파일을 수정해 주어야 한다.
예를 들면 아래와 같다.

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/8.1.7
export ORACLE_OWNER=oracle
export ORACLE_SID=ORCL
export TMPDIR=$ORACLE_BASE/tmp
export PATH=$PATH:$ORACLE_HOME/bin:/usr/local/java/bin
export JAVA_HOME=/usr/local/java
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=American_America.KO16KSC5601
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

이 계정으로 접속을 했을 때 아무 곳에서나 오라클의 접속이 가능 하도록 패스 지정을 한 것이다.
 

접속 방법

사용자 이름   : <사용자계정>

암호          : <계정비밀번호>

호스트 스트링 : tnsnames.ora 에 설정된 호스트의 별칭

주) 웹을 이용한 접속 이라면 PHP 의 경우 오라클 클라이언트 설치 경로를 지정해 주어 PHP 를 다시 컴파일 해주어야 하며 JSP 같은 경우 라면 오라클 경로를 다시 잡아 주어야 한다.

4. 클라이언트에서 tnsnames.ora 파일을 수정한다.


tnsnames.ora 파일은 오라클 서버로 접속할 때 필요한 프로토콜 및 포트번호, 서버주소, 인스턴스 등을 설정해 주는 파일로써, C:\oracle\ora92\network\admin 디렉토리에 위치한다.

 

MY_DB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 126.138.95.21)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oradb)
    )
  )


오라클 클라이언트는 원격 DB 접속을 위해 위의 파일 내용을 참조하게 된다.

MY_DB 는 원격 데이터베이스의 사용자 정의 명칭이다. 자신의 PC 에서만 유효한 이름이므로 아무렇게나 주어도 된다. HOST = 126.138.95.21 이 부분이 중요한데...실제 원격 DB 가 위치하고 있는 머신의 IP 주소를 입력하면 된다. 포트는 기본 값이 1521 이다.

SERVICE_NAME 이라는 것은 실제 데이터베이스 이름이라고 보면 된다. MY_DB 가 내 PC 에서만 유효한 것이라면 SERVICE_NAME 은 NETWORK 내에서 유일해야 하므로 실제 원격 머신 상에서 오라클 Database 를 Create할 때 결정되어진다. SERVICE_NAME 및 호스트 머신의 IP 주소에 대해서는 원격 Database 를 관리하는 DATABASE 관리자에게 문의하면 된다.


각 오라클의 버전별로 약간의 tnsname.ora 의 내용이 약간씩 다를 수 있으나 위에 설명한 내용은 9i 에서도 그대로 적용된다.


실제 연결을 위해서 tnsname.ora 를 직접 편집하는 것보다 Net Configuration Assistant 라는 프로그램을 이용하길 바란다. 이 프로그램을 이용하여 원격 DB 연결을 설정하면 실제 연결 테스트를 해 볼 수도 있고, 직접 작성으로 인한 tnsname.ora 파일의 버전간 차이 등의 문제를 피할 수 있다. 위의 프로그램은 오라클 클라이언트를 설치하면 프로그램 메뉴에서 찾아볼 수 있다. 해당 프로그램 사용법은 지면 관계상 생략하나 네이버에서 검색하면 쉽게 찾아볼 수가 있을 것이다.


그 후에 다시 로그아웃 하고 로그인을 한후 sqlplus 라고 입력하면 됩니다.

오라클의 설치도 쉽지 않지만 클라이언트의 설치도 간단치 않으므로 차근차근 실수 없이 진행 해야 합니다.

TNSPING으로 접속 TEST하는 방법

Windows 3.1용 SQL*Net을 설치한 경우에 Nettest.exe로써 Server에 접속 여부를 test했었으나, Windows 95용 SQL*Net을 설치하면 tnsping.exe라는 프로그램이 생긴다. 이 프로그램은 일반적인 TCP/IP 프로그램에서 제공하는 Ping Utility와 유사한 방식으로 DB Server에 Login 여부를 확인할 수 있다. SQL*Net 2.2이상에서만 제공이 되며, SQL*Net V1에서는 사용할 수 없다.


C:\oracle\ora92\bin\tnsping.exe

[ 사용 방법 ]

tnsnames.ora file에 tns services name 및 접속에 관련된 내용을 기술한다.  
예: MY_DB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 126.138.95.21)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = oradb)
    )
  )


tnsping utility 사용 예
 

c:\>tnsping oradb 5

TNS Ping Utility for 32-bit WINDOWS: Version 9.2.0.1.0 - Production on 18-NOV-2006 09:52:34  

Copyright (c) Oracle 1997 Corporation. All rights reserved.

사용된 매개변수 파일

C:\oracle\ora92\network\admin\sqlnet.ora

별칭 분석을 위해 TNSNAMES 어댑터 사용
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 126.138.95.21)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = oradb)))
확인 (50 밀리초) 
확인 (30 밀리초) 
확인 (30 밀리초) 
확인 (50 밀리초) 
확인 (30 밀리초)


주) tnsping 은 되는데 오라클 연결이 안될 때는 방화벽을 검사한다. 방화벽은 예외설정을 해도 되지 않고 사용안함 설정을 해야 한다. 또한 tnsnames.ora 파일에 HOST = 126.138.95.21 부분을 ip 주소가 아닌 host 명으로 했을 때 안되는 경우가 있다.

-----------------------------------------------------------------------------------------------------
TNSListener!! 잊지 않겠다 ㅡㅡ+

Posted by 1010
02.Oracle/DataBase2008. 7. 17. 17:46
반응형
오라클을 설치하기 위한 준비
 
 
필수 RPM 화일들 : gcc-3.2-7 5번째로 설치
cpp-3.2-7 1번째로 설치
glibc-devel-2.2.93-5 4번째로 설치
kernel-headers-2.4.19-5cl 3번째로 설치
binutils-2.13.90.0.2-2 2번째로 설치
Oracle 10g를 설치하려면 몇몇 패키지가 반드시 설치되어 있어야 합니다.
확인 후 설치가 안된 패키지는 따로 설치해 줍니다.
[root@ora10 src]# rpm -q binutils gcc make openmotif
[root@ora10 src]# rpm -Uvh --nodeps binutils-2.13.90.0.18-9.i386.rpm
[root@ora10 src]# rpm -Uvh --nodeps gcc-3.2.2-5.i386.rpm
[root@ora10 src]# rpm -Uvh --nodeps make-3.79.1-17.i386.rpm
[root@ora10 src]# rpm -Uvh --nodeps openmotif-2.2.2-14.i386.rpm

리눅스용 오라클은 설치시에 Linking 까지 같이 하므로 반드시 그에 따른 Library 가 필요하다.
위의 RPM 들이 그것인데 만일 설치 안 한 RPM 들이 있다면 Linking 할 때 Invoke 에러를 접하게
될 것이다. 위의 RPM 들은 RedHat8.0 CD나 http://rpmfind.net 에서 구할수 있다.
여기서 위의 것들을 설치할 때 의존성이 문제가 되므로 설치 순서를 따르는 게 편리할 것이다.
참고로 rpm 설치 명령어는 #rpm -i 패키지 이름 이다.
그리고 내 리눅스 서버에는 kernel-headers가 설치되어 있지 않았고 kernel-headers 인스톨 시
glibc-kernheaders-2.4-7.20 과 충돌하여 에러가 났는데
#rpm -e -nodeps glibc-kernheaders-2.4-7.20 명령을 내려 삭제한 후 다시
rpm -i kernel-headers-2.4.19-5cl.i386.rpm 을 해라. 이제 잘될 것이다.
위의 것들이 제대로 설치 되었는지 확인하려면 다음의 명령을 사용한다.

1. 오라클 프로그램 다운로드

아래의 주소에서 오라클 파일중, ship.db.cpio.gz을 다운 받습니다.



아래의 명령으로 압축을 풉니다.
# zcat ship.db.cpio.gz | cpio -idmv


2. OS 환경 변경

오라클 10g는 자체적으로 테스트된 몇 가지의 OS만 설치되도록 체크하는 부분이 있습니다.
이를 위해 /etc/redhat-release 파일을 생성 후 레드햇 3 버전으로 만듭니다.
Oracle 10g를 설치하려면 인증된 운영체제만 설치가 가능하도록 하는 부분이 있습니다.
RedHat Linux Advanced Server 3 로 속입니다.
# echo "redhat-3" > /etc/redhat-release


3. 사용자 및 그룹생성

아래의 명령으로 사용자 및 그룹을 생성합니다.

# groupadd dba
# groupadd oinstall
# useradd -g oinstall -G dba oracle
# passwd oracle


오라클이 설치될 디렉토리를 생성합니다. ---> 꼭 생성하지 않아도 /home/oracle를 디폴트로해도된다.

# mdkir -p /u01/app/oracle
# chown -R oracle.oinstall /u01
# chmod -R 755 /u01/app/oracle



4. 커널 파라미터 수정

원래 공유메모리와 세마포어를 변경한 값을 적용하여 커널을 재컴파일 해야하지만
여건이 되지 않는 (필자도 커널 재컴파일 여건이 안된다.) 경우 소프트웨어적으로
공유메모리와 세마포어를 변경할 수 있다.
가장 마지막에 다음을 추가합니다.
/etc/sysctl.conf 파일에 뒷 부분에 아래와 같이 내용을 추가합니다.

[root@localhost ~]# cat >> /etc/sysctl.conf << eof
### Oracle 10g Kernel Parameters
kernel.shmmax = 1073741824
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range=1024 65000

수정한 /etc/systl.conf의 파라미터 값을 새롭게 커널에 적용시킵니다.

[root@localhost ~]# /sbin/sysctl -p


5. 오라클 사용자의 환경변수 추가

/home/oracle/.bash_profile 파일의 뒤에 아래 내용을 추가합니다.

##############################################
export ORACLE_BASE=/u01/app/oracle  -->디폴트로 /home/oracle 로 했음
export ORACLE_SID=ORCL   ----------->편하게 oracle 로 했음
export ORACLE_HOME=ORACLE_BASE/product/10.1.0/db_1
export PATH=ATH:ORACLE_HOME/bin
export DISPLAY=127.0.0.1:0.0
##############################################


관리자(root) 권한으로 아래의 명령을 실행합니다.
# xhost + 127.0.0.1
※ 위 명령은 반드시 해당 로컬서버에서 작업을 하셔야 합니다.(원격에서는 안됩니다.)
   (오라클 설치는 로컬서버에서 모든 작업을 하시는 것이 좋습니다.)
root 이외의 일반계정도 권한상관없이 엑스윈도우를 사용할수있게 하기위한 명령

6. 오라클 설치시작

※ 지금부터는 반드시 oracle 사용자 계정으로 실행해야 합니다.
   지금 root권한으로 로그인 되어있다면 로그아웃 하시고,
   oracle 계정으로 다시 로그인하시기 바랍니다.

오라클 설치 프로그램을 압축푼 장소로 이동하여, 아래 파일을 찾아서 실행시킵니다.
runInstaller

이명령을 내렸을때 여러 가지 에러가 뜰수있다. /home /tmp /home/oracle 등의 퍼미션을 다시한번
확인하자 755

※ 만약 글자가 깨져서 보인다면, 프로그램을 종료하고 아래명령을 입력한후 다시 프로그램을 실행합니다.
unset LANG


7. Welcome

환영인사 입니다. Next를 클릭합니다.


8. Specify Inventory directory and credentials

디렉토리와 시스템그룹 지정. Next를 클릭합니다.

※ 경고창이 나타납니다.
/u01/app/oracle/oraInventory/orainstRoot.sh를 실행하라는 내용입니다.
콘솔을 띄워서 root 권한으로 변경한 다음, 아래와 같이 스크립트 파일을 실행합니다.
# /u01/app/oracle/oraInventory/orainstRoot.sh
팝업창의 Continue를 클릭합니다.


9. Specify File Locations

설치할 파일과 설치될 파일의 위치를 지정합니다. Next를 클릭합니다.


10. Select Installation Type

오라클을 설치할 유형을 선택합니다. Enterprise Edition을 선택하고, Next를 클릭합니다.


11. Specific Prerequisite Checks

이제까지의 설정을 확인합니다. 이상 없으면 Next를 클릭합니다.

커널 파라미터를 체크하는 부분에서 경고 팝업이 뜹니다.
Yes를 눌러 경고를 무시하고 계속 진행합니다.


12. Select Database Configuration

데이터베이스 사용 용도에 따라 설정 옵션을 선택합니다.
보통 General Purpose로 하면 됩니다. Next를 클릭합니다.


13. Specify Database Configuration Options

데이터베이스의 Global Database Name/SID/Character set의 옵션을 지정합니다.
Global Database Name와 SID는 [ORCL] 로 Character set은 [Korean KO16KSC5601]로 Database 예제 스키마도 생성합니다.
Next를 클릭합니다.


14. Select Database Management Option

데이터베이스를 관리하는데 필요한 옵션을 선택합니다. Next를 클릭합니다.


15. Specify Database File Storage Option

데이터베이스 파일의 스토리지 옵션을 지정합니다. 보통 File System으로 하시면 됩니다.
Next를 클릭합니다.


16. Specify Backup and Recovery Options

백업이나 복구 옵션을 지정합니다. 기본값으로 넘어갑니다.
Next를 클릭합니다.


17. Specify Database Schema Passwords

오라클 관리를 위한 계정들의 패스워드를 입력합니다.
(SYS, SYSTEM, SYSMAN, DBSNMP 등)
개별적으로 입력해도 되며, 하단의 "Use the same password for all the accounts"를 선택하여 한번에 동일하게 입력 가능합니다.
Next를 클릭합니다.

18. Summary

이제까지 선택한 내용을 창으로 보여줍니다. [Install] 버튼을 클릭하여 설치를 시작합니다.


19. Install

....[설치 진행 중]....

자동으로 설치가 진행되는 동안, 차한잔 하면서 느긋하게 기다려줍시다.



20. Configuration Assistants

파일 설치 후 데이베이스 관련 파일들을 복사하고 오라클 인스턴스를 생성합니다.

70%이상 넘어가면서 패스워드 오류가 날 수 있습니다. 이는 무시하셔도 좋습니다.

모든 설치가 끝난 후, 각 오라클 시스템에 패스워드를 지정하려면 [Password Management]를 클릭하고,
아니면 [OK] 버튼을 클릭합니다.


21. Setup Privileges

[OK] 버튼을 클릭하면 root.sh 파일을 실행하라는 창이 나타납니다.
root 권한으로 아래와 같이 스크립트 파일을 실행합니다.
# /u01/app/oracle/product/10.1.0/db_1/root.sh


22. End of Installation

이제 설치가 모두 종료되었습니다. Exit 버튼을 눌러서 프로그램을 종료합니다.



* 추가 덧글

데이타베이스를 기동만 하면 안되죠 외부에서 접속하도록 리스너를 띄워야 합니다.

우선 listener.ora 파일을 수정합니다.
ORACLE_HOME/network/admin/listener.ora 파일 내용

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1)
(PROGRAM = extproc)
)
# 추가부분 시작 - 이걸 추가해야 8i 이하의 클라이언트에서 연결했을 때 SERVICE_NAME 관련 내용이
없습니다.
(SID_DESC =
(SID_NAME = ORCL)
(ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1)
)
# 추가 부분 끝
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 해당ip)(PORT = 1521)) # <== 서버명 대신에 반드시
ip를 넣으세요 127.0.0.1을 넣으시면 안됩니다. 외부에서 소켓이 닫힌 것으로 인식합니다.
)
)
)

한텀내용을 일일이 보고 친 것이니 오타가 있을 수 있습니다. 이는 감안하고 보세요.

이제 리스너를 띄웁니다.

lsnrctl start

리스너의 기동을 확인합니다.

netstat -a | grep 1521
tcp 0 0 해당ip:1521 *:* LISTEN

절대
tcp 0 0 서버명:1521 *:* LISTEN
으로 나오면 위 설정중 HOST의 내용을 확인하세요. 데이타베이스를 기동만 하면 안되죠 외부에서
접속하도록 리스너를 띄워야 합니다.







Database 시작과 종료
오라클 데이터베이스 시작하기
Database 의 시작과 종료는 반드시!! Oracle 계정으로 수행해야 합니다.
[root@ora10 /]# su oracle
oracle 계정으로 로그인 후 oracle 계정의 환경설정을 reload 합니다.
(처음부터 오라클 계정으로 로그인 하였다면 이 과정은 불필요합니다.)
[oracle@ora10 /] sqlplus /nolog
SQL>connect / as sysdba
SQL> startup
오라클 데이터베이스를 시작하고 종료하기 위해서는 OS에서의 인증과 암호 파일을 생성하는
툴인 orapwd를 통해야 한다. 그리고 sys 스키마의 권한인 sysdba 권한과 public 스키마
권한인 sysoper 권한의 특별한 시스템 권한을 소유한 사용자이어야 한다.
· sysdba : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN,
MOUNT, BACKUP, CHANGE, CHARACHER SET 절의 명령어 실행
· sysoper : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN,
MOUNT, BACKUP 절의 명령어 실행
SQL> SELECT * FROM vversion;
현재의 오라클 데이터베이스 인스턴스의 버전 확인하기

오라클 데이터베이스 종료하기
[oracle@ora10 /] sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate
SQL> exit

oratab 파일 편집하기
오라클 데이터베이스를 /etc/rc.d/ini.d에 스크립트로 설정하여 자동으로 실행하게 하여봅시다.
[root@ora10 /]# vi /etc/oratab
다음 부분을 수정 ([SID], [ORACLE_HOME], [자동실행/종료 플래그]로 구성되어 있습니다.)
ora10:/opt/oracle/product/10.1.0/db_1:Nè
ora10:/opt/oracle/product/10.1.0/db_1:Y

Parameter 파일 링크
xxxxxxxxxxxx은 일정치 않은 숫자 입니다.
[root@ora10 /]# cp /opt/oracle/admin/ora10/pfile/init.ora.xxxxxxxxxxxx \
/opt/oracle/product/10.1.0/db_1/dbs/initora10.ora

/etc/rc.d/init.d 에 등록하기
oracle10g 스크립트를 /etc/rc.d/init.d 에 복사합니다.
[root@ora10 /]# cp /usr/local/src/oracle-10.1.0.2.0 /etc/rc.d/init.d/
oracle10g에 실행권한을 부여합니다.
[root@ora10 /]# chmod 755 /etc/rc.d/init.d/oracle10g
시스템에 oarcle10g 데몬을 등록한다.
[root@ora10 /]# chkconfig --add oracle10g
[root@ora10 /]# chkconfig --level 2345 oracle10g on
Oracle Database를 재시작 시켜본 후, LISTENER 데몬이 띄워져 잇는지 확인합니다.
[root@ora10 /]# /etc/rc.d/init.d/oracle10g start
[root@ora10 /]# ps ax | grep LISTENER
################## listener.ora ##########################
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT
= 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(SID_NAME=ORA817)
(ORACLE_HOME = oracle_home 디렉토리경로명)
)
)

###############################################################

이렇게 수정하시고요..
>lsnrctl start <- 리스너 서비스 기동
해주시면 됩니다..
###############################################################

.MK 오류
링크할때 자꾸 .mk 오류가 나서 미치겠네요

오라클 설치시, 링크작업중 65%정도에서 나타나는 에러 처리방법입니다.

****************************************************************
"Error invoking target install of makefile
/opt/oracle/product/9.0.1/plsql/lib/ins_plsql.mk"
"Error invoking target install of makefile
/opt/oracle/product/9.0.1/precomp/lib/ins-precomp.mk"
"Error invoking target install of makefile
/opt/oracle/product/9.0.1/precomp/lib/ins-net-client"
"Error invoking target install of makefile
/opt/oracle/product/9.0.1/precomp/lib/ins-oemagent"
****************************************************************
위와 같은 에러발생시

1.
ORACLE_HOME/bin/genclntsh
파일의

LD_SELF_CONTAINED="-z defs"
이 부분을

LD_SELF_CONTAINED=""
이렇게 수정한 다음

2.
ORACLE_HOME/bin/genclntsh
이 스크립트를
"oracle" 유저로 실행
su - oracle
ORACLE_HOME/bin/genclntsh
Created /opt/oracle/product/9.0.1/lib/libclntst9.a

3. 그리고 나서 에러 팝업창의 재시도를 수행합니다.
##################################################################


저도 이문제 때문에 세번의 리눅스 재설치와 세번의 오라클 재설치를 시도해 보
았습니다만, 말짱 꽝이었습니다.

http://linux.oreillynet.com/lpt/a/4141

문서를 참조하십시오.. 100% 설치됩니다.

이상.
##################################################################
Posted by 1010
02.Oracle/DataBase2008. 7. 17. 17:13
반응형

sqlplus /nolog


sql> conecnt sys/pass as sysdba
sql> startup

sqlplus /nolog

connect sys/패스워드 as sysdba

Posted by 1010
02.Oracle/DataBase2008. 7. 17. 15:16
반응형

\uc815\ubcf4: make[1]: Leaving directory `/home/oracle/database/product/11.1.0/db_1/rdbms/lib'

\uc815\ubcf4: make[1]: *** [/home/oracle/database/product/11.1.0/db_1/rdbms/lib/extproc32] \uc624\ub958 1

\uc815\ubcf4: make: *** [extproc32] \uc624\ub958 2

\uc815\ubcf4: \uc0dd\uc131\ub41c \ud504\ub85c\uc138\uc2a4\uc5d0\uc11c \ucd9c\ub825 \ub9c8\uce68.
\uc815\ubcf4: ----------------------------------
\uc815\ubcf4: \uc791\uc5c5\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uc608\uc678 \uc0ac\ud56d: make
\uc608\uc678 \uc0ac\ud56d \uc774\ub984: MakefileException
\uc608\uc678 \uc0ac\ud56d \ubb38\uc790\uc5f4: make \ud30c\uc77c '/home/oracle/database/product/11.1.0/db_1/rdbms/lib/ins_rdbms.mk'\uc758 'all_no_orcl' \ub300\uc0c1\uc744 \ud638\ucd9c\ud558\ub294 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 '/home/oracle/oraInventory/logs/installActions2008-07-17_09-52-57PM.log'\uc744(\ub97c) \ucc38\uc870\ud558\uc2ed\uc2dc\uc624
\uc608\uc678 \uc0ac\ud56d \uc2ec\uac01\ub3c4: 1


-------------------------------------------------------------------------
Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 10.2.0.2
This problem can occur on any platform.
After installing any One-off patch in RAC nodes, one of those nodes may fail to start the instance.


NOTE: We did observe the similar problem on 10.2.0.2 RAC installations where certain libraries are not copied from the installing node to other RAC nodes. For such type of problem while performing installation, please refer to the following note.

Note 363840.1 - 10.2.0.2 RAC: ORA-7445 in KKXSYN or KKXCMS ON ALL NODES BUT INSTALL NODE


Symptoms
Oracle Instance does not startup on one of RAC the nodes after installing any One-off Patch.

If you see the alert and trace log files, you may see the following errors:

ORA-00469: CKPT process terminated with error

ORA-07445: exception encountered: core dump [] [] [] [] [] []

Cause
It was noted that the resulting 'Oracle' binaries on different nodes were not the same. Running a cksum on all involved libraries in lib/ and rdbms/lib/, it was evident that libknlopt.a was different across nodes. The object modules that get into libknlopt.a however are identical, so it clearly appears that libknlopt.a isn't relinked on nodes other than the installation one.
Solution
Copy the good library in the faulty node and manually re-link the Oracle again.

Ensure all instances are shut down !


Manually copy good $ORACLE_HOME/rdbms/lib/libknlopt.a from the local node to all remote faulty nodes and relink Oracle again on all faulty nodes.


eg: cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk ioracle

--------------------------------------------------------------------------

[root@smbi-web lib]# make -f ins_rdbms.mk ioracle
chmod 755 /home/oracle/database/product/11.1.0/db_1/bin

 - Linking Oracle
rm -f /home/oracle/database/product/11.1.0/db_1/rdbms/lib/oracle
gcc  -o /home/oracle/database/product/11.1.0/db_1/rdbms/lib/oracle -L/home/oracl
e/database/product/11.1.0/db_1/rdbms/lib/ -L/home/oracle/database/product/11.1.0
/db_1/lib/ -L/home/oracle/database/product/11.1.0/db_1/lib/stubs/   -Wl,-E /home
/oracle/database/product/11.1.0/db_1/rdbms/lib/opimai.o /home/oracle/database/pr
oduct/11.1.0/db_1/rdbms/lib/ssoraed.o /home/oracle/database/product/11.1.0/db_1/
rdbms/lib/ttcsoi.o  -Wl,--whole-archive -lperfsrv11 -Wl,--no-whole-archive /home
/oracle/database/product/11.1.0/db_1/lib/nautab.o /home/oracle/database/product/
11.1.0/db_1/lib/naeet.o /home/oracle/database/product/11.1.0/db_1/lib/naect.o /h
ome/oracle/database/product/11.1.0/db_1/lib/naedhs.o /home/oracle/database/produ
ct/11.1.0/db_1/rdbms/lib/config.o  -lserver11 -lodm11 -lsage11 -lnnet11 -lskgxp1
1 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11
-lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11  -lvsn11 -lcommon
11 -lgeneric11 -lknlopt `if /usr/bin/ar tv /home/oracle/database/product/11.1.0/
db_1/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-lora
olap11" ; fi` -lslax11 -lpls11  -lrt -lplp11 -lserver11 -lclient11  -lvsn11 -lco
mmon11 -lgeneric11 `if [ -f /home/oracle/database/product/11.1.0/db_1/lib/libavs
erver11.a ] ; then echo "-lavserver11" ; else echo "-lavstub11"; fi` `if [ -f /h
ome/oracle/database/product/11.1.0/db_1/lib/libavclient11.a ] ; then echo "-lavc
lient11" ; fi` -lknlopt -lslax11 -lpls11  -lrt -lplp11 -ljavavm11 -lserver11  -l
wwg  `cat /home/oracle/database/product/11.1.0/db_1/lib/ldflags`    -lncrypt11 -
lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /home/oracle/database/product/11.1.0/
db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -l
ztkg11 -lmm -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls1
1 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lztkg11 `cat /hom
e/oracle/database/product/11.1.0/db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs
11 -ln11 -lnl11 -lnro11 `cat /home/oracle/database/product/11.1.0/db_1/lib/ldfla
gs`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11   -lsnl
s11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore1
1 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `if /usr/bin/ar tv /home/oracle/dat
abase/product/11.1.0/db_1/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>
&1 ; then echo " " ; else echo "-lordsdo11"; fi` -L/home/oracle/database/product
/11.1.0/db_1/ctx/lib/ -lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 -lgx11 -lord
imt11 -lclsra11 -ldbcfg11   -lhasgen11 -lcore11 -lskgxn2 -locr11 -locrb11 -locru
tl11 -lhasgen11 -lcore11 -lskgxn2   -loraz -lsnls11 -lnls11  -lcore11 -lsnls11 -
lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lco
re11 -lnls11 -lsnls11 -lunls11  -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lco
re11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls1
1 -laio    `cat /home/oracle/database/product/11.1.0/db_1/lib/sysliblist` -Wl,-r
path,/home/oracle/database/product/11.1.0/db_1/lib -lm    `cat /home/oracle/data
base/product/11.1.0/db_1/lib/sysliblist` -ldl -lm   -L/home/oracle/database/prod
uct/11.1.0/db_1/lib
test ! -f /home/oracle/database/product/11.1.0/db_1/bin/oracle ||\
           mv -f /home/oracle/database/product/11.1.0/db_1/bin/oracle /home/oracle/databas
e/product/11.1.0/db_1/bin/oracleO
mv /home/oracle/database/product/11.1.0/db_1/rdbms/lib/oracle /home/oracle/database/produc
t/11.1.0/db_1/bin/oracle
chmod 6751 /home/oracle/database/product/11.1.0/db_1/bin/oracle

Posted by 1010
02.Oracle/DataBase2008. 7. 17. 13:22
반응형

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory


상태로 봐서는... 오라클DB를 기동하는 DB 파일중의 일부가 없기 때문입니다.

오라클DB를 기동하기 위해서는

1. 시스템 테이블스페이스 (기본 파일명 : system.dbf)

2. UNDO 테이블스페이스  (기본 파일명 : undotbs1.dbf)

3. TOOLS 테이블스페이스 (기본 파일명 : tools.dbf)

그리고

온라인 리두로그 파일(redo1.log, redo2.log, redo3.log,...),

컨트롤 파일 (control1.ctl,...)

가 필요한데, 해당 테이블스페이스가 속한 데이터파일이 파일 시스템에 없거나

경로가 잘못 지정되어 있어서 그렇습니다.


님이 관리하시는 서버에 Oracle DB가 어떻게 구성되어 있는지를 몰라서

정확한 답변을 드리기는 힘들고요

(외장 Disk Array 를 사용하시는지, 혹은 NFS를 사용하시는지...

 어떤 이유에서인지 linux 파일시스템 mount 가 되어 있지 않아서

 오라클 데몬이 파일을 찾지 못하는 경우입니다)


우선 파일시스템 체크를 해보시고요...


파일 시스템에 이상이 없다면

shell 에서 sqlplus "/ as sysdba" 로 접속하셔서 다음의 명령어를 입력해 보시기 바랍니다...


select tablespace_name, file_name

  from dba_data_files;


쿼리로 나온 결과에는 테이블스페이스 및 해당 테이블스페이스의 내용을 보관하고 있는

데이터파일 이름이 나옵니다.

이 결과값이 현재 물리적인 파일시스템과 일치하는지 하나씩 확인해 보시기 바랍니다.


참고로...

오라클의 관리자 계정인 system 계정의 기본 패스워드는 'manager' 입니다.

통상 오라클 9i 이상부터는 DBA가 DB를 관리하기 위하여 svrmgrl 을 사용하지 않고

sqlplus "/ as sysdba" 로 접속하게 되어 있습니다.


** 답변 일부를 수정드립니다.


또 하나의 가능성은


리눅스 Shell 환경변수에서

$ORACLE_HOME 이나 $ORACLE_SID 가 잘못 되어 있을수 있습니다.


계정의 home directory에서

vi .cshrc (C-Shell 사용시)

vi .profile (Korn Shell, Bourne-Shell 사용시)

하셔서 $ORACLE_SID 나 $ORACLE_HOME 이 어떻게 정의되어 있나 확인하시고요


echo $ORACLE_HOME

명령으로 나온 결과의 끝에 "/" 가 붙어 있으면 안됩니다.


예> ORACLE_HOME = /oracle/app/oracle/9204/product  (O)

        ORACLE_HOME = /oracle/app/oracle/9204/product/ (X)


$ORACLE_SID의 확인은

echo $ORACLE_SID

명령으로 확인 가능하고요


만약 $ORACLE_SID = MYDB 라면


오라클 데몬 프로세스가 떠 있는지 확인하시고요, 명령은

ps -ef | grep ora_

라고 치시면


ora_smon_MYDB


라고 나와야 정상입니다.

Posted by 1010
02.Oracle/DataBase2008. 7. 17. 13:15
반응형

오라클의 관리자 계정인 system 계정의 기본 패스워드는 'manager' 입니다.

통상 오라클 9i 이상부터는 DBA가 DB를 관리하기 위하여 svrmgrl 을 사용하지 않고

sqlplus "/ as sysdba" 로 접속하게 되어 있습니다.

Posted by 1010
02.Oracle/DataBase2008. 7. 17. 13:11
반응형
Linux에서 오라클 삭제하기

1. $ORACLE_HOME 디렉토리에 있는 설치 화일을 전부 삭제.
2. /etc 디렉토리에 있는 oraInst.loc, oratab 파일을 삭제.
3. /usr/local/bin/oraenv 파일을 삭제.
4. /tmp 디렉토리에서 관련된 파일을 삭제.
5. oracle 설치시 생성한 계정의 환경설정 파일(.bash_profile)을 다른 위치에 복사.
6. oracle 설치시 생성한 계정 삭제.
7. oracle 설치시 생성한 계정의 HOME 디렉토리 삭제
8. 끝입니다. 다시 설치하시면 됩니다.

Posted by 1010
02.Oracle/DataBase2008. 7. 17. 12:31
반응형

오라클 설치후 sqlplus 실행이 안될때

즉 아래와같은 에러가 나오면


Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory


오라클 계정으로 로그인한 후에

/home/oracle 로 가서


.bash_profile을 연뒤

아래와 같이 편집하면 된다.


ORACLE_HOME=/u01/app/oracle/product/10.1.0/Db_1;
export ORACLE_HOME


그다음 로그아웃을 한뒤에

다시 로그인을 한뒤에
아래와 같은 명령을 쎄린뒤에

chmod -R 755 $ORACLE_HOME/sqlplus

chmod 755 $ORACLE_HOME/sqlplus
chmod 755 $ORACLE_HOME/sqlplus/mesg
chmod 755 $ORACLE_HOME/sqlplus/mesg/sp1us.msb
chmod 755 $ORACLE_HOME/nls
chmod 755 $ORACLE_HOME/nls/data
chmod 755 $ORACLE_HOME/nls/data/lx1boot.nlb
chmod 755 $ORACLE_HOME/oracore
chmod 755 $ORACLE_HOME/oracore/zoneinfo
chmod 755 $ORACLE_HOME/oracore/zoneinfo/timezlrg.dat

/u01/app/oracle/product/10.1.0/Db_1/bin/sqlplus 를 쎄리면
sqlplus가 실행이 된다.

저것도 변수로 잡아야것다.
아..$ORACLE_HOME/bin/sqlplus 이러케하면 되겠군하.ㅎ
Posted by 1010
02.Oracle/DataBase2008. 7. 14. 18:35
반응형
문서는
http://www.oracle.com/technology/pub/articles/smiley_rac10g_install.html
http://www.oracle-base.com/articles/10g/OracleAS10gInstallationOnFedora2.php
참조.

시스템 환경 점검
2.6.9-11 이상의 커널이 필요하다.
# uname -r

필요한 패키지 버전(그 이상도 당연히 가능) -> 대부분 설치되어 있다.
binutils-2.15.92.0.2-10
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9
gcc-c++-3.4.3-9
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9
libstdc++-devel-3.4.3-9
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5

시스템 요구사항 검증
# grep MemTotal /proc/meminfo
MemTotal :    xxxxxx KB
# grep SwapTotal /proc/meminfo
SwamTotal : xxxxx KB

계정 생성
# groupadd oinstall
# groupadd dba
# useradd -m -g oinstall -G dba oracle
# passwd oracle


디렉토리 생성
# mkdir /oracle
# chown -R oracle.dba /oracle
# chmod -R 755 /oracle


hosts 파일
/etc/hosts 파일이 제대로 설정되어 있는지 확인.
# cat /etc/hosts
<IP-address> <fully-qualified-machine-name> <machine-name>

커널 파라미터 설정
 Oracle 11g? 가 요구하는 커널 매개변수 설정이다. 아래의 수치는 최소값이며 /etc/sysctl.conf에 적혀있는 값이
아래의 값보다 높을 경우에는 변경하지 않아도 된다. 물론 낮을 경우에는 /etc/sysctl.conf 에 추가해준다.

# sysctl -a | grep ... 으로 확인할 수 있다.

#kernel.shmall = 2097152
#kernel.shmmax = 2147483648
#kernel.shmmni = 142
# semaphores: semmsl, semmns, semopm, semmni
#kernel.sem = 250 32000 100 128
#fs.file-max = 131072
net.ipv4.ip_local_port_range = 1024 65000
kernel.msgmni = 2878
#kernel.msgmax = 8192
#kernel.msgmnb = 65535


(#처리는 서버에서 해당값보다 크거나 같은 경우이다. 적다면 주석 풀고 붙여넣는다.)

변경이 완료되면

# /sbin/sysctl -p 로 변경된 설정을 적용한다.


oracle 사용자 계정의 shell limit 설정
Linux 계정 별로 실행되는 프로세스와 열린 파일 수를 제한한다. 이를 위해 /etc/security/limits.conf 를 편집한다.
아래에 추가하자. (간격은 tab으로 조정하던지.. 알아서 )
#<domain>      <type>  <item>         <value>
    oracle            soft     nproc            2047
    oracle            hard    nproc            16384
    oracle            soft     nofile             1024
    oracle            hard    nofile             65536

그리고 /etc/pam.d/login 에 다음을 추가하자.
session    required    /lib/security/pam_limits.so


oracle 계정을 위한 환경변수
DB 서버에서 설정해야하는 환경변수는 다음과 같다.

ORACLE_BASE
ORACLE_HOME
ORACLE_SID
PATH

위의 변수를 추가하기 위해서 oracle 계정의 .bash_profile에 다음을 추가한다.

ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle/11g; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
PATH=$PATH:$ORACLE_HOME/bin

오라클 배포판 다운받기
배포판을 다운받아서 특정 디렉토리에 압축을 풀어놓는다. 물론 디렉토리는 oracle 계정의 소유여야한다.
루트로 작업하고 나중에 chown을 사용해도 상관없다.

# unzip linux.x64_11gR1_database.zip    <물론 zip파일의 이름은 다를 수도 있다 -_->
# chown -R oracle.oinstall ./database

설치 전에..
oracle 계정으로 로그인 해서  설치 파일들을 풀어놓은 디렉토리에서 runInstaller를 실행하기 전에..
# xhost +
(+까지 쳐야한다. 이걸 해줘야 루트로 로그인 한 X윈도에서 터미널로 su - oracle을 이용해서
  oracle 계정을 사용 xwindow 창을 띄울 수 있다. 궁금하다면 man xhost 를 참고할 것)

예전에는 /etc/redhat-release를 수정해주곤 했는데 안해줘도 잘 나온다.

oracle 11g도 한글이 다 깨져서 나온다. runInstaller 전에 다음을 실행한다.
# export LANG=C
그리고 나서 runInstaller를 실행하면 깨지지 않고 나올 것이다. 물론 영어로 -_-;

이제 runInstaller를 실행해보자.

Base Location
Home Location 을 profile과 동일하게 맞춰주고..
Global Database Name 도 SID 와 맞춰준다.
Advanced Installation으로 들어가면 이것저것 만질 수 있는게 많다. 귀찮으므로 패스.

자.. 이제 다음 화면이다.

Inventory Directory와 Group Name을 지정하는데 Inventory는 적당한 곳에 위치시키고..
group name도 dba로 설정해준다.

이제는 설치전 요구사항에 대해서 검사를 하는데.

Warning도 뜨고.. not execute(Network 설정)도 뜬다. 그냥 User Verify 로 선택하고 넘어가자.

11g에서는 다음 화면이 추가로 생겼다. 환경설정 관리자 등록 화면인데.. 등록하면 뭔가 귀찮으니까 -_- 패스


자 이제 Summary 를 볼 수 있다.

Install 버튼을 눌러서 계속 진행한다.

와우. 별일 없이 쭉 넘어갔다. 8i 시절 부터 10g까지 리눅스에 설치시 끈질기게 괴롭히던 Link Error가 사라졌다.
다음은 패스워드 설정이다. 11g 에서는 sys / system / dbsnmp / sysman 을 제외한 모든 계정이 잠겨있다.
여기서 풀어줄 수 있다. scott 정도는 풀어주자.

scott 을 추가해준다.


항상 해오던 루트로 실행해줄 스크립트다. 터미널을 하나 열어서 적혀있는 스크립트를 루트권한으로 실행해준다.

설치가 완료 되었다.




오라클 자동 시작/종료 설정
# vi /etc/oratab
orcl:/oracle/11g:N   <- N을 Y로 수정한다.
orcl:/oracle/11g:Y



에러처리
다음과 같은 에러가 날 것이다.

error while loading shared libraries libnnz11.so: cannot restore segment prot after reloc Permission denied

뭔가 퍼미션이 없다는 얘긴데.. 이건 SELinux를 disable 시켜주면 된다. SELinux disble 시키는 방법은

/etc/selinux/config 파일을 잘 읽어보고 고치면 된다. (모르면 구글에 검색)

또 이런 에러가 날 수도 있다.

$ ./lsnrctl start
 
LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 18-FEB-2008 19:14:37
 
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
 
Message 1070 not found; No message file for product=network, facility=TNSTNS-12545: Message 12545 not found; No message file for product=network, facility=TNS
 TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
  TNS-00515: Message 515 not found; No message file for product=network, facility=TNS
   Linux Error: 2: No such file or directory


이런 경우는 포트가 열려있지 않은 경우니까.. 방화벽에서 1521번 포트를 열어주자.

오라클 실행과 종료
oracle 계정에서
$ lsnrctl start   <리스너 스타트>

리스너 시작 후에..

$ sqlplus /nolog
sqlplus> connect orcl as sysdba
...
sqlplus> startup

서비스 스크립트 작성

# vi /etc/init.d/oracle 
다음의 내용을 파일에 쓴다.

----------------------------------------------------------------------
#!/bin/bash
ORA_HOME="/oracle/11g/"
ORA_OWNER="oracle"
 
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
        echo "Oracle Startup: failed"
        exit 1
fi
 
case "$1" in
start)
        echo -n "Oracle Start: "
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
        su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
        touch /var/lock/subsys/oracle
        echo "OK"
        ;;
stop)
        echo -n "ORACLE Shutdown: "
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
        su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
        rm -f /var/lock/subsys/oracle
        echo "OK"
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)
        echo "Usage: $0 start|stop|restart"
        exit 1
esac
exit 0

----------------------------------------------------------------------

사용은 /etc/rc.d/init.d/oracle start | stop | restart ~

Posted by 1010
02.Oracle/DataBase2008. 7. 14. 14:23
반응형
Posted by 1010
02.Oracle/DataBase2008. 7. 14. 13:27
반응형
*설치전 사전 작업*

1.필수 패키지 설치 및 기본 쉘(bash) 심볼릭 링크 설정.
sudo apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm
sudo ln -sf bash /bin/sh

2.오라클 유저 및 그룹 추가.
sudo addgroup oinstall
sudo addgroup dba
sudo addgroup nobody
sudo usermod -g nobody nobody
sudo useradd -m oracle -g oinstall -G dba -s /bin/bash
sudo passwd oracle
sudo mkdir -p /oracle/11g
sudo chown -R oracle:dba /oracle
sudo chown -R oracle:dba /home/oracle

3.심볼릭 링크 설정.
###루트 권한획득.
sudo su -
mkdir /etc/rc.d
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
ln -s /etc/rc0.d /etc/rc.d/rc0.d
ln -s /etc/rc0.d /etc/rc.d/rc1.d
ln -s /etc/rc2.d /etc/rc.d/rc2.d
ln -s /etc/rc3.d /etc/rc.d/rc3.d
ln -s /etc/rc4.d /etc/rc.d/rc4.d
ln -s /etc/rc5.d /etc/rc.d/rc5.d
ln -s /etc/rc6.d /etc/rc.d/rc6.d
ln -s /etc/rcS.d /etc/rc.d/rcS.d

4.커널 변수 및 시스템 설정.
cat >> /etc/sysctl.conf << EOF
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
EOF
cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535
EOF
cat >> /etc/pam.d/login << EOF
session required /lib/security/pam_limits.so
session required pam_limits.so
EOF

sysctl -p

5.오라클 환경변수 설정.
vi /etc/profile
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/11.1.0/db_1
export ORACLE_SID=orcl11
export PATH=$PATH:$ORACLE_HOME/bin

6.레드햇 버전 추가.
echo "Red Hat Linux release 4" > /etc/redhat-release


*설치*

1.시스템 재부팅 후 oracle 유저로 접속.

2.오라클 11g 다운로드 및 압축 해제.
사용자 삽입 이미지

3.인스톨러 실행.
./runInstaller -ignoreSysPrereqs

※인스톨러가 구동중 display에러 발생할 경우.
1.DISPLAY 환경변수 확인.
echo $DISPLAY

2.확인시 DISPLAY 값이 없을 경우 DISPLAY 환경변수 설정.
export DISPLAY=:0.0
사용자 삽입 이미지

※에러화면(디렉토리 및 권한 불충분 에러) : 그냥 OK클릭 후 다음 단계 진행
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


우분투 오라클 설치 관련 글 : http://kekedie.tistory.com/4
Posted by 1010
02.Oracle/DataBase2008. 7. 14. 12:13
반응형
페도라6, 페도라8에서 성공하였습니다..
기본적으로 오라클 홈페이지에 있는 설치 방법을 기반으로 성공하였습니다..

http://www.oracle.com/technology/global/kr/pub/articles/smiley_10gdb_install.html

인터넷에 올라온 경험담들이 다 비슷비슷하지만...필요없는 부분들도 상당히 많았네요(고생한이유;;).

그럼 시작해 보겠습니.

 

1. 커널 버전의 요구사항을 확인한다.


Oracle Database 10g의 커널 버전 요구사항은 2.6.9-5.Elsmp 사용자는 이것과 동일하거나 이후의 버전이어야 합니다.


#uname -r //명령어로 확인


2. 페도라의 패키지 적용상태를 확인한다.


기본적으로 패키지들은 설치가 되어있지만 저같은 경우 몇개가 없어 설치를 하였습니다.


#rpm -q gcc make binutils setarch compat-db compat-libgcc-296  compat-libstdc++-296 \

compat-libstdc++-33 glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel \

libgcc libgcc++ libstdc++-devel openmotif21 libXp // 확인가능하다.

저는 위에서 3갠가 4개정도만 추가로 설치하였는데 openmotif21패키지는 #yum install명령어로 설치가 안됩니다.

http://www.superuser.co.kr/home/search/?select=rpmView&no=14559 // 리눅스포털사이트

에 가셔서 openmotif21-2.1.30-14.i386.rpm으로 컴퓨터환경에 맞는 패키지를 다운 받으시고 설치하세요.(libXp도같이깔리는거같았음..아마도..)


ex)페도라8에서는 setarch, libgcc++이 안깔려요..


3. 시스템 요구사항 확인


최소 메모리 요구사양 512MB, swap 공간의 최소 요구사항 1GB..

이건 거의다 통과할꺼라 생각됨...컴퓨터들이 좋으니..저도 별로 바꾼게 없다는..


4. 오라클 그룹 및 사용자 계정 생성


오라클은 설치하기 위한 사용자 계정을 따로 만들어 두어야 합니다.

#groupadd dba // 그룹생성

#useradd -g dba oracle // 사용자 계정

#passwd oracle // 비번 설정

#id oracle // 확인..


5. Linux커널 매개변수의 설정


커널 매개변수를 변경해 주어야 하는데 시스템이 아래 명시된 것보다 높다면 변경하지 않아도 된다고

했지만..저는 변경을 했습니다..

#vi /etc/sysctl.conf // 를 열어 맨 아래에 다음을 입력합니다.

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000


6. oracle 사용자 계정의 Shell Limit 설정


오라클은 리눅스 계정 별로 실행되는 프로세스와 열린 파일의 수를 제한한데요...

#vi /etc/security/limits.conf // 열고 맨아래에 입력

oracle    soft    nproc    2047

oracle    hard   nproc    16384

oracle    soft    nofile     1024

oracle    hard   nofile     65536


7. oracle 계정을 위한 환경변수


설정해야되는 환경변수에는 ORACLE_BASE, ORACLE_HOME, ORACLE_SID, PATH임

오라클 계정으로 접속한후에 위에있는 환경변수들을 입력해줍니다.

#su oracle

#vi .bash_profile // 열고 맨 아래에 입력

ORACLE_BASE=/home/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.1.0/Db_1; export ORACLE_HOME

ORACLE_SID=ORCL; export ORACLE_SID                    // 데이터베이스이름인건알죠?

PATH=$PATH:$ORACLE_HOME/bin; export PATH


저는 환경변수를 오라클 설치한 후에 설치한 경로를 확인해서 입력했어요. (추천..)



8. 운영체제의 버전 검증


오라클 데이터베이스 10는 10.1.0.3의 Installer는 RHEL4가 지원 가능한 버전임을 인식하지 못합니다.

#vi /etc/redhat-release // 열고 변경한다

Red Hat Enterprise Linux AS release 3 (Taroon)


9. 오라클의 설치


이제 설치를 시작할껀데요..오라클 계정으로 접속한담에 오라클10g를 다운받아야합니다.

http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/linuxsoft.html

위에 오라클 홈피에서 ship.db.cpio.gz를 설치할 폴더에 다운받습니다. 저는 /home/oracle에 바로 다운받았답니다.

#su oracle // 오라클 계정으로 접속합니다. root에서 다운받고 알맞은 폴더로 복사해도되요~

#gunzip ship.db.cpio.gz // 압축품 그럼 ship.db.cpio로 풀림

#cpio -idmv < ship.db.cpio // 또 압축품...그럼 Disk1이란 폴더가 생김

#cd Disk1 // 이동하구

#./runInstaller // 오라클 설치를 시작합니다..


ex) 페도라8에서는 추가적으로 자바어쩌구 에러가 한개나올지도 모르는데요..

그럴때는 페도라 패치를 모두 깔아주셔야 된데요~


여기에서 실행이 안되면 아마 호스트 문제일껍니다.. root로 가셔셔 xhost +한번해주세요~

그런데 오라클 설치화면에서 글씨가 깨져서 보일껍니다...

#export LANG=C // 깨진글씨가 잘보입니다.

자 그럼 설치화면이 잘될겁니다~ 설치방법은 패스~ 설치 중간에 orainstRoot.sh 스크립트를 root로 실행하라고 창이하나 뜰겁니다..무시하지말고 새로운 터미널하나 열어서 root로 실행한담에 넘어가시구요. 설치마지막에도 root.sh를 root로 하라고 창이또뜹니다..그럼 다시 해주시고...워링이나 에러나 창뜨는것들 무시하지 마시고 잘읽어보심 방법을 알겁니다..


sqlplus 사용하려는데 shared_pool_size관련 에러가 생긴다면 에러메시지를 확인하여

요구하는 shared_pool_size를 찾아 오라클이 깔린 디렉토리로 이동하면 dbs라는 폴더가 있습니다.

그폴더에 initORCL.ora파일을 열어서 shared_pool_size를 변경시키면 잘될겁니다~

Posted by 1010
02.Oracle/DataBase2008. 7. 14. 09:26
반응형
oracle9i에 bissa_back이라는 user가 없어서 발생하는 문제입니다.
import 하시기 전에
user를 생성하시고 해당 user에 대한 필요한 Role을 주시고
특정 tablespace에 table을 생성하실려면 Quota을 지정하셔야 겠죠.

----------------------------------------------------
안녕하세요...
전 윈도우에 9i를 설치해서 하고 있습니다..
그런데, 8i에서 엑스포트한 파일을 9i에서 임포트할려고 하는데 되지 않네요..
9i에서는 사용자, 사용자 권한, 테이블 스페이스만 만들었고요..
임포트 실행하면 이런 메세지가 나옵니다..

실행명 :>
C:\>imp userid=system/manager file=d:\oracle\test.dmp fro
muser=bissa touser=bissa_back;

. BISSA 객체를 BISSA_BACK;(으)로 임포트하는 중입니다.
"ALTER SESSION SET CURRENT_SCHEMA= "BISSA_BACK;""
IMP-00003 : ORACLE 오류 1435 가 발생했습니다..
ORA-01435 : 사용자가 존재하지 않습니다.
IMP-00000 : 임포트가 실패로 끝났습니다.
Posted by 1010
02.Oracle/DataBase2008. 7. 8. 15:59
반응형
오라클개잘바튜닝가이드
Posted by 1010