월요일, 9월 25, 2006

[oracle]리스너,listener,15214 유저 패스워드 변경

O/S 상에서 lsnrctl 실행하고 start를 입력
리스너가 돌아간다

sid로 자기 컴퓨터에서 tnsping을 날려본다 몇 밀리초 이렇게 나오면 성공~

가끔 ora-12514 에러를 발생시킬때가 있다.
그럴땐 TNS 부분의
(SERVICE_NAME = TC3MES1) 이렇게 된 부분을
(SID = TC3MES1) 이렇게 바꿔주면 된다.

덤으로 관리자 유저의 패스워드를 변경하는 방법

SQL> alter user system identified by mgrtc3mes1;

User altered.

화요일, 9월 19, 2006

[HP-UX] CPU의 clock 을 알아보는 명령어

[cnc1mes3:root/] echo "itick_per_usec/D" | adb /stand/vmunix /dev/mem | tail -1
itick_per_usec: 750
[cnc1mes3:root/]



다른 UNIX 시스템엔 적용 안 됨

금요일, 9월 15, 2006

[solaris]/home밑에 디렉토리 생성이 안 될때

/etc 밑에 보면

-rw-r--r-- 1 root bin 50 Sep 15 14:20 auto_home
-rw-r--r-- 1 root bin 113 Aug 15 13:01 auto_master

두 파일에서
home 부분을 삭제하거나 주석처리 한다.

화요일, 9월 12, 2006

[HP-UX] Internal disk 의 용량을 알아보는 커맨드

[gmltmes3:root/] vgdisplay | grep "PE Size (Mbytes)" ;vgdisplay | grep "Total PE"
PE Size (Mbytes) 16
PE Size (Mbytes) 4
PE Size (Mbytes) 4
PE Size (Mbytes) 4
PE Size (Mbytes) 4
PE Size (Mbytes) 4
PE Size (Mbytes) 4
Total PE 8748
Total PE 10238
Total PE 7678
Total PE 7678
Total PE 15357
Total PE 15357
Total PE 12797




줄순서대로 맞춰서 PE Size * Total PE /1024 하면 Disk 의 용량을 계산할 수 있다.

제일 윗줄은 Internal Disk 용량이다. 하지만 mirroring 되어 있으므로 /2를 추가 계산한다.

나머지는 모두 External Disk이다.

라벨:

[solaris] parameter 설정및 network 설정

parameter 설정 /etc/system (ascii:text)


network 설정

hostname /etc/hosts
netmasks /etc/netmasks
router /etc/defaultrouter

[oracle] DBlink 조사

select * from dba_db_links;

월요일, 9월 11, 2006

[oracle]특정유저의 명령권한을 없애는 명령어(revoke)

REVOKE DELETE, INSERT, SELECT, UPDATE ON mesmgr.CCS_MON_BQLT_INSP from sifusr;
-- mesmgr유저의 CCS_MON_BQLT_INSP 테이블로부터 sifusr 유저의 모든 권한을 제거한다.


덤으로 권한 부여(grant)
GRANT DELETE, INSERT, SELECT, UPDATE ON mesmgr.CCS_MON_BQLT_INSP TO sifusr, mesusr;

-- 내용은 똑같다 다만 TO 부분에 주의할 것.

[oracle,unix] 9월 11일 작업

mir5의 기존 N1,N2 데이터 이관 작업

☆☆Temp에서 Prod로 옮기고 난 후에는 반드시 Temp 테이블을
TRUNCATE 할것!!!☆☆
==>RPTMGR 유저의 SUM_PIDHIST_TEMP 테이블을 Truncate
==>rptmgr 유저로 접속후
TRUNCATE TABLE SUM_PIDHIST_TEMP;
system으로 접속했다면
TRUNCATE TABLE rptmgr.SUM_PIDHIST_TEMP;




1. SUM_PIDHIST_TEMP.sql 의 내용중 날짜 부분을 해당월에 맞게 수정한다.
('참조'탭을 참조해도 괜찮다)
2. 별다른 변동사항이나 특이사항이 없다면 OS상에서
nohup sh load.sh SUM_PIDHIST_TEMP.sql >> SUM_PIDHIST_TEMP.log &
을 실행한다. load.sh 파일이 실행될 파일

3. ps -ef | grep load로 OS상에서 확인
4. DBwine이나 PL/SQL Developer등으로 session 확인 (Active, 실행유저 등으로 찾아본다)
5. SIFWIP_DAT04,IDX04 테이블스페이스 모니터링
6. 언두로그 모니터링



부록: truncate속성 =>
-- 테이블을 Truncate하면 테이블의 모든 행이 삭제되고 사용된 공간이 해제 됩니다.

-- TRUNCATE TABLE은 DDL명령이므로 롤백 데이터가 생성되지 않습니다.
-- DELETE명령으로 데이터를 지우면 롤백명렁어로 복구 할 수 있지만
-- TRUNCATE로 데이터를 삭제하면 롤백을 할 수가 없습니다.

-- 행당 인덱스도 같이 잘려 나갑니다.
-- 외래키가 참조중인 테이블은 TRUNCATE할 수 없습니다.
-- TRUNCATE명령을 사용하면 삭제 트리거가 실행되지 않습니다.

-- 기존 data 다 날아 간다.
-- 껍데기만 남는다.

[oracle]01번 file system, core dump, trace

du -sk * 명령과 ls -ltr 의 조합으로 최근에 가장 많이 늘어난 디렉토리에 접근한다.
core dump가 지속적으로 떨어지면서 트레이스도 함께 발생하여 파일시스템이 증가하게 된다.
원인은 잘못된 sql문 수행.

/c2m3_01/ots1mes2/app/oracle/admin/TS1MES2

대충 이런 경로 밑에 보면 오라클의 3가지 덤프가 존재한다.
cdump는 코어덤프 (오래된 디렉토리부터 삭제)
udump는 트레이스 파일들

원인을 분석하기 위해 트레이스 파일을 본다.
해당날짜 해당시간에 떨어진 트레이스 파일을 vi 편집기로 열고
검색옵션으로 'PROCESS STATUS'를 검색해본다.

해당 프로세스의 상태들이 나온다 어디서 실행했는지 뭘로 실행했는지
운이 좋다면 누가 실행했는지에 대해서도 나온다.
만약 실행한 주체를 발견했다면 그 사람에게 연락하여 해당 sql문 실해의
중단이나 확인을 요청한다.

금요일, 9월 08, 2006

[oracle]DB 프로시져(procedure) 사용법

프로시져는 테이블이 아니다.
프로시져를 사용해서 각 DB의 정보를 rpttest 소유의 해당 테이블에
저장할 뿐이다. PL/SQL Developer 좌측 메뉴의 procedure 항목에서
프로시져의 view를 선택하면 테이블에 저장하는 sql script를 볼 수 있다

실제 사용은 DB에 저장된 데이터를 이용해서 한다.
테이블 네임은 RPTTEST.CHECK_OBJECT,RPTTEST.CHECK_.... 뭐 이런식으로 나간다.
아래는 실제 SELECT 하는 SQL문

SELECT NAME,SEGMENT_NAME,BYTES/1024/1024,M_DATE
FROM RPTTEST.CHECK_OBJECT
WHERE SEGMENT_NAME = 'SUM_PIDHIST_MOD'
and M_DATE like '200605%';

-- SUM_PIDHIST_MOD 테이블스페이스의 2006년 4월 사용량

nohup 실행파일 1> /dev/null 2>&1 & | 참고

nohup 실행파일 1> /dev/null 2>&1 &


실제적인 설명은 마지막에 드리고

먼저 I/O 재지향에 대한 개념을 소개합니다.



I/O 재지향



ls > ls_result.txt

위와 같이 하면 화면에 출력될 ls 의 결과가 ls_result.txt 라는 파일 속에 기록이 됩니다.



화면에 출력될 내용을 표준출력(stdout)이라고 하는데,

파일디스크립터(file descriptor) 번호는 1번입니다.

(표준입력, 표준출력, 표준에러에 해당하는 파일 디스크립터는 각각 0, 1, 2 입니다.)



ls 1> ls_result.txt 라고 해도 결과가 같습니다.



ls > /dev/null 은 ls 의 결과를 /dev/null 이라는 파일 속에 넣습니다.

/dev/null 은 특수한 장치파일로 모든 입력을 (마치 블랙홀 마냥) 없애버립니다.



1> /dev/null


그러므로 위의 표현은 표준출력을 /dev/null로 재지향합니다.



2>&1

이 표현은 1번 파일디스크립터에 2번 파일디스크립터(stderr) 를 재지향 합니다.

1번 파일디스크립터는 바로 전에 /dev/null 로 재지향되었기 때문에

2번 파일디스크립터를 1번 파일디스크립터로 재지향하는 것은

2번 파일디스크립터를 /dev/null 로 재지향하는 것과 동일합니다.



&


마지막의 & 는 실행 작업을 background 로 보내는 역할을 합니다.



그러므로,

nohup 실행파일 1> /dev/null 2>&1 &


위 명령은

실행파일을 백그라운드 모드로 실행을 하면서

로그아웃 후에도 프로세스가 죽지 않고 진행되도록 하는데,

실행파일에 의해 발생되는 출력(에러 메시지까지)을 화면에 보이지 않게끔 합니다.



nohup 명령은 실행을 하면 nohup.out 이라는 이름의 파일이 생성됩니다.

이 파일에는 nohup 으로 실행하는 명령의 출력이 기록이 되는데

위의 명령을 이용하면 nohup.out 에는 아무런 기록이 남지 않습니다

목요일, 9월 07, 2006

[HP-UX] 해당 시스템의 온갖 정보(information)

/var/opt/ignite/local/manifest/manifest.info

시리얼, 커널 비트, IP, 소프트웨어 리스트 기타등등 죄다 있다.

grep으로 잡아서 써보라

[oracle]테이블에 대한 유저의 권한 select

select *
from dba_users
where username like ('%VIE%') OR username like ('%READ%');

-- 찾고자 하는 유저의 이름을 검사하는 sql 문이다


select *
from dba_tab_privs
where GRANTEE IN ('RPTVIEWER','SIFVIEWER','MESVIEWER','BCDVIEWER') AND PRIVILEGE IN ('UPDATE','DELETE','INSERT');

-- dba_tab_privs 딕셔너리는 테이블에 관한 권한만을 기술한 딕셔너리이다

그 외에 다른(시스템, role 기타등등등) 것에 관한 권한을 기술한 딕셔너리도 존재한다.

IN <== 은 and 조건을 여러번 쓰기 귀찮을 때 사용한다. 괄호안에 있는 값들은 and 조건과 같다.

vi editor

vi 환경에서 코딩 작업 등을 할때 사전에 설정해 두면 편리한 기능 들을 정리 해 보았습니다.



1. ": set" 으로 변경



:set ai (autoindeant)

--> 윗라인과 같이 자동으로 들려쓰기를 해 줍니다.



:set ts=4 (tabstop)

--> [tab] 키를 입력 하였을때 이동하는 크기를 조정 합니다.

(보통 "ts=4" 일때가 가장 적당한 듯 합니다.)



:set et (expandtab)

--> [tab] 키를 입력 하였을때 tab에 대당하는 space 만큼 이동 됩니다.

(Python 언어 코딩 할때 매우 편리 합니다.)



:set si

--> 코딩 할때 if, for 같은 것을 입력 하고 다음 라인으로 이동시 들려쓰기를 해줍니다.



:set sw=4 (shiftwidth)

--> "set si" 했을 경우 들려쓰기 하는 깊이를 설정 합니다.



:set encoding=cp949 or utf-8

--> 작업 하는 컴퓨터 또는 개발 언어에서 기본 인코딩 타입을 설정 할 수 있습니다.



[참고]

* 알고 있겠지만 모든 명령의 취소는 no를 앞에 붙여 주시면 됩니다. 예) :set noai



* 항상 같은 설정이 되도록 하려면 UNIX는 홈디렉토리 아래에 .vimrc 에 넣어 주시구요

windows 는 vim 설치 디렉토리에 _vimrc 파일에 넣어 주시면 됩니다.

예) set ts=4

set si

set ai

set sw=4

set encoding=cp494





2. vi 편집 작업시



1) 화면 스크롤

^F : 한 화면 앞으로 스크롤

^B : 한 화면 뒤로 스크롤

^D : 반 화면 앞으로 스크롤

^U : 반 화면 뒤로 스크롤

^E : 한줄 앞으로 스크롤

^Y : 한줄 뒤로 스크롤

H : 화면의 맨 윗줄로

M : 화면의 중간 줄로

I : 화면의 맨 아랫줄로



2) 화면 나누기

: vs 수직으로 나눔

: sp 스평으로 나눔

* 화면간 이동은 ^ww



3) 마크 이동

m[a~z] --> 현재의 위치를 기록

'[a~z] --> 기록한 위치로 이동



4) 접기

V 로 블럭 설정을 한후에 'zf' 하면 접힘

'zo' 를 하면 다시 펴짐



5) 함수/변수명 자동 완성

호출 하고자 하는 변수명이나 함수명의 앞글자만 쓰고서 ^p 를 입력 하면 자동 완성 됨



6) 잠시 쉘로 나가기

^z, 들어 올때는 fg





기본 명령어는 기술 하지 않았으며, 잘 알려지지 않았고 알면 편리한 기능 위주로 정리 했습니다.

상세한 정보는 기존에 스크랩 해놓은 자료나 vim.org 에서 확인 하시기 바랍니다

수요일, 9월 06, 2006

DB BackUp Script 확인하는 방법

DP 실행하고
대분류에서 Backup => Oracle Server
해당 백업 선택하고 Options 클릭
Application specific options here => advanced

Rman Script가 나온다 그걸 긁어다 요청한 사람에게 주자

DB 성능 정보 Gathering Script 작성 및 Cron job 등록

PS1MES2 DB에 Pl/SQL Developer로 SYSTEM 접속하여 좌측에서 Procedure 항목을 펼친다.
수행되는 프로시져들이 주욱 나열되어 있다.
DB 성능 정보 Gathering Procedure를 등록할 생각이라면 기존의 프로시져에서 오른쪽 클릭
View를 선택해서 스크립트 참조한다.

스크립트 상에서 DB링크 이름과 프로시져 이름에 주의하면서 필요한 부분을 수정한다.
(대부분 SID 부분만 변경하면 된다)

작성할 프로시져는 총 5개 오브젝트,세션,테이블스페이스,프로그램,트랜잭션

작성이 모두 끝났다면 텔넷으로 PS1MES2 DB에 접속한다(SYSTEM User).

crontab -l 명령으로 현재 수행중인 cronjob의 경로를 확인한다.
기존의 shell file에 미리 등록된 작업들을 참조하여 새로 생성한 프로시져들을 등록한다.

화요일, 9월 05, 2006

일정기간 동안의 트랜잭션(transaction) 수를 구하는 sql

SELECT *
FROM RPTTEST.CHECK_TRANSACTION
WHERE HOSTNAME LIKE 'PS1MES2' AND
M_DATE LIKE '20060805%';



실행위치는 PS1MES2

PL/SQL Developer 의 좌측 메뉴에 보면 procedure 항목이 있다
거기에는 각 DB에 대한 트랜잭션,세션,오브젝트,테이블스페이스,프로그램에
관해서 보관되어 있다.(소유자는 rpttest)

각 DB에 대한 통계를 확인하고자 할때는 여기서 한다.

redirection

cat aaaa>>bbbb

GSMS 코드 변경

/etc/IT.cfg

월요일, 9월 04, 2006

NT 서버 Domain User 설정

중국 NT 서버들은 모두 cnc1lcd 도메인에 속해있다.
도메인 유저들은 여기에 공용으로 다 속하는 유저들이다
따라서 어느 서버든 상관없이 도메인 어드민 유저로 접속해서 관리하는 것이 가능하다
될 수 있는 한 영어 서버에서 작업하자
중국어 서버는 도무지 알아먹을 수 없다.


실행에서 dsa.smc 를 실행하자. 도메인 관리 메뉴다
거기보면 그룹들이랑 기타 유저들이 보이는데
관련있는 이름의 그룹을 펼쳐보면 해당유저가 보인다.

disable 하면 Lock 거는 거랑 마찬가지다
여러가지 옵션들이 많다 천천히 배우도록 하자