잡동산이

Fedora Core 4에서. 꼭. mysql 4.0.X 설치시 "LinuxThreads"... "Not found" ... 에러


/usr/include/pthread.h

파일에

/* Linuxthreads */

한줄 추가하면 끝!


원인
; mysql configure 과정에서 pthread.h 파일을 찾아 위 문구가 있는지 조사하게 되는데
  Fedora Core 4의 glibc는 '/* Linuxthreads */' 가 없어 발생하는 에러.. 

- 세바니님의 이글루스에서 퍼옴 -

 

설치 준비 작업

스왑영역 2GB 이상

/tmp 영역 1GB 이상

설치디렉터리 3GB 이상 공간 필요

 

방화벽 SELinux 는 Disable

 

1. root로 로그인하여 계정 생성

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

# mkdir -p /u01/app/oracle/product/10.2.0/db_1
# chown -R oracle.oinstall /u01

 

2. 시스템 파라메터 추가.

# vi /etc/sysctl.conf


아래 내용 추가 / 기존내용 주석
# oracle 10g setting
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
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144

 

# /sbin/sysctl -p
출력 확인

 

# vi /etc/pam.d/login


아래 내용 추가
# oracle 10g setting
session  required  /lib/security/pam_limits.so

 

# vi /etc/security/limits.conf


아래 내용 추가
# oracle 10g setting
oracle     soft     nproc     2047
oracle     hard    nproc     16384
oracle     soft     nofile      1024
oracle     hard    nofile      65536

 

# vi /etc/profile


아래 내용 추가
# oracle 10g setting
if [ $USER = "oracle" ]; then
 ulimit -u 16384 -n 65536
fi

       


3. 시스템 재부팅 후 루트계정 로그인

# shutdown -r now

 

# vi /etc/redhat-release
아래 내용 추가 / 기존내용 삭제 또는 주석
수정 전 : CentOS release 5.3 (Final)
수정 후 : redhat-4

 

4. oracle 사용자로 로그온하여, Oracle 환경 변수를 설정

# su - oracle
$ cd ~
$ vi .bash_profile


아래 내용 추가
# oracle 10g setting
TMP=/tmp; export TMP
TMPDIR=$TMP;
export TMPDIR
ORACLE_BASE=/u01/app/oracle;
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_HOME
ORACLE_SID=orcl;
export ORACLE_SID
ORACLE_TERM=xterm;
export ORACLE_TERM
PATH=/usr/sbin:$PATH;
export PATH
PATH=$ORACLE_HOME/bin:$PATH;
export PATH
export LANG=C

 

추가후 저장하고 아래 실행

$ source .bash_profile

 

5. 필수 패키지 설치

# yum install binutils
# yum install compat-libgcc-296
# yum install compat-libstdc++-296
# yum install compat-libstdc++-33
# yum install cpp
# yum install gcc
# yum install gcc-c++
# yum install glibc
# yum install glibc-common
# yum install glibc-devel
# yum install glibc-headers
# yum install ksh
# yum install libaio
# yum install libaio-devel
# yum install libgcc
# yum install libstdc++
# yum install libstdc++-devel
# yum install make
# yum install setarch
# yum install libXp
# yum install openmotif
# yum install unixODBC*

 윗 단계가 조금 짜증이..

 

 

6. 오라클 압축 풀기

다운 경로 이동후
# unzip 10201_database_linux32.zip
# mkdir /oracle10g
# chmod 755 database
설치 파일 원하는곳에 이동후 설치

 

7. 설치 시작

# xhost +
설치는 반드시 oracle 계정으로
# su - oracle

압축 푼곳 이동

$ cd database
$ ./runInstaller


 

설치 시작하기
http://huikyun.tistory.com/204

 


서비스 시동/중지

$ sqlplus /nolog
SQL> connect /as sysdba
SQL> startup

SQL> SELECT LTRIM('000123','0') FROM DUAL;

SQL> 123
SQL> shutdown


오라클 인스턴스를 시작하였으면 아래와 같이 오라클 리스너를 켜준다.
오라클 리스너를 켜야만 sqlplus 이외에 외부 접속이 가능하다.
그리고 다른 host에서 접속할때는 방화벽에서 오라클 서비스 포트(기본 1521)이 막혀 있지 않은지 확인한다.
리스너
$ lsnrctl start
$ lsnrctl stop

iSQL*Plus

$ isqlplusctl start
$ isqlplusctl stop

Enterprise Manager

$ emctl start dbconsole
$ emctl stop dbconsole



서비스 자동 시작

# vi /etc/rc.d/rc.local

 

아래 내용 추가
# for oracle 10g
su - oracle -c '/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl start'
su - oracle -c '/u01/app/oracle/product/10.2.0/db_1/bin/dbstart'
su - oracle -c '/u01/app/oracle/product/10.2.0/db_1/bin/isqlplusctl start'

 

# vi /etc/oratab

 

아래에서 끝에 N을 Y로 수정한다.
orcl:/u01/app/oracle/product/10.2.0/db_1:N


오라클 제거

오라클 홈디렉터리 화일 전부 삭제
# rm -rf /etc/oraInst.loc
# rm -rf /etc/oratab
# rm -rf /usr/local/bin/oraenv
# cd /tmp
관련 파일 삭제
계정관련파일 삭제

 


설치후 사용자 관리

사용자 확인
SQL> SELECT * FROM all_users;

유저 생성
SQL> CREATE USER seban IDENTIFIED BY seban00;

유저 권한주기
SQL> GRANT connect, resource, dba TO  seban;

생성한 유저로 접속
SQL> CONN seban / seban00

사용자 삭제
SQL> CONN system / password
SQL> DROP USER seban;

 

 

윈도우에서 접속하기위한 리스너 설정

 

 

우선 방화벽에 1521 포트 열려있는지 확인

# vi /etc/sysconfig/iptables

 

아래 내용 없을경우 추가
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

 

저장후 아래 명령 실행
# service iptables restart

 

 

$ vi /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

 

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))
    )
  )

 

 

설정이 모두 끝났으면 한번 리스타트 해주자

# shutdown -r now


 

접속후 실행하면 잘돌아간다 ^^

 

 

한글입력시 한글깨짐 처리

$ sqlplus /nolog

SQL> conn /as sysdba

SQL> select * from v$nls_parameters;


<문자셋 설정>

SQL> update sys.props$ set value$='KO16KSC5601' where name='NLS_CHARACTERSET';

SQL> update sys.props$ set value$='KO16KSC5601' where name='NLS_NCHAR_CHARACTERSET';

 

<언어셋 설정>

SQL> update sys.props$ set value$= 'AMERICAN' where name='NLS_LANGUAGE';

SQL> commit;

SQL> shutdown immediate;

SQL> startup;

 

 

재귀 호출

IT Study/Java2012. 10. 2. 13:52

재귀 메소드의 활용.

1. 재귀적 사고는 복잡한 문제를 간결하게 해결하는 열쇠가 된다.

2. 수백 줄 이상의 코드가 요구되는 문제를 불과 수십 줄의 코드로 해결할 수 있다.

 

재귀 메소드를 활용하기 위한 주의사항.

1. 재귀의 연결 고리를 끊기 위한 조건 검사의 위치가 적절해야 한다.

2. 재귀의 연결 고리를 끊기 위한 조건 검사가 true가 되도록 적절한 연산이 이뤄져야 한다.

 

--  재귀 메소드 정의 --

 

public class Reculfactorial {

 public static void main(String[] args) {

  System.out.println("3 factorial : " + factorial(3));
  System.out.println("12 factorial : " + factorial(12));
  
 }

 public static int factorial(int n)
 {
  if(n==1)
 return 1;
  else
   return n*factorial(n-1);
 }
 
}

 

수학적 방식의 팩토리얼

5! = 5*4*3*2*1            ==        5! = 5 * 4!

4! = 4*3*2*1               ==        4! = 4 * 3!

3! = 3*2*1                  ==       3! = 3 * 2!

2! = 2*1                     ==        2! = 2 * 1!

1! = 1                        = =       1! = 1

 

 

-- 잘못된 재귀 메소드의 정의의 예 --

 

public class InfRecul {

 
 public static void main(String[] args) {

 showHi(3);
 }

 public static void showHi(int cnt)
 {
  
  System.out.println("Hi~ ");
  showHi(cnt--); //후감소이고 출력후 계속 3으로 초기화 되므로 에러;
  if(cnt==1)
   return;
  
    
 }
}

 

 

 

'IT Study > Java' 카테고리의 다른 글

자바 리눅스 루프백 아이피를 알아내는 방법  (0) 2014.11.28
자바 인터페이스 요약 정리  (0) 2014.11.25
스트럿츠 프레임워크  (0) 2014.11.25