728x90
Last night, I have got request from my customer. He wanted to know how many XML nodes are there in XML log table placed in Oracle. I tried to find sufficient oracle function but couldn`t. So I make slightly dirty SQL query but it was very helpful to reduce manual job. Let`s see SQL query first.

SELECT xml_seq, 
       to_char((length(xml_recv)-length(replace(xml_recv,'<ITEM>',''))) / length('<ITEM>')) as item_count
  FROM tbl_xml_log
Look above SQL carefully. It looks dirty calculation about length of column but very simple. You can change <ITEM> to string that you want to count on specific column. It would be helpful for guys who want to count repeated character in specific column.

- NoPD -
728x90
728x90
DTFe
본 메일은 전자신문 정보사업국에서 발송하는 IT 전시/컨벤션 행사에 관한 정보 메일입니다.
본 메일의 수신을 취소하시려면 <여기>를 클릭해주세요.

서울시 영등포구 영등포동 2가 94-152 전자신문사
대표자 : 금기현 사업자번호 : 107-81-49507
전화 : 02-2168-9332~7 전자우편 : sekmaster@etnews.co.kr

Copyrightⓒ The Electronic Times. All Right Reserved

728x90
728x90
IDC 나 서버를 운영하는 사람의 입장에서 가상화를 도입하는 이유는 더 다양해질 수 있을 것 같다. 전력 수급의 문제라던가 공간의 문제와 같은 현실의 물리적인 문제들이 있을수도 있고, 서로 다른 하드웨어를 사용하는 것을 줄이는 관리의 목적도 있을 것 같다.

서버 리소스의 효율적인 사용

일반적으로 터미널 서비스를 사용하게 되면 개별 사용자들은 서버 OS 상에 별개의 Full 세션을 만들어 사용하게 된다. RemoteApp 을 사용하여 어플리케이션을 호스팅하게 되면 Full 세션을 만드는 것 만큼의 서버 자원을 사용하지 않고 효과적으로 여러 개별 사용자에게 서비스를 제공할 수 있는 잇점이 있다.

호환성 문제가 있는 어플리케이션의 동시 사용

마이크로소프트의 Office 제품군의 경우 단일한 버전만 인스톨하여 사용할 수 있는 한계가 있다. 그러나 때에 따라서 사용자들은 여러개의 버전 (XP, 2003, 2007 ...) 을 동시에 사용해야 하는 경우가 생길 수 있는데, 터미널 서비스 RemoteApp 은 이러한 상황에 대한 좋은 해법이 될 수 있다. 예를 들어, RemoteApp 서버팜을 구성하고 있는 서버 1, 2 번은 Office 2003 을 서비스 하고 3, 4번은 Office 2007 을 서비스 한다고 가정하자. 사용자에게 두가지 버전의 Office 를 Publishing 해주면 사용자는 자신의 PC 에서 Office 2003 과 Office 2007 을 동시에 사용할 수 있게된다.

터미널 서비스 RemoteApp 은 고민하기에 따라서 다양한 형태로 구성이 가능하다. Presentation 가상화를 함으로써 얻는 잇점이 그렇지 않은 경우에 비해 많은 것 같다고 생각되는 사무 환경이라면, 지금 윈도우 서버 2008를 이용하여 가상화에 도전해 보도록 하자.

2009/04/13 - [Virtualization/Presentation] - Presentation 가상화를 해야하는 이유는 무엇일까? #1
2009/04/20 - [Virtualization/Presentation] - Presentation 가상화를 해야하는 이유는 무엇일까? #2

- NoPD -
728x90
728x90
윈도우 서버 2008 에서 소개된 RemoteApp 은 Citrix 의 Presentation Server와 같은 별도의 3rd Party 솔루션 없이 기본적인 시스템 구성과 터미널 서비스 라이센스 만으로 Presentation 가상화를 가능하게 해주고 있습니다. Citrix 와 같은 전문 솔루션이 제공해 주는 강력하고 다양한 기능은 아니지만, 맛배기로는 훌륭한 수준이 아닐까 싶습니다.

로컬, 리모트의 구분이 없는 Seamless 서비스

가상화의 중요한 포인트 중 하나는, 사용자가 작업중인 환경이 로컬인지 리모트인지 알 수 없게 하는 것입니다. 가상화 환경에서 제공하는 리소스를 사용하고 있다 하더라도 마치 로컬의 소프트웨어, 서비스를 이용하는 것과 같은 사용자 경험(User Experience)가 제공될 때, 가상화는 궁극의 목표에 도달하는 것이니까요.

윈도우 서버 2008이 도입되면서 소개된 RemoteApp 은 기존에 전문 솔루션을 사용할 때 가능했던 Seamless Window 기능을 제공하고 있습니다. 사용자는 터미널 서비스 클라이언트등으로 리모트의 어플리케이션에 접근하는 것이 아니라 바탕화면의 바로가기나 시작 메뉴에 등록된 프로그램 아이콘을 통해서 어플리케이션을 실행할 수 있습니다.

원격에서 실행되는 소프트웨어는 전체 화면이 아닌 실행 화면의 창만 별도로 클라이언트로 전송되어 클라이언트의 테마에 맞추어 표현됩니다. 윈도우 서버 2008 에 데스크탑 테마 기능을 활성화 해두면 클라이언트 OS 가 Vista 이상인 경우 에어로(Aero) 까지 무리없이 표현됩니다. 진정한 Seamelss 서비스를 이제 OS 가 기본적으로 제공하는 시대가 온 것입니다.

쉬운 지점 IT 자원 관리

이전 포스팅에서 이야기했던 중앙 집중화된 관리와 비슷한 의미입니다. 본사는 전문 IT 지원 인력들이 일일이 PC 에 설치된 소프트웨어를 업데이트하고 손봐줄 수 있지만, 그런 인력이 없는 멀리 떨어진 지점은 본사에서 출장을 나가거나 별도의 외부 업체를 통해서 PC 에 설치된 소프트웨어의 장애를 해결하고 부적절하게 설치된 프로그램을 걸러내는 등의 이슈가 있었습니다.

RemoteApp 을 통해 어플리케이션을 중앙에서 배포하게 되면, 모든 문제는 서버단에서 (Server Side) 해결이 가능하기 때문에 상대적으로 적은 비용과 노력을 통해서 본사 뿐만 아니라 지점의 IT 자원 관리가 가능해 집니다. 관리의 IT 가 가능해질 수 있는 것입니다.

(계속)

2009/04/13 - [Virtualization/Presentation] - Presentation 가상화를 해야하는 이유는 무엇일까? #1

- NoPD -
728x90
728x90
Presentation 가상화는 다른 말로 표현하자면 UI 에 대한 가상화이다. 어플리케이션이 구동되는 물리적인 의미의 하드웨어는 사용자 PC 가 아닌 다른 곳 (데이터 센터, 서버 룸 등) 에 위치해 있고, 사용자는 구동되는 어플리케이션의 UI 영역만을 네트워크로 전송받아 사용하는 개념을 말한다.

이러한 기저에는 RDP 프로토콜이나 ICA 프로토콜과 같은 다양한 SBC(Server Based Computing) 솔루션이 위치해 있다는 것은 이미 너무나 많은 사람들이 알고있다. 기술을 떠나, 초심으로 돌아가서, 과연 왜 이런 Presentation 가상화를 해야하고 이러한 가상화를 도입했을 때 기업 혹은 개인이 얻을 수 있는 장점은 무엇인지 한번 Refresh 해 볼 필요가 있을 것 같다.

터미널서비스 RemoteApp 의 장점

윈도우 서버 2008 이 출시되면서 많은 변화들이 있었지만, 그 중 가상화에 대한 변화들은 다른 분야의 변화에 비해 월등히 변화가 많았던 부분이 아닐까 싶다. RemoteApp 도입 이전에 Presentation 가상화를 사용해 본다는 것은 별도의 솔루션 (Citrix 등) 을 사용해야 하고 투자비용이 든다는 단점이 있었다.

적은 사용자가 in-House 용도로 Presentation 가상화를 도입하는데 이러한 부분은 크게 걸림돌이 되었던 것이 사실이다. RemoteApp 가 Citrix 등의 전문 SBC 솔루션 만큼의 고가용성이나 고성능을 제공해 주지는 못하지만, in-House 용도로 한정 한다면 이유있는 선택이 될 수 있다.

중앙 집중화된 소프트웨어 관리

기업의 IT 조직들이 하는 일의 많은 부분이 개인 사용자 PC 에 설치된 어플리케이션의 문제를 진단해주고 해결해주는 것이라고 한다. 천차만별로 구성된 OS 환경에서 발생하는 문제를 찾는 것은 시간이 많이 소요되는 작업이고 이는 비용과 직결되는 이슈가 된다. RemoteApp 을 사용하면서 IT 조직은 관리되는(Managed) 환경하에 놓인 시스템에서 소프트웨어를 서비스 함으로써 많은 사용자 환경 차원의 문제를 해결할 수 있다.

버전이 새롭게 업데이트 되었거나 패치가 적용되어야 하는 시점이 아니라면 서버에서 호스팅 되는 소프트웨어들은 언제나 최신의 상태를 유지하며 안정적인 설정과 이미지를 모든 사용자에게 제공할 수 있게 된다.

(계속)

- NoPD -
728x90
728x90
동일한 H/W 머신에 접속중인 다른 사용자의 세션에 접근해야 할 경우가 종종 생긴다. 사용자가 터미널 서비스 환경에서 작업을 하던 도중 문제에 부딪혔거나 일반 RDP 세션에서 콘솔 세션 (혹은 어드민 세션) 으로 이동해야 하는 경우가 대표적인 예이다. 이러한 경우 커맨드 라인에서 간단한 명령만으로 다른 세션에 연결할 수 있는 기능이 제공되고 있다.


먼저 연결할 세션을 찾기 위해 Query Session 명령으로 접속한 H/W 머신의 모든 세션 정보를 조회하도록 하자. 수신대기 포트 이외에 콘솔을 포함하여 3개의 세션이 있음을 알 수 있다. 제일 마지막에 출력된 rdp-tcp#21 세션으로 연결하려면 간단히 " tscon 2 " 라고 타이핑 하면 된다. 잠시후 해당 세션으로 연결이 완료되면 화면이 전환된다.

tscon 의 장점은 해당 세션의 상태를 그대로 가져온다는 데 있다. 사용중이던 프로세스와 화면 상태를 그대로 가져오기 때문에 문제점이 발생했을 때 아주 유효 적절하게 사용가능한 명령어라고 할 수 있다. 다시 자신의 세션으로 돌아가려면 기억해 둔 자신의 세션 번호로 tscon 명령을 실행하면 된다.

위의 예에서는 동일한 사용자 계정으로 접속한 상황을 가정했기 때문에 인증절차 없이 접근이 가능했다. 그렇다면 다른 사용자 계정으로 접근한 경우에는 어떻게 세션을 전환할 수 있을까?


다른 사용자의 계정으로 접속된 세션에 접근할 때는, 해당 사용자의 비밀번호를 알고 있어야 한다. 세션에서 사용자 계정은 이미 알고 있으므로 /password 파라메터를 이용하여 사용자 패스워드를 입력해 주면 된다. 간단하지만 다양한 상황에서 유용하게 사용될 수 있는 커맨드가 아닐까 싶다.

- NoPD -
728x90
728x90
오라클의 테이블에 DML 관련 작업을 하다보면 ORA-00054 에러를 종종 만나게 된다. (종종 만나지 말아야 하나, 어쩔 수 없이 만나는 듯) 인덱스 관련된 작업의 Lock 이나 기타 DML 작업에서 Lock 이 걸린 경우 이같은 증상을 많이 만날 수 있다.

STEP 1 : Lock 이 발생한 OBJECT 확인
SELECT object_id, object_type
    FROM dba_objects
  WHERE object_name='테이블 / 인덱스 이름';

STEP 2 : Lock 을 잡고 있는 세션 ID 확인
SELECT *
    FROM v$locked_object
  WHERE object_id='STEP1에서 검색한 object_id';

(오라클 사용자 이름과 세션 ID 를 기억해 둔다)

STEP 3 : Lock 을 잡고 있는 세션의 Serial 번호 확인
SELECT sid, serial#, command, taddr
    FROM v$session
  WHERE sid='STEP2의 세션 ID 번호';

STEP 4 : 세션 강제 종료
ALTER SYSTEM KILL SESSION '<세션 ID, Serial#>';

STEP 5 : 세션 종료 확인 및 Rollback 체크
SELECT used_ublk
    FROM v$transaction
  WHERE ADDR='<STEP3의 TADDR>';

참고 URL : http://kr.forums.oracle.com/forums/thread.jspa?messageID=1457903

- NoPD -
728x90
728x90
터미널 서비스 (리모트 데스크탑) 환경에서 유용하게 사용할 수 있는 커맨드라인 명령중에 MSG 라는 명령어가 있다. 명령어의 이름에서 이미 짐작했겠지만, 서버에 접속해 있는 사용자들에게 메세지를 전송하는 커맨드이다. 이 명령어는 몇가지 옵션을 가지고 있는데 유용하게 쓰일만한 것들을 하나씩 살펴보도록 하자. 먼저 터미널 서비스가 운영중인 서버에 접속해서 커맨드 라인을 열자.


가장 간단한 형태의 MSG 명령어 사용의 예이다. 메세지를 수신할 사용자 계정의 이름을 입력하고 전송할 메세지를 입력하면 된다. Active Directory 환경이라면 그에 맞는 사용자 계정의 이름을 입력해 주면 된다. 이렇게 전송된 메시지는 Always On Top 속성이 지정된 것처럼, 서버에 접속한 사용자 화면의 최상위에 위치하게 된다.


서버에 중요한 PM 작업이 있어서 서버에 접속한 전체 사용자에게 메세지를 전송하고 싶을 때는 두가지 방법을 택할 수 있다. 첫번째는 사용자 계정 대신 별표(*)를 입력하여 전체 사용자에게 메세지를 전송하는 방법이고, 두번째는 텍스트 파일에 메세지를 수신할 사용자 계정을 나열한 뒤 메세지를 전송하는 방법이다. 이 중, 별표(*)를 사용하는 예를 살펴보도록 하자.


첫번째 예를 보면, /v 옵션을 같이 준 경우인데, 이 옵션을 주면 상세한 메세지 전송 내역을 텍스트로 확인할 수 있다. NoPD는 테스트를 위해 콘솔 세션으로 접속을 했는데, Tcp#18 번 RDP 세션으로 콘솔에 접속했다는 것으로 해석하면 된다. 메세지를 보냈고 메세지를 표시하는 기본 시간인 60초로 잡혀 있다는 것을 알 수 있다.

두번째 예를 보면, /w 옵션까지 같이 주었는데, 이 옵션을 주면 사용자의 응답을 기다렸다가 응답이 돌아왔다는 것을 확인할 수 있다. 여러 사용자에게 메세지를 보내고 이를 사용자가 읽고 창을 닫았는지 (물론 자의적인 해석이겠지만 ^^) 확인이 가능하다.

간단한 커맨드이지만, 사용자가 많은 터미널 서버를 운영중이라면 간단하게 공지사항을 전송할 수 있는 유용한 기능이 아닐까 싶다.

- NoPD -
728x90

+ Recent posts