리눅스 쉘에서는 명령이 실행되는 데 crontab에서는 실행이 되지않는 경우


리눅스 쉘에서는 명령이 실행되지만, crontab 등록을 통해서는 실행이 되지않는 경우가 있다.

이것때문에 많은 시간을 삽질한 적이 있다.

왜 crontab에서는 명령이 실행되지않는 것일까?


결론부터 말하자면 환경변수 문제였다. 어떤계정에서 crontab작동하도록 명령하지않는 다.. 

그냥 시간되면 지 스스로 작동하기에 환경변수 따위가 없다.. 가져올 환경변수가 없으므로 작동하지 않는 건 당연하다.


crontab에서 환경변수를 설정해주면 이 문제는 간단히 해결된다.

crontab -e에서 


SHELL=/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


맨윗줄에 이런식으로 적어주면 된다..


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


ORA-00362: member is required to form a valid logfile in group x



ORA-00362: member is required to form a valid logfile in group x 의 에러는 오라클 원문에 다음과 같이 기술 됩니다.


Reason>

A request to drop a logfile member was denied because it would remove data required to form a complete logfile.



redo log file 은 오직 inactive 상태일 때만 삭제가 될 수 있는데, 

inactive 상태인데도 불구하고 해당 member 가 삭제가 안되는 경우가 발생할때가 있다. 

본인 같은 경우는 member 가 하나 뿐이 였던 group 에 새로운 member 를 추가하고 나서,

바로 기존 member 를 삭제하려고 하니 이런 에러가 발생하기도 했다.


새 member 가 추가된 직 후 에는 (log switch 나 checkpoint 가 한번도 발생하지 않는 경우), 

system 에서 기존 member 만이 logfile 에 모든 정보를 가지고 있다고 판단해서 지우지 못하게 하는 경우일 듯 싶다. 



이를 해결하기 위하여 다음의 두가지 방법을 선택할 수 있겠습니다.


1. 해당 group 자체를 아예 drop 해 버리는 방법


   - alter database drop logfile group x


2. alter system switch logfile 과 alter system checkpoint 를 여러번 수동으로 발생시켜서

   다시 해당 group 이 inactive 상태가 되었을 때 기존 member 를 삭제하는 방법.


이렇게 처리를 하실 수가 있습니다.


결론적으로  해당 group 가 inactive 상태가 되면 기존 member 를 삭제할 때 아무런 오류없이 잘 삭제가 되어지게 됩니다.



블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


ORA-25153: Temporary Tablespace is Empty



오라클에서의  ORA-25153: Temporary Tablespace is Empty  에러에 대해서 기술합니다.


ORA-25153: Temporary Tablespace is Empty 에러는 테이블스페이스의 파일이 없거나 용량이 부족하거나 하여


테이블 스페이스를 생성 또는 확장을 못하는 경우가 발생할 때 생기는 오류 메세지 입니다.


이를 해결하기위해서 다음과 같은 확인 및 처리를 해봅니다,.


우선 오라클에 sys (dba권한) 계정으로 접근을 합니다. 


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

-- 아래와 같이 temporary tablespace 가 있는지 우선 확인

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

SYS> select file_id, tablespace_name, bytes/1024/1024 MB, file_name from dba_temp_files;

 

no rows selected

 

SYS> select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

 

PROPERTY_NAME        PROPERTY_V DESCRIPTION

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

DEFAULT_TEMP_TABLESP TEMP   Name of default temporary tablespace

ACE

 

SYS> !ls -al /app/oracle/oradata/testdb/temp01.dbf

-rw-r----- 1 oracle oinstall 30416896 Aug 23 08:57 /app/oracle/oradata/testdb/temp01.dbf

 

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

-- 없다면 temporary tablespace 생성해 주면 되겠지만,

-- 위와 같은 경우 이미 TEMP tablespace 있지만, 해당 tablespace 에 data file 이 없기 때문에

-- 생기는 에러이다. 이럴 경우 해당 파일을 재사용 해주면 된다.

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

 

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

-- 재사용 해주는 경우,

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

SYS> alter tablespace temp add tempfile '/app/oracle/oradata/testdb/temp01.dbf' size 100M reuse autoextend on;

 

Tablespace altered.

SYS> select file_id, tablespace_name, bytes/1024/1024 MB, file_name from dba_temp_files;

 

   FILE_ID TABLESPACE_NAME           MB FILE_NAME

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

     1 TEMP                 100 /app/oracle/oradata/testdb/temp01.dbf

 

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

-- 새로 생성할 경우,

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

SYS> create temporary tablespace temp2 tempfile '/app/oracle/oradata/testdb/temp02.dbf' size 100M;

 

Tablespace created.

 

SYS> select file_id, tablespace_name, bytes/1024/1024 MB, file_name from dba_temp_files;

 

   FILE_ID TABLESPACE_NAME           MB FILE_NAME

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

     1 TEMP                 100 /app/oracle/oradata/testdb/temp01.dbf

     2 TEMP2                100 /app/oracle/oradata/testdb/temp02.dbf

 

SYS> alter database default temporary tablespace temp2;

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


centos - iptables 를 이용한 방화벽 포트 열기



linux (centos) 에서 iptables 를 이용한 방화벽 포트 오픈하는 방법입니다.



1. root 로 사용자 권한 변경

    [user@test ~]$ su -

    암호:

    [root@test ~]#


2. /etc/sysconfig/iptables 파일 열기 & 수정

    [root@test ~]# vi /etc/sysconfig/iptables


    열고자 하는 포트를 아래 라인과 같이 추가. (ex - 8080 포트 열기)

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT


3. iptables restart - 아래 명령 사용.

    [root@test ~]# service iptables restart

    또는

    [root@test ~]# /etc/init.d/iptables restart


이렇게하면 해당 포트가 외부로부터의 접근을 허용하게 됩니다.!!!


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,



CentOS 6 - Apache 웹서버에 SSL 인증서 설치 



1. 확인


- 아파치 버전 확인

 /usr/local/apache/bin/apachectl -v , 


- openssl 설치되어 있는지 확인

 rpm -qa | grep openssl (설치되어 있지 않으면 -> yum -y install openssl)


- ssl  모듈 설치 되어있는지 확인 

 /usr/local/apache/bin/apachectl -l


2. 개인키 생성


- 인증서를 보관할 디렉터리로 이동 하여 개인키 생성

   openssl genrsa -des3 -out <개인키 파일명>.key 2048


- 확인

    openssl rsa -noout -text -in <개인키 파일명>.key


3. CSR 생성


- csr 생성

openssl req -new -key <개인키 파일명>.key -out<csr파일명>.csr


- 항목 설명

Country Name (2 letter code) [XX]: -> 국가코드 (KR= 대한민국)

State or Province Name (full name) []: → 지역

Locality Name (eg, city) [Default City]: → 시/군/구

Organization Name (eg, company) [Default Company Ltd]: → 회사명

Organizational Unit Name (eg, section) []: → 부서명

CommonName (eg, your name or your server's hostname) []: → 도메인명

Email Address []: -> e-mail 주소


4. 인증서 신청


- csr 파일을 확인하여 ----BEGIN 부터 ----END 까지 복사하여 인증서를 신청한다.

  ex ) comodo


5. 인증서 설치


- /usr/local/apache/conf/httpd.conf 에서  ssl.conf를 사용하기 위하여 해당부분 주석해제

   Include conf/extra/httpd-ssl.conf


- /usr/local/apache/conf/extra/httpd-ssl.conf 로 들어가서 자신의 환경에 맞게 설정

SSLCertificateFile /경로/~.crt 
설명 : 발급 받은 파일 중 “인증서 파일”을 지정

SSLCertificateKeyFile /경로/~.key 
설명 : 발급 받은 파일 중 “개인키 파일”을 지정

SSLCertificateChainFile /경로/ChainBundle.crt 
설명 : 발급 받은 파일 중 “Chain CA인증서 파일”을 지정

SSLCACertificateFile /경로/ROOT.crt 
설명 : 발급 받은 파일 중 “ROOT CA인증서 파일”을 지정


6. 방화벽 설정


- 방화벽에서 ssl 포트를 열어준다 (default 값은 443)

  

6. 데몬재시작


- /etc/init.d/apachectl start & restart 

   ssl 설정 후 아파치 재구동 시 개인키 패스워드를 물어본다. 매번 데몬 재시작시 일일히 패스워드를 입력해야 하는 번거로움이 있다.


**패스워드 제거 방법 ************************

 - cp <원본개인키> <백업개인키> 

 - openssl rsa -in <원본개인키> -passout pass:'<개인키 패스워드>' -out <패스워드 제거후 생성할 키> -des3

*********************************************


- 확인

  netstat -nltp 



Tip. yum으로 설치한 httpd의 경우 

 - /etc/httpd/conf.d/ssl.conf

 - /etc/httpd/conf/httpd.conf 에서 SSLCertificateFile ,SSLCertificateKeyFile 부분 환경에 맞게 설정

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,