2014년 11월 9일 일요일

아이들에게 책을 읽어 줍시다

  하루에 15분씩 아이들에게 책을 읽어주는 것이 아이들에게 어떤 놀라운 효과를 가져올까요?  외국의 가정에서는 아이들이 잠자리에 들 때 머리맡에서 부모들이 자녀들에게 책을 읽어주는 것이 오래된 하나의 전통으로 되어 있습니다.  어린 시절 밤마다 책을 읽어주시던 부드러운 그 목소리가 평생 아름다운 기억으로 인생을 살아가는 큰 힘과 위로가 될 것입니다.

책을 읽어주면
1) 아이들은 그 책에 흥미를 갖게 됩니다.
   "얘, 이 책 정말 재미있구나.  엄마가 한 번 읽어줄까?  하는 말만으로도 대단한 흥미를 불러일으킵니다.

2) 책을 읽어가는 동안 아이의 호기심과 상상력이 크게 발동합니다.
   아이 혼자 책을 읽으면 모르는 부분도 많고 집중이 되지 않아 책 내용을 다 소화하기가 어렵고 흥미를 잃어 대충 읽고 마는 수가 있습니다.

3) 언어 표현력과 사고력이 크게 늘어납니다.
   듣고 말하고 읽고 쓰는 언어능력은 끊임없이 새로운 표현을 접하게 됨으로 가능합니다.  책을 자주 읽으면 새로운 표현 속에서 아이들의 사고력은 무한대로 발달합니다.

4) 집중력이 생깁니다.
  아이들의 언어발달은 듣기부터 시작합니다.  주의가 산만한 것은 이런 훈련이 안되어 있기 때문입니다.  아이들에게 자주 재미있는 책을 읽어주면 자연스럽게 내용에 빠져 들고 반복되면 집중하는 습관이 생깁니다.

5) 아이들의 정서가 풍부해지고 성격이 좋아집니다.
   TV나 컴퓨터 앞에 앉아있는 아이의 관심을 책으로 끌어들여 책에서 흥미와 위안을 얻도록 이끌어줍니다.

6) 아이들에게 인생의 좋은 길잡이 구실을 합니다.
   아이들에게 읽어주는 책의 내용은 아름다운 동화이야기, 훌륭한 위인 이야기, 신비한 과학 이야기 등 장래 인생을 살아가는 데 매우 유익한 내용들입니다.  이렇게 책에 담긴 내용을 통해 아이들은 모방하고 아름다운 장면을 상상합니다.

7) 부모님과 1대 1로 이야기를 나누는 기회가 됩니다.
   심리학에 의하면 현대 사회에서 아이들이 빗나가거나 방황하는 것은 부모와 대화시간의 부족에서 오는 정서 갈등이 가장 심각한 요인이라고 합니다.  바쁘시겠지만 하루 15분만 투자하여 아이이가 하나되는 행복한 시간을 갖기 바랍니다.  책을 읽는 것은 공부의 기초이며 사고력이 뛰어난 아이들 만들지만 혼자서 책을 읽게 두면 그 효과는 훨씬 반감됩니다.

2014년 10월 28일 화요일

리눅스에서 현재 열려 있는 포트를 확인하는 방법

열려 있는 모든 포트를 표시하기
netstat -nap
n:host명으로 표시 안함a:모든소켓 표시p:프로세스ID와 프로그램명 표시

LISTEN중인 포트를 표시하기
netstat -nap | grep LISTEN)

2014년 8월 1일 금요일

프로세스 kill

많은 프로세스를 kill 하고 싶을 때

#pskill -k dio_socket spectrum
ps -ef | grep dio_socket | grep -v grep | awk '{print $2}' | xargs kill -9

2014년 7월 30일 수요일

오라클 임포트시 'IMP-00013' 오류 처리하기

Copyright (c) 1982, 2005, Oracle.  All rights reserved.
다음에 접속됨: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
엑스포트 파일은 규정 경로를 거쳐 EXPORT:V10.02.01 에 의해 생성되었습니다
IMP-00013: DBA만이 다른 DBA가 엑스포트한 파일을 임포트할 수 있습니다
IMP-00000: 임포트가 실패로 끝났습니다

해결책은
1. sys 권한으로 접속한 다음,
2. 아래 권한을 임포트 대상의 사용자에게 부여한다.
  SQL> GRANT IMP_FULL_DATABASE TO user;   (user는 계정명)
3. 임포트 후 권한 회수하기(해도 되고 안해도 되고)
  SQL> REVOKE IMP_FULL_DATABASE TO user;

2014년 7월 29일 화요일

포트추가


1. root 로 switch user
    [user@zany ~]$ su -
    암호:
    [root@zany ~]#

2. /etc/sysconfig/iptables 파일 열기 & 수정
    [root@zany ~]# vi /etc/sysconfig/iptables

    열고자 하는 포트를 아래 라인과 같이 추가. (8080 포트 열기)
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

3. iptables restart - 아래 명령 사용.
    [root@zany ~]# service iptables restart
    또는
    [root@snoopy ~]# /etc/init.d/iptables restart

2014년 7월 28일 월요일

Oracle DataBase 문자셋과 언어셋 확인 및 변경하기

A db에서 export 한 것을 B db로 import 하려니 한글이 들어있는 칼럼의 경우에 사이즈가 맞지 않다고 나온다.
디비에 대해서 전혀 고려하지 않고 내리고 올리려고 했던터라 혹시나해서 보니 역시나 디비의 캐릭터가 다르더라.

그나저나 이 경우에는 기존에 데이터가 없어서 그냥 바꿔도 괜찮더라.

잘 정리된 글을 보고 따라했기에 그 글을 올린다.

Oracle DataBase 문자셋과 언어셋 확인 및 변경하기Oracle DataBase 문자셋과 언어셋 확인하기

 
[ 문자셋 확인 ]
SELECT name, value$
FROM sys.props$
WHERE name = 'NLS_CHARACTERSET';

SELECT name, value$
FROM sys.props$
WHERE name = 'NLS_NCHAR_CHARACTERSET';

[ 언어셋 확인 ]
SELECT name, value$
FROM sys.props$
WHERE name = 'NLS_LANGUAGE';

Oracle DataBase 문자셋과 언어셋 변경하기

 
- 문자셋 변경 : Oracle DataBase 관리자로 접속하여 NLS_CHARACTERSET, NCHAR의 CHARACTERSET에 원하는 문자셋을 변경할 수 있다.
- 언어셋 변경 : 문자셋과 마찬가지로 오라클 데이터베이스 관리자로 접속하여 NLS_LANGUAGE에 원하는 언어셋을 변경할 수 있다.

[ 문자셋 변경 ]
UPDATE sys.props$
SET value$ = '[ 변경을 원하는 문자셋 (KO16KSC5601, AL32UTF8 등)]'
WHERE name = 'NLS_CHARACTERSET';

UPDATE sys.props$
SET value$ = '[ 변경을 원하는 문자셋 (KO16KSC5601, AL32UTF8 등)]'
WHERE name = 'NLS_NCHAR_CHARACTERSET';

[ 언어셋 변경 ]
UPDATE sys.props$
SET value$ = '[ 변경을 원하는 문자셋 (AMERICAN_AMERICA.KO16KSC5601, AMERICAN_AMERICA.AL32UTF8등)]'
WHERE name = 'NLS_LANGUAGE'';
Oracle Character set 변경 자세히...............
####################################################
#### .bash_profile 환경변수
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export ORACLE_SID=ora10
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
#export LD_ASSUME_KERNEL=2.4.19
export PATH=$PATH:$ORACLE_HOME/bin

export NLS_LANG=KOREAN_KOREA.KO16KSC5601 #한글
export NLS_LANG=KOREAN_KOREA.KO16MSWIN949 #한글(추천:지원캐릭터가 더 많음 -뷃,숖..)
export NLS_LANG=AMERICAN_AMERICA.UTF8 #유니코드



####################################################
#### 캐릭터 셋 설정 확인

SELECT NAME,VALUE$ FROM PROPS$ WHERE NAME ='NLS_LANGUAGE' OR NAME ='NLS_TERRITORY' OR NAME ='NLS_CHARACTERSET';


####################################################
#### 오라클 캐릭터 셋 변경

update props$ set VALUE$='UTF-8' where name='NLS_CHARACTERSET';
update props$ set VALUE$='KO16MSWIN949' where name='NLS_CHARACTERSET';
update props$ set VALUE$='KO16KSC5601' where name='NLS_CHARACTERSET';

update props$ set VALUE$='KOREAN' where name='NLS_LANGUAGE';
update props$ set VALUE$='KOREA' where name='NLS_TERRITORY';



####################################################
#### 캐릭터 셋 변경후에 확인 사항(필수)

에러 유형 :
EXP-00008: ORACLE 오류 6552가 발생했습니다
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다


Problem description
===================
You receive the following error when (re)compiling or calling a piece of pl/sql:
ORA-06550: line <num>, column <num>: ....
or
ORA-06552: PL/SQL: Compilation unit analysis terminated
followed by
ORA-06553: PLS-553: character set name is not recognized
에러 원인 : character set 이 섞여있음.



캐릭터셋 확인 쿼리 :
select distinct(nls_charset_name(charsetid)) CHARACTERSET,
decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);

캐릭터셋 확인 쿼리 결과(잘못된 경우): varchar2가 2개 의 캐릭터셋이 설정되어있음.
CHARACTERSET TYPES_USED_IN
-----------------------------------------------------
AL16UTF16 NCHAR
AL16UTF16 NVARCHAR2
AL16UTF16 NCLOB
US7ASCII CHAR
US7ASCII VARCHAR2
WE8DEC VARCHAR2
US7ASCII CLOB


캐릭터셋 확인 쿼리 결과(정상인 경우): TYPES_USERD_IN 하나당 하나의 캐릭터셋
CHARACTERSET TYPES_USED_IN
-----------------------------------------------------
AL16UTF16 NCHAR
AL16UTF16 NVARCHAR2
AL16UTF16 NCLOB
AL32UTF8 CHAR
AL32UTF8 VARCHAR2
AL32UTF8 CLOB


해결 방법 : 

1. INIT.ORA 안에 있는 parallel_server parameter 가 false 거나 아예 세팅되어있지 않은지 확인.
SQL>show parameter parallel_server

2. sqlplus "/as sysdba"로 다음 쿼리 실행(기존 데이터 백업 필수)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

-- UTF8로 바꿀 경우(선택)
ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

-- 한글로 바꿀 경우(선택)
ALTER DATABASE CHARACTER SET INTERNAL_USE KO16MSWIN949
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

-- oracle reboot 2번.
SHUTDOWN IMMEDIATE;
STARTUP;
SHUTDOWN IMMEDIATE;
STARTUP;

3. parallel_server parameter 수정한 경우 원복.