요즘 쉘스크립트를 한창 작성중이다. 쉘스크립트는 효율적인 운영을 위해서 운영 DBA에게 필수이다.
작성안한지 오래되서 기억이 가물가물해졌는데, 이번에 20본 정도되는 쉘스크립트를 작성하면서
까먹었던 것들을 다시 확인해보며 정리하고 있다.
여튼 오늘 정리할 것은.., 쉘과 sqlplus 에서의 변수 공유이다.
쉘에서 정해진 변수의 값을 sqlplus 실행시 매개변수로 넘기거나, 그 sql의 실행결과를 쉘에서 가져오고 싶을 때가 있다.
아래 예제는 테이블 이름이 현재시점에서 4개월 전의 년월 형식 (ex. 201706) 으로 되어있는 테이블을 찾는 쉘이다.
보통 yyyymm 형식의 레인지 파티션된 파티션 테이블이나 월별로 테이블이 자동생성되는 경우 해당 테이블을
찾고자 할때 이런식으로 찾을 경우가 많을 것이다.
DATE=$(date +%Y%m -d '4 month ago')
v_rlt=`sqlplus -s tdba/tdba123 @a.sql $DATE`
echo $v_rlt
------------- a.sql -------------------------------------
SET FEEDBACK OFF
SET PAGES 0
SET VERIFY OFF
select count(*) from dba_tables where table_name like '%&&1';
exit;
------------- a.sql -------------------------------------
쉘에서 변수를 선언하고 이것을 sqlplus 를 실행하면서 매개변수로 넘기고 있다.
그리고 결과값을 쉘의 변수에 담는다. 변수에 담긴 값을 쉘에서 다시 필요해 의해 사용될수 있다.
sql 문에서는 쉘에서 넘겨준 매개변수를 &&1 로 받아서 쓸수 있다. 인수가 두개라면, &&1, &&2 이렇게 쓸수 있다.
간단하지만 많은 내용이 들어가 있다.
필요하신분들은 참고하시길..
'생계 > OS' 카테고리의 다른 글
IOPS와 throughput 에 대해 알아보자 (0) | 2024.12.13 |
---|---|
RDS swap 사용 (0) | 2024.07.06 |
리눅스 자주 쓰는 명령 모음 (0) | 2023.05.23 |
[virtualbox] 오라클리눅스 설치 oracle-linux 8.4 (0) | 2023.01.08 |