레이블이 centos인 게시물을 표시합니다. 모든 게시물 표시
레이블이 centos인 게시물을 표시합니다. 모든 게시물 표시

2012-10-07

DBMS/오라클]Linux Oracle 10g 자동 시작 하기


Linux Oracle 10g 자동 시작 하기


자신이 설치한 DB 타겟으로 걸면 된다.

수동으로 하는게 일단 좋을듯 합니다. 다만 급해서 리부팅 후에 자동으로 하는게 필요하다면 이방법을 사용하시면 될겁니다.







1. 그냥 하는 방법

step1. root 계정에서 /etc/rc.d 로 이동하여 rc.local 파일을 vi 편집기로 열어 줍니다.

          (rc.local 파일은 리눅스의 초기부팅설정화일로서 DOS의 Autoexec.bat 같은 것이라 보시면 됩니다)

step2. 파일의 마지막 부분에 실행하고 싶은 명령어(경로포함) 를 기록합니다


/etc/rc.d/rc.local


rdate -s time.bora.net


su - oracle -c '/home/oracle/product/10.2.0/db_1/bin/lsnrctl start'

sleep 10
su - oracle -c '/home/oracle/product/10.2.0/db_1/bin/dbstart'

sleep 30
su - oracle -c '/home/oracle/product/10.2.0/db_1/bin/emctl start dbconsole'
==========================================================================

리눅스에서 재부팅시 오라클을 자동으로 시작하고 종료하는 방법

/etc/oratab의 내용 중 다음을 변경



/etc/oratab


ORCL:/home/oracle/product/10.2.0/db_1:Y
==================================================================
 







2. 스크립트 실행 방법



(1) 스크립트 하나 만든다.


 #!/bin/bash

source /etc/profile


# oracle start
su - oracle -c '/home/oracle/product/10.2.0/db_1/bin/lsnrctl start'

sleep 5

su - oracle -c 'sqlplus "/as sysdba"' << EOF
startup
exit
EOF

sleep 60

su - oracle -c '/home/oracle/product/10.2.0/db_1/bin/emctl start dbconsole'


=================================================================================


(2) 리눅스 start 하면 스크립트 돌아게 만든다.


/etc/rc.d/rc.local


#oracle start
/root/bin/oracle_start.sh
==============================================================

2012-10-06

DBMS/MySQL]권한설정

이글은 proftp DB생성과 유저등에 관한 것을 예로 설명하는 것입니다.

1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록
db 테이블 구조
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| User | char(16) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

user 테이블 구조
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | varchar(60) | | PRI | | |
| User | varchar(16) | | PRI | | |
| Password | varchar(41) | | | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Reload_priv | enum('N','Y') | | | N | |
| Shutdown_priv | enum('N','Y') | | | N | |
| Process_priv | enum('N','Y') | | | N | |
| File_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Show_db_priv | enum('N','Y') | | | N | |
| Super_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
| Execute_priv | enum('N','Y') | | | N | |
| Repl_slave_priv | enum('N','Y') | | | N | |
| Repl_client_priv | enum('N','Y') | | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | | | | |
| ssl_cipher | blob | | | | |
| x509_issuer | blob | | | | |
| x509_subject | blob | | | | |
| max_questions | int(11) unsigned | | | 0 | |
| max_updates | int(11) unsigned | | | 0 | |
| max_connections | int(11) unsigned | | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD(비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


host 테이블 구조

+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+


mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;

DBMS/MySQL]var_디렉토리_용량_부족시에_데이터_디렉토리_이전


1. mysql을 잠시 내리고 db 파일(/var/db/mysql 디렉토리)을 여유공간으로 이동을 하고 예전 경로에 심볼릭

링크를 걸어준다. 



예시 ) 

새로운 하드 마운팅 네임 : /usr/local/db



기존 mysql 설치 디렉토리 : 프비에서 포트로 설치시 디폴트. 아님 /usr/local/mysql



mysql 데이터 디렉토리 : /var/db/mysql 



# /usr/local/etc/rc.d/mysql-server.sh stop   <-- mysql 데몬 shutdown



# mv /var/db/mysql /usr/local/db/               <-- /var/db/mysql 디렉토리를 /usr/local/db/

밑으로 이동



# chown -R mysql:mysql /usr/local/db           <-- 소유권을 mysql:mysql로 수정

  (리눅스에서는 chown -R mysql.mysql /usr/local/db 이렇게(???) 할 것임)



# ln -s /usr/local/db/mysql /var/db/mysql       <-- 심볼릭 링크 검



# /usr/local/etc/rc.d/mysql-server.sh start     <-- 재기동

DBMS/MySQL]mysql_5.0.41_소스_컴파일_해서_설치하기



The basic commands that you must execute to install a MySQL source
distribution are:
     shell> groupadd mysql
     shell> useradd -g mysql mysql
     shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
     shell> cd mysql-VERSION
     To change both the character set and the collation, use both the
     `--with-charset' and `--with-collation' options. The collation
     must be a legal collation for the character set. (Use the `SHOW
     COLLATION' statement to determine which collations are available
     for each character set.)
     shell> ./configure --prefix=/usr/local/mysql --with-charset=utf8
     shell> make
     shell> make install
     shell> cp support-files/my-medium.cnf /etc/my.cnf
     shell> cd /usr/local/mysql
     shell> chown -R mysql .
     shell> chgrp -R mysql .
     shell> bin/mysql_install_db --user=mysql
     shell> chown -R root .
     shell> chown -R mysql var
     shell> bin/mysqld_safe --user=mysql &

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h test.nchannel.net password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com

[DBMS/MySQL]가입자에게_mysql을_사용할_수_있도록_path_설정하기


1. 가입자에게 mysql을 사용할 수 있도록 PATH설정하기

/etc/skel 의 .bash_profile에 mysql을 실행시킬수 있도록 다음과 같이 설정한다.

# .bash_profile

# Get the aliases and functions
# 사용자 정의 앨리어스와 함수 정의 포함
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs
# 사용자별 환경 변수, 시작 프로그램 설정

PATH1=$PATH:$HOME/bin <- 설정부분
PATH=$PATH1:/usr/local/mysql/bin <- 설정부분
BASH_ENV=$HOME/.bashrc
USERNAME=""

export USERNAME BASH_ENV PATH1 PATH <- 설정부분

DBMS/MYSQL]_하드디스크_이상으로_디비_용량이_초과_시



할당된 하드디스크 이상으로 디비 용량이 초과 되었을때 처치 방법.1. /usr/local/mysql/var 의 로그 파일로 용량을 줄일 수 있다.
- localhost-bin.index 파일을 보면 현재의 로그 파일에 대한 정보가 있다.
- 그 로그파일은 DB의 UPDATE 내역이 기록하는 파일이다. Replication(일종의 백업)을 위해 생성된다.
- localhost-bin.index 에서 확인한 파일을 제외하고 다른 파일은 지워도 된다.
- 한가지 더 확인하자면 marster-slave 에서 show slave status 인가하는 명령으로 현재의 master 의 로그파일을 확인할수 있으니 나머지는 지워도 된다.
- /etc/my.cnf 에서 log-bin 옵션을 주석처리 해주면 로그 파일이 생성되지 않는다.

2. 하드디스크를 설치 하는 방법으로 용량 충당
- MySQL은 데이터를 디렉토리에 보관한다. 다른 파티션으로 이동할 경우 데이타 디렉토리를 이동하면 된다.
1. 기존의 데이타 디렉토리로 이동한다.
$ cd /usr/local/mysql/var
2. 기존의 데이터 파일들을 묶어서 새로운 디렉토리로 옮긴다.
$ tar cvf /usr2/local/mysql/var/backup.tar * 3. 새로운 디렉토리로 이동한다.
$ cd /usr2/local/mysql/var
4. 새로운 디렉토리에 기존의 데이타들의 압축을 푼다.
$ tar xvf backup.tar
5. 새로운 디렉토리의 권한을 mysql 사용자만 접근할 수 있도록 해 주어야 한다.
$ chmod 700 /usr2/local/mysql/var
$ chown mysql.mysql /usr2/local/mysql/var

6. MySQL 데몬을 실행시키는데 이때 --datadir=/usr2/local/mysql/var 옵션을 주어 새로운 데이터 디렉토리를 지정해 주어야 합니다.
이와 같은 방법으로 MySQL의 데이터 디렉토리를 다른 곳으로 옮길 수 있다.

- 뭐 간단하게 말해서 기존에 데이터 있던 데이터들을 압축해서 다른곳에 옮겨놓고 그디렉토리는 새로운 하드로 마운트 시키시고 다시 풀어놓으시면 된다.

3. 하드용량 초과로 트렌젝션중 파일이 손상되었을때 치료- myisamchk --safe-recover 테이블명.myi

2012-09-14

LINUX]CentOS(리눅스) 네트워크 설정


/etc/sysconfig/network
/etc/host.conf
/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network-scripts/ifcfg-*
/etc/sysconfig/network-scripts/route-*
/etc/services
/etc/protocols

/etc/sysconfig/network
로컬 시스템의 호스트 네임을 포함하여 네트워크의 사용 유무를 선택. 호스트 네임을 변경하고자 할 경우에는 /etc/hosts 파일을 함께 수정.
[root@localhost ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
[root@localhost ~]#
NETWORKING : 네크워크의 사용 유무 결정, HOSTNAME : 호스트 네임 정의
주의할 점은 /etc/sysconfig/network에서 정의한 호스트네임은 /etc/hosts에도 정의되어야 함.

/etc/host.conf
네트워크에 연결되어 있는 호스트를 찾고자 할 경우 /etc/hosts 파일을 참고할지 네임서버에 질의를 할지의 순서를 결정. 기본적으로 /etc/hosts 파일을 먼저 검색하도록 설정되어 있음.
 [root@localhost ~]# cat /etc/host.conf
order hosts,bind
 [root@localhost ~]#
/etc/hosts
네트워크에 연결되어 있는 시스템들에 대한 IPv4 주소와 호스트 네임을 정의하고 있음.
 [root@localhost ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1  localhost.localdomain localhost
::1  localhost6.localdomain6 localhost6
 [root@localhost ~]#
IP 주소
호스트 네임
별칭
 127.0.0.1
localhost.localdomain
localhost
/etc/hosts 파일은 IP주소, 호스트 네임, 별칭으로 구성되어 있음.
/etc/resolv.conf
네임서버를 사용하도록 클라이언트 시스템을 설정할 경우에는 먼저 어느 네임서버를 사용할지, 그리고 어떻게 사용할지를 지정해 줌. domain, search, nameserver 지시자를 사용할 수 있음.
domain e-zis.co.kr
domain 지시자는 기본적으로 확인할 로컬 도메인 이름을 resolver에게 지시함. 위와 같이 지정하면 ping www라고 실행시, resolver은 www뒤에 e-zis.co.kr을 추가하여 www.e-zis.co.kr에 ping을 시도함.
search e-zis.co.kr lyzzang.co.kr rockplace.co.kr
search 지시자를 사용하여 도메인들을 목록을 지정할 수도 있음. 위의 예에서 보면 ping www실행시 resolver는 3개의 도메인을 순서대로 찾으려고 시도하게 됨.
nameserver 127.0.0.1
nameserver 192.168.100.201
nameserver 168.126.63.1
로컬 시스템이 사용할 네임서버를 nameserver 지시자를 이용하여 지정해 줌.
 
 
 
=======================
 
 
http://www.jopenbusiness.com/tc/oss/entry/CentOS-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%84%A4%EC%A0%95
 
 

CentOS Network 설정

  • CentOS에 있는 네트워크 카드명을 확인 한다.
  • ifconfig -a : lo, eth0, eth1 등의 이름을 확인할 수 있다.
  • /etc/sysconfig/network-scripts/ifcfg-eth0 에 네트워크 카드를 위한 설정이 저장 된다.
          #--- eth0 네트워크 카드에 고정 IP 설정시

          DEVICE=eth0

          BOOTPROTO=none

          HWADDR=00:24:1D:71:21:5C

          ONBOOT=yes

          NETMASK=255.255.255.0

          IPADDR=203.261.27.22

          GATEWAY=203.261.27.1

          TYPE=Ethernet

          USERCTL=no

          IPV6INIT=no

          PEERDNS=yes

          

          #--- eth0 네트워크 카드에 DHCP 설정시

          DEVICE=eth0

          BOOTPROTO=dhcp

          HWADDR=00:24:1D:71:21:5C

          ONBOOT=yes
          
  • /etc/sysconfig/network
          NETWORKING=yes

          NETWORKING_IPV6=no

          HOSTNAME=localhost.localdomain   #--- 호스트명과 도메인명 지정

          # HOSTNAME=localhost

          # DOMAINNAME=localdomain
          
  • /etc/hosts #--- 호스트명 지정
          127.0.0.1               localhost.localdomain localhost
          
  • /etc/resolv.conf #--- DNS를 위한 네임서버를 지정 한다.
          search

          nameserver 164.124.101.2  #--- 데이콤에서 사용하는 nameserver IP

          nameserver 168.126.63.1   #--- 코넷에서 사용하는 nameserver IP
          
  • /etc/host.conf
          #--- 호스트명 찾는 우선 순위 지정, hosts. /etc/hosts, bind. DNS 서버

          order hosts,bind   #--- /etc/hosts 파일에서 찾고 없을 경우 DNS 서버에서 찾는다.
          
  • Network 설정 GUI 명령어
          system-config-network
          
  • Network 설정이 마무리 되면 network 서비스를 재기동 한다.
          service  network  restart
          
*** 참고 문헌 ***

Linux]CentOS 5.0에 subversion/svn 설치


출처 : http://tykim.wordpress.com/2007/06/04/centos-50%ec%97%90-subversionsvn-%ec%84%a4%ec%b9%98/

 

CentOS 5.0에 subversion/svn 설치

Filed under: System GuruIT — Peter Kim @
CentOS (RHEL 5.0)에 Subversion 1.4.3의 설치 Know-How를 공유한다.
대표적인 형상관리 서버로 CVS/CVSNT, Subversion등이 있다.
우선 순서는
  1) Subversion 설치
  2) Repository 생성
  3) Daemon 설정
  4) Client 사용
  5) 활용
으로 설명하려 한다.
1. 설치
    yum으로 의외로 쉽게 설치된다.
    #yum install subversion
    기본적으로 이렇게 설치하면 File System으로 관리할 수 있는 기본 패키지가 설치된다.
    Subversion으로 repository관리는 두가지로 File System 및 Berkeley DB를 선택 사용할 수 있다.
    Berkely DB를 사용하기 위해서는 http://www.oracle.com/technology/software/products/berkeley-db/db/index.html
에 서 설치하고 쓸 수 있는데.. 이곳저곳에서 관리 파일 용량이 많아지면 문제가 있다는 report가 있어 안전하고 직관적(실제 물리적 foder/file구조로 관리할 수 있게끔 file system 방식으로만 쓰고자 한다.
2. Repository 생성
   1) Repository 생성
      우선 Root Repository를 생성해야 한다. (이유: 3.1) 참조)
      #mkdir /data1/svn
      #cd /data1/svn
      #svnadmin create –fs-type fsfs project
      이렇게하면 /data1/svn에 project directory 및 기본적으로 하위 디렉토리들이 만들어 진다.
      인증/보안을 위한 몇가지 옵션을 설정해 주어야 한다.
   2) 기본적인 환경 설정
       #vi /data1/svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
기본적으로 anonymous access 불가, 인증 성공한 사람만 write권한, 인증방식은 passwd 파일 방식
       #vi /data1/svn/project/conf/passwd
        [users]
        userid1=password1
        userid2=password2
 접속을 허용할 userid 및 password를 기재해주면 된다.
3. Daemon 설정
   기 제작한 project repository에 대한 file-system으로의 생성, 인증, password의 본적은 환경 설정은 마쳤고, 이제 subversion daemon을 실행하기 위한  시스템 환경 설정이 남았다.
   1) 환경 설정
       #vi /etc/rc.d/init.d/subversion 을 열어 17 줄의 SYSCONFIG 내용을 확인한다.
       SYSCONFIG=”/etc/sysconfig/subversion”
       #vi /etc/sysconfig/subversion
         OPTIONS=”–threads –root /data1/svn”
         이렇게 하여 svn의 root repository directory를 설정해 준다.
   2) 시스템 가동
        #/etc/rc.d/init.d/subversion start
       이렇게 하면 subversion이 daemon으로 동작하게 된다.
       환경 변수를 바꾸고 subversion을 restart해야한다면
        #/etc/rc.d/init.d/subversion restart
   3) Booting시 자동 실행
        #vi /etc/inittab
        우선 서버의 실행 Level을 확인해야 하는데  /etc/inittab의 18번째 줄 내용을 확인한다.
        id:5:initdefault:
        본 id와 initdefault사이의 값인 5값을 확인한다. (X11로 booting한다는 의미)
        #cd /etc/rc5.d
        #vi S99local
         /etc/rc.d/init.d/subversion start &
    적당한 줄에 상기 내용을 추가한다.
4. Client 사용
    - http://blog.empas.com/mcchae/19118563 에 워낙 잘 설명이 되어 있어서 pass
5. 활용
    - 전체적으로 subversion으로 여러 사람의 협업을 통해 소스 형상 관리 및 Binary 관리등을 관리해야 하고, 프로젝트별 권한, Backup 및 Restore, 관리자 통계(오늘 어떤 파일/내용이 수정되었고, 누가 올렸고.. 등등) 여러가지  Tunning작업을 해야한다.
    - IT Project에서는 trac을 많이 쓰고 있고, 비슷한 형태로 http://oss.segetech.com/bugzilla-svn-wiki.html을 참고해도 될 것 같다.
Technorati Tags: 
Powered by ScribeFire.

Linux]CentOS 4.4에서 Java설치하기



CentOS 4.4에서 Java설치하기

1.
Sun의 Downloads페이지에서 플랫폼에 맞는 파일(self-extracting file)을 다운로드받는다.
2.
jpackage-utils과 rpm-build패키지를 설치한다.
3.
jpackage-nonfree repository에서 java-1.5.0-sun패키지를 다운로드받는다.(yumdownloader 이용)
4.
다운받은 파일들을 /usr/src/redhat/SOURCES/ 로 옮기고, 패키지를 빌드한다.
setarch i586 rpmbuild –rebuild java-1.5.0-sun*
(플랫폼은 알아서 변경해주는 센스)
5.
설치한다.
만약 libXp 라이브러리가 없다는 에러가 발생하면 xorg-x11-deprecated-libs 패키지를 설치해준다.
ODBC관련 에러가 뜨면 unixODBC-devel 패키지를 설치해준다.
끝.
SUN에서 제공하는 RPM을 이용해도 되지만, 그 경우 패키지 업그레이드시 사라질 수도 있다고 한다.
믿거나 말거나. 속는셈치고 믿어보고 이렇게 설치했다. java-1.5.0-sun-compat 라는 패키지도
있던데 JPackage Java compatibility package for Sun’s JDK 라고 주석이 붙어있는걸 보니
SUN의 패키지를 설치하고 이걸 설치해도 될 것 같기는 함.

Linix] centos45_oracle10gr2설치하기


이 문서는 http://supike.spaces.live.com/blog/cns!502FB505094D1443!377.entry http://tykim.wordpress.com/2007/04/11/red-hat-rhel4에-oralcle-10g-r2-설치-intsall-howto 사이트를 참조하여 재구성 하였으며, 전체적으로는 http://tykim.wordpress.com/2007/04/11/red-hat-rhel4에-oralcle-10g-r2-설치-intsall-howto를 기반으로 하였 고, 단지 1가지 측면의 설치 방법을 다루고 있다. 
================================================================================================
CentOS 4.5 에 Oralcle 10g R2 설치, Intsall HOWTO
Filed under: Syste m Guru — Peter Kim @ 수정 : journae
CentOS4.5(RedHat REHL4 clone) 에서 10g를 설치 가이드 자료가 많지 않아 기록차원으로 남긴다. 
0.개요
   1) 시스템 요구 사항 검증
   2) 디렉토리 생성
   3) 오라클 그룹 및 사용자 계정 생성
   4) Linux 커널 매개변수 설정
   5) Oracle계정 Shell Limit 설정
   6) Oracle 계정 환경 변수
   7) Oracle 설치   

Oracle 사용 
0. 전제 조건 OS 는 쉽게 구할 수 있는 Centos 4.5 를 사용했다. 처음에 Centos 5.0 으로 설치를 시도 했으나 gcc, glibc 등의 버전이 맞지 않아 4.5로 downgrade 한 후 다시 설치를 진행했다.
참고로, centos 설치도 GUI를 지원하는 관계로 설치가 예전보다 훨씬 편하다. 아직 윈도우 보다는 불편(?)하지만 …^^ 

1. 시스템 요구사항 검증1) Kernel 버전 확인 하여 Kernel버전 및 Architecture(i386, x86_64등)을 확인
    # uname -a

2) 설치 필요 패키지를 확인
    * gcc-3.4.3-9.EL4
    * make-3.80-5
    * binutils- 2.15.92.0.2-10.EL4
    * openmotif-2.1.30-11
    * setarch-1.6-1
    * compat-db-4.1.25-9
    - # rpm -q <패키지명> (ex:rpm -q binutils)으로 설치 여부 및 버전확인하여 최근 상위 본으로 설치한다. 특히 binutils는 최신본으로 설치할 것 (binutils를 상기 버전으로하면 중간에 skip가능한 오류가 하나 나옴)
    - 패키지의 설치는 RHN의 up2date 혹은 CentOS의 yum을 통해서 update하거나,      RPM repository 서비스 site를 이용하여 해당 RPM을 받아 직접 설치한다.
    - ex) yum install gcc … (package name)
    - 참고로 yum을 사용해 본 결과 상당히 편함을 느꼈다. 

2. 오라클 그룹 및 사용자 계정 생성Oralce의 운영을 위해 필요한 계정/그룹을 설치한다. —————————————————————————————-
# /usr/sbi n/groupadd oracle
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oracle -G dba oracle
# passwd oracle
—————————————————————————————-

3. 디렉토리 생성Oracle 10g (10.2.0.1.0) 설치에 필요한 디렉토리 및 권한을 설정한다. ————————————————————————————— 
# mkdir -p /u 01/app/oracle   (Oralce 프로그램 설치 폴더)
# mkdir -p / u02/ oradata      (Oracle 데이터 설치 폴더)
# chown -R oracle:oracle / u01/app/oracle / u02 /oradata# chmod -R 775 / u01/app/oracle / u02 /oradata
—————————————————————————————-

4. Linux 커널 매개변수 설정Oracle 운영에 필요한 커널 매개변수를 아래와 같이 설정한다.—————————————————————————————-
# cat >> /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  > EOF
# /sbin/sysctl -p
—————————————————————————————-
아래와 같이 상기 커널 파라메터가 적용되었는지 확인 한다. 
—————————————————————————————-
# /sbin/sysctl -a | grep shmkernel.shmmni = 4096kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shm-use-bigpages = 0
# /sbi n/sysctl -a | grep semkernel.sem = 250        32000   100     128
# /sbin/sysctl -a | grep file-maxfs.file-max = 65536
# /sbin/sysctl -a | grep ip_local_port_rangenet.ipv4.ip_local_port_range = 1024     65000—————————————————————————————-

5. Oracle계정 Shell Limit 설정Oracle 계정의 shell limit을 아래와 같이 설정한다.
—————————————————————————————-
cat >> /etc/security/limits.conf
cat >> /etc/pam.d/login

6. Oracle 계정 환경 변수Bourn/Korn 쉘의 경우 ~oracle/.bash_profile 파일에 대해서 아래 내용을 추가 하도록 한다.
—————————————————————————————-
export ORACLE_BASE=/disk01/app/oracle                              
export ORACLE_SID=                     
* Note : SID를 orcl로 미리 설정하였음.
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1.0/db_1   
* Note : 설치 폴더를 미리 설정하였음.
export PATH=$PATH:$ORACLE_HOME/binexport LD_LIBRARY_PATH=$ORACLE_HOME/lib
—————————————————————————————-

7. 시스템 Rebooting & Check Version 시스템을 Reboot 한다.
# vi etc/redhat-release 
(파일의 내용을 redhat-4 확인 / CentOS일 경우 인식못함으로 변경) 위의 파일의 내용을 아래와 같이 변경하여 사용한다.
Red Hat Enterprise Linux As release 3 (Taroon) ”

8. Oracle 설치1) Oracle 해당 버전 download     
a. “http://otn.oracle.com/software/products/database/oracle10g/index.html” 에서         RHEL 4AS 64bit를 위해 x86-64bit인 “Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86-64″를 다운로드 받는다.        (받는 위치는 / u01/app/oracle 에 저장한다.)     
b. “unzip -d 10201_database_linux_x86_64.cpio.gz”하여 unzip을 해주고     
c. “cpio -idmv < 10201_database_linux_x86_64.cpio”를 통해서 묶음을 풀어준다.       (이러면 압축은 /u01/app/oracle/database 에 풀린다)

** 실제 파일은 10201_database_linux32.zip 파일이 다운된다. 이 파일을 푸는 방법은 unzip 10201_database_linux32.zip 하면 현재 폴더에 database 밑에 쭈~욱 풀리게 된다.

2) oracle 계정으로 login 및 설치 명령
————————————————————————————— -
$ cd /u 01/app/oracle/database
$ ./runInstaller
이때부터는 GUI 형태이므로 설명 생략 설치폴더는 / u01/app/oracle/product/10.2.0.1.0/db_1 으로 기재 
—————————————————————————————-
(RHEL4 운영체제에서 binutils, gcc, openmotif에대한 점검작업이 실패한 경우에는 경고 메시지를 무시하고 다음 단계로 진행할 것. )

9. Oracle 사용 확인 
1) Oracle Enterprise Manager 10g Database Control    설치 후 안내화면에 데이터베이스 컨트롤 URL이 나오면 기록해 놓았다가 접속    
- User Name: SYS    
- Password: <설치과정에서 입력한 패스워드>    
- Connect As: SYSDBA

2) 데이터베이스 시작 및 중단
—————————————————————————————-
$ sqlplusSQL> shutdown immediate * Oracle instance 종료 
SQL> startup                           
* Oracle instance 시작 
—————————————————————————————-

Linux] CentOS 일반 사용자 추가 방법


사용자 추가 작업
# useradd 추가할 사용자 id

# passwd 추가할 사용자 id
  비밀번호 입력

Linux] CentOS 에서 한글 깨지는 문제 해결 방법


CentOS 4.2에서 한글 깨지는 문제 해결방법 입니다.
# /etc/sysconfig/i18n 파일에서
LANG="ko_KR.UTF-8"  =====> LANG="ko_KR.eucKR" 로 바꾸시면 됩니다.(없으면 추가)

FreeBSD] 암호없이 ssh/scp사용방법

이 글은 암호없이 scp를 사용하는 방법을 설명한다.


리눅스 시스템 관리자는 자주 컴퓨터간에 파일을 복사하거나 파일을 여러 컴퓨터로 전송한다.
ftp를 사용해도 되지만, scp를 사용하면 많은 이점이 있다.
ftp는 LAN/WAN에 내용(심지어 암호도)을 그대로 전송하지만, scp는 암호화하여 전송하기때문에 ftp보다 안전하다.


scp 의 장점은 쉽게 스크립트에서 사용할 수 있는 점이다. 파일을 리눅스 컴퓨터 100대로 복사한다고 가정한다. 직접 100번 복사 명령어를 실행하는 것보다 스크립트를 작성하고 싶을 것이다.
스크립트에서 ftp를 사용하면 로그인할때마다 암호를 물어보기때문에 힘들다.
(역주; netrc 파일을 사용하여 암호를 자동으로 입력하게 만들 수 있지만 보안상 위험하다).

대 신 scp를 사용하는 경우 원격 리눅스 컴퓨터가 암호를 물어보지 않도록 설정할 수 있다. 믿거나 말거나 이 방법은 ftp보다 훨씬 더 안전하다!


scp의 기본 문법은 다음과 같다.
현재 컴퓨터에 있는 'abc.tgz' 파일을 'bozo'라는 원격컴퓨터의 /tmp 디렉토리로 복사하려면:


scp abc.tgz root@bozo:/tmp


그러나 이 경우 bozo의 root 암호를 물어본다.
암호를 물어본다면 스크립트에서 쉽게 사용할 수 없다.
해결책은 다음과 같다 (한번만 해주면 "암호없이" 무제한 scp로 복사할 수 있다):


1. 나중에 scp를 사용하여 파일을 복사할 사용자를 결정한다.
물론 root가 가장 강력하고, 난 개인적으로 root를 사용한다.
여기서 root를 사용할때 발생할 수 있는 보안상 문제점을 강의할 생각은 없다.
내가 지금 무슨 말을 하는지 모르겠다면 root가 아닌 일반 사용자를 사용하라.
결정했다면 이제 그 사용자로 로그인하여 다음 단계를 진행한다.


2. 컴퓨터에 공개키(public key)와 비밀키(private key)를 만든다.
이 게 뭔가? 공개키 암호화 방식을 모른다면 15초간 설명하겠다.
공개키 암호화 방식은 수학적으로 연관된 공개키와 비밀키를 만든다.
그런 다음 공개키는 누구에게라도 줄 수 있지만, 비밀키는 아무에게도 알려주면 안된다.
키들의 수학적 구성상 신기하게도 누구나 공개키를 가지고 내용을 암호화할 수 있지만,
비밀키를 가진 당신만이 암호화한 결과를 해독할 수 있다. 어쨋든 두 키를 만드는 명령은:


ssh-keygen -t rsa


3. 다음과 같이 출력한다:
"Generating public/private rsa key pair"
"Enter file in which to save the key ... "
그냥 enter를 누른다.


4. 그러면 다음과 같이 출력한다:
"Enter passphrase (empty for no passphrase):"
passphrase 를 사용하지 않기때문에 enter를 두번 누른다.


5. 그러면 마지막으로:
"Your identification has been saved in ... "
"Your public key has been saved in ... "
방금 만든 공개키 파일명과 위치를 기억하라 (항상 파일명이 .pub로 끝난다).


6. 공개키를 파일을 복사할 모든 원격 리눅스 컴퓨터에 복사한다.
scp나 ftp를 사용하여 복사한다. root를 선택했다면 (다시 단계 1의 경고를 주의하라),
키는 /root/.ssh/authorized_keys (철자 조심!)에 있어야 한다. root가 아니고 예를 들어 clyde로 로그인한다면,
/home/clyde/.ssh/authorized_keys 에 있어야 한다. authorized_keys 파일이 다른 컴퓨터의 키를 저장하고 있을 수 있기때문에, 파일에 이미 내용이 있다면 (새파일을 덮어쓰지않고) 공개키 파일 내용을 뒤에 추가해야 한다.


이제 끝이다. 별다른 문제가 없다면 파일을 암호없이 원격컴퓨터로 scp할 수 있다. 다시 한번 테스트해보자.
컴퓨터에 있는 'xyz.tgz' 파일을 'bozo'라는 원격컴퓨터의 /tmp 디렉토리로 복사한다


scp xyz.tgz root@bozo:/tmp


와 !!! 암호를 물어보지 않고 복사가 된다!!


일단 암호 하나로 컴퓨터에 로그인하면 모든 원격컴퓨터에 접근할 수 있기때문에 보안에 대해서 주의하라.
그래서 암호를 더 잘 보호해야 한다.


이제 즐길 차례다.
컴퓨터에 있는 'houdini'란 파일을 10개 도시에 흩어져있는 원격컴퓨터의 /tmp 디렉토리로 복사하는 짧은 스크립트를 (5분 안에)
작성해보자. 물론 원격컴퓨터가 100대거나 1000대라도 마찬가지다.
원격컴퓨터들의 이름은: brooklyn, oshkosh, paris, bejing, winslow, rio, gnome, miami, minsk, tokyo.
스크립트는 다음과 같다:


#!/bin/sh
for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do
scp houdini root@$CITY:/tmp
echo $CITY " is copied"
done

신기한 마술같다.
스크립트에서 echo 줄은 현재 진행상황을 알려준다.


혹 시 쉘스크립트가 생소하다면 좋은 투토리얼이 있다:
http://www.freeos.com/guides/lsst/.


알 다시피 scp는 더 강력한 ssh의 일부이다.
위의 6 단계를 마쳤다면 원격컴퓨터에서 명령어를 실행할 수 있다
(물 론 암호없이!). 예를 들어, brooklyn 이라는 원격컴퓨터의 시간을 보려면:


ssh brooklyn "date"


이제 두 개념을 합쳐서 진짜로 멋진 스크립트를 만들어보자. 모든 원격 리눅스 컴퓨터를 백업하기란 쉬운 일이 아니다. 아래 스크립트는 각 컴퓨터의 /home 디렉토리를 백업한다. 상용 백업 소프트웨어와 비교하면 기능은 매우 기본적이지만, 가격면에서는 따라올 수 없다. 대부분의 상용 백업 소프트웨어는 백업할 컴퓨터 대수대로 가격을 매긴다. 이런 패키지를 사용한다면 원격컴퓨터 100대에 대한 비용을 지불하는 대신 원격컴퓨터를 한 컴퓨터로 백업하는 스크립트를 사용한라. 그리고 그 컴퓨터에서만 상용 패키지를 사용하면 99대분 가격을 절약할 수 있다 ! 어쨌던 스크립트를 참고하여 자신의 상황에 알맞는 스크립트를 작성할 수 있다. 이 스크립트를 cron 작업에 걸어둔다 (원격컴퓨터에는 필요없다). 주석을 보면 자세한 내용을 알 수 있다:

#!/bin/sh

# 변 수는 구별하기위해 대문자로 지었다

# 스크립트를 실행하기 전에 원격컴퓨터마다 '/tmp/backups'라는 디렉토리 를
# 만들고, 컴퓨터에는 '/usr/backups'라는 디렉토리를 만들어야 한다


# 컴퓨터에서,
# date 명 령어 결과를 보기 좋게 만들어서 "DATE" 변수를 설정한다
#
DATE=$(date +%b%d)

# 'for 반 복문'은 세가지 작업을 한다

for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo
do

# 1) 원격컴퓨터의 하드디스크가 꽉차지 않도록 저번에 실행한 스크립트가 만든 tarball을 삭제하 고 
# 확인을 위해 echo한다
#
ssh -1 $CITY "rm -f /tmp/backups/*.tgz"
echo $CITY " old tarball removed"

# 2) 원격컴퓨터마다 /home 디렉토리 를 tarball로 만들어서 /tmp/backups에 저장한다
# tarball 파일명은 구별하기위해 도시명과 시간으로 짓 는다
#
ssh $CITY "tar -zcvpf /tmp/backups/$CITY.$DATE.tgz /home/"
echo $CITY " is tarred"

# 3) 원격컴퓨터에 있는 tarball을 /usr/backups 디렉토리로 복사해온다
#
scp root@$CITY:/tmp/backups/$CITY.$DATE.tgz /usr/backups
echo $CITY " is copied"

done


# 나머지 부분은 오류검사용으 로 없어도 된다:

# 파일명에 날짜를 포함한 오류파일을 만든다. 
# 백업이 안된 컴퓨터가 있다면 이 파일 에 기록한다
#
touch /u01/backup/scp_error_$DATE

for CITY in brooklyn oshkosh paris bejing winslow rio gnome miami minsk tokyo

do

# tarball이 복사되었는지 검사한다. 없다면 오류파일에 기록한다
# '||'은 앞 에 있는 부분이 참이 아닐때만 뒤에 있는 부분을 실행한다는 뜻이다
#
ls /u01/backup/$CITY.$DATE.tgz || echo " $CITY did not copy" >> scp_error_$DATE


# tarball을 정상적으로 열 수 있는지 검사한다. 문제가 있다면 오류파일에 기록한다.
tar ztvf /u01/backup/$CITY.$DATE.tgz || echo "tarball of $CITY is No Good" >> scp_error_$DATE

done



출처 : linux gazette