시스템/Shell-Script

ORACLE 사용자 리스트 확인 스크립트

달빛궁전- 2021. 7. 10. 21:55

- 내용 :

ORACLE 사용자 (DBA_USER 테이블내 있는) 리스트 확인

 

- shell-script내용

#!/bin/bash
TEST=/oracle/work
#변수선언

echo "-----------------------------------------------------------"
echo "select Oracle User"
echo "-----------------------------------------------------------"
DATE=`date +"%Y/%m/%d %X"`
splplus -s /nolog << EOF
-- EOF는 파일입력이 더 이상 없다는 뜻
-- s옵션은 -SSQL*Plus 배너의 표시, 프롬프트 및 명령 표시를 숨기는 자동 모드를 설정 

spool $TEST/ora_user_check.log
set pagesize 100
whenever sqlerror exit 1
-- sql문장 수행시 에러 발생하면 exit하고 셀에 1을 반환시켜준다.
conn / as sysdba
-- DB연결
select username from dba_users where account_status='OPEN';
-- DBA_USER테이블에서 account_status가 OPEN된 USERNAME만 출력
spool off
exit
EOF
# 여기까지 SQL로그인해서 리스트 출력

# 다시 쉘스크립트로 돌아옴
OU=(`cat $test/ora_user_check.log | sed -n '5,$p' | egrep -v "USERNAME|rows selected. |spool off|------------" | sed '/^$/d'`)
# sed -n, $p 5라인부터 파일끝까지 출력시킨다. $는 끝을표현하며, p는 출력
# sed '/^$/d' ^시작, $끝까지 d삭제 즉 /^$/행의 처음과 끝이 만나는 빈 줄을 의미하는 것 그것을 삭제한다는 것
OU_C=(`cat $test/ora_user_check.log | sed -n '5,$p' | egrep -v "USERNAME|rows selected. |spool off|------------" | sed '/^$/d' | wc -l`)
#위와 동일하지만, wc -l로 숫자를 계산
for ((j=0; j<$OU_C;J++))
do 
echo "$J" "[ ${OU[j]} ]"
done

 

- 실행시 결과

 

- 실행 했을때 결과 값

'시스템 > Shell-Script' 카테고리의 다른 글

여러 서버에 스크립트 실행  (0) 2022.11.20
시스템 정보 수집 스크립트  (0) 2021.07.09
사용자 계정 조회  (0) 2021.06.21