Linked DB  조회
Select * FROM SYSSERVERS

Linked DB 생성
/****** 개체:  LinkedServer [GRAY_TEST]    스크립트 날짜: 11/02/2009 21:36:16 ******//*
EXEC master.dbo.sp_addlinkedserver @server = N'GRAY_TEST', @srvproduct=N'.', @provider=N'OraOLEDB.Oracle', @datasrc=N'gray_test'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'GRAY_TEST', @optname=N'use remote collation', @optvalue=N'true'
go
EXEC sp_addlinkedsrvlogin 'GRAY_TEST','false',null,'test_account','test_password'
go


행복한 고수되셔요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\



Posted by woojja
저번 야간에 작업을 하다 오라클 테이블 Lock 이 걸리는 사태가 발생했습니다.
Lock 이 걸려서 아무런 작업을 할 수가 없었죠...
DB Tool 로 Lock 을 풀어도 봤지만 단순한 방법으로는 Lock을 푼다고 해도 짧은 시간안에 바로 풀리지 않습니다. 저번 삼성 프로젝트할 때도 그런 경험이 있었지요.
Lock 해제하기위해 Admin 에게 요청을 해제 요청을 하면 다음날이 되서야 답변이오고(그때는 이미 Admin 이 작업하지 않아도 풀리고 나서죠.) 그래서 차라리 기다리는게 방법이다 하여 작업하다 퇴근한 적도 있습니다.
저번 작업은 조금 바쁜 작업이라 저희 회사 터프가이에게 헬프를 날렸죠...

친구들과 유흥을 즐기다 제 전화에 바로 겜방으로 달려가주시는 쎈쓰... 이런 쎈쓰쟁이...^^

3~40분을 전화통화를 하며 게임방에 VPN 프로그램을 깔고 접속하여 Lock리스트를 보는 찰라...
처음 조회때에는 보였는데 두번째 조회때에 사라졌습니다.

한마디로 Lock 이 자연적으루다가 시간이 지나서 풀려버린거죠...

대략이 난감이었습니다. ㅡㅡ'


그때 요럴땐 요로케 하셔요~ 하며 알려준 팁입니다. - 정말 쎈쓰쟁이... ^^

하지만 보시는 분들께 당부하고 싶은 한마디...
잘 사용하십시요...
아래 쿼리에 대한 결과에 대해 저나 우리의 쎈쓰쟁이는 책임지지 않습니다.
한마디로 위험하다는 말씀...

========================================================================

Lock 해제 관련 query 보내드립니다.

 

1) 쿼리를 실행한 프로그램을 알고 있다면 프로그램 명으로 해당 세션의 adress 알아냅니다.

select paddr from v$session where program like '%program name' ex) '%DOAD%'

 

2) 찾아낸 세션의 Adress 정보를 바탕으로 프로세스 ID(SID) 찾습니다.

select * from v$process where addr='C00000018880FD58';

 

위에서 찾아낸 SID 프로세스에서 Kill합니다, , 해당 프로세의가 리모트 프로세스이어야만 합니다. (local = no)

 

3) ps -ef | grep 2)sid

 

 

kill -9 2)SID

 

주의)

2)에서 반드시 local = No 프로세스 이어야 합니다.

DB shutdown되는 경우가 생길 있습니다.

============================================================

행복한 고수되십시요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\



Posted by woojja

Data connection pooling은 기본값이 True 입니다.

 

기본적으로 사용을 하고 있구요.

사용하지 않으려면 connection string pooling=false 를 추가하시면 되겠습니다.

 

거기에 아래와 같은 옵션을 추가로 설정을 할 수가 있습니다.

  


OracleConnection con = new OracleConnection();
con.ConnectionString = "User Id=scott;Password=tiger;Data Source=oracle;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5; Decr Pool Size=2";
con.Open();

옵션에 대한 자세한 사항이나 Pooling에 대한 사항은 오라클 클라이언트를 설치하시면

기본적으로 제공하는 .NET Reference 문서에 자세히 설명되어 있습니다.

Acrobat 에서 Pool 이라는 단어로 검색하시면 바로 찾아 보실 수 있습니다.

문서의 위치는 아래 그림과 같습니다.

 

 

 

행복한 고수되십시요...

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\




Posted by woojja


Oracle .NET Developer Center

ODT 11 Beta White Paper

ODT는 Visual Studio 의 애드-인 제품입니다. 

2005년 6월 처음 공개되었고 

ODT는 OTN(Oracle Technology Network)에서 무료로 다운받을 수 있습니다 .


아래는 ODT 의 주요 기능들입니다.

- Oracle Explorer 
- 디자이너 및 마법사 제공
- Oracle data window 
- Oracle PL/SQL editor 
- 통합 PL/SQL 디버거
- 자동 코드 생성
- SQL Query Window 
- 통합 온라인 도움말

위 링크에 들어가셔서 함 Check 하시죠...

Oracle .NET Developer Center 에 들어가니 기타 다른 예제도 많으니 쭈~~욱 한번 둘러보셔요...

그럼...




행복한 고수되세요.




woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




Posted by woojja
오늘 Coupon 을 생성해야 했습니다. 쿠폰에 쿠폰 넘버를 먹여야 하는데... 훔... 오라클에서 이렇게 구현했습니다. 시리얼은 길면 길수록 중복을 차단하는데 도움이 될 것입니다. 이유는 저보다도 잘 아시겠죠?
CREATE OR REPLACE FUNCTION FN_CREATE_STRING
( 
 FI_LENGTH IN NUMBER
)RETURN VARCHAR2 
AS

   TMPGUID VARCHAR2(50) := '';
   RNDVALUE NUMBER := 0;
   V_COUNTER NUMBER := 0;
   V_STRING VARCHAR2(36) := '';
   
BEGIN  

  V_STRING := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  
  FOR V_COUNTER IN 1..FI_LENGTH LOOP
  	  SELECT ROUND(DBMS_RANDOM.VALUE * 36, 0) INTO RNDVALUE FROM DUAL;
  	  TMPGUID := TMPGUID || SUBSTR(V_STRING, RNDVALUE  , 1);
  END LOOP; 
  
  RETURN TMPGUID;

END FN_CREATE_STRING;

그리곤 요로케 쓰시면 됩니다.  ^^
SELECT FN_CREATE_STRING(13) FROM DUAL;


Oracle 버전은 8.1.7 입니다.


행복한 하루되십시요.

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




Posted by woojja
일정 기간내의 날짜 구하는 쿼리 입니다.

database.sarang.net 에서 발췌했습니다.


SELECT TO_CHAR(dt,'yyyymmdd') "일자"
     , TO_CHAR(dt,'day') "요일"
     , DENSE_RANK() OVER(ORDER BY TRUNC(dt,'d'))||'주차' "주차"
  FROM (SELECT TO_DATE(sdt,'yyyymmdd') + LEVEL - 1 dt
          FROM (SELECT '20081221' sdt, '20090107' edt FROM dual)
               CONNECT BY LEVEL <= TO_DATE(edt,'yyyymmdd')
                                 - TO_DATE(sdt,'yyyymmdd') + 1
        )

모두 행복한 고수되시길...


woojja ))*
\\\\\\\\\\\\\\\\\\



Posted by woojja

좀더 공부를 해 봐야 하겠지만...

Oracle 에만 있던 기능을 찾던 중 2005에서 제공하기 시작한 CTE 기능을 알게 되었습니다.

= 아래 쿼리는 www.datasarang.net 사이트에서 발췌했습니다.
WITH MYCAL AS
(
 SELECT
  CAST('1900-01-01' AS DATETIME) DT
  , IDX = 1
 UNION ALL
 SELECT
  DT + 1
  , IDX + 1
 FROM MYCAL
 WHERE
  DT + 1 <= '2050-12-31'
)
SELECT
   IDX
 , [DT]
 , [DT_1]  = DATEADD(DD, -1, DT)
 , [YMD]   = CONVERT(CHAR(8), DT, 112)
 , [YY]   = DATEPART(YEAR, DT)
 , [MM]   = DATEPART(MONTH, DT)
 , [DD]   = DATEPART(DAY, DT)
 , [WKDAY_SEQ] = DATEPART(DW, DT) 
 , [QTR]   = DATEPART(QQ, DT)
 , [ANIMAL]  = CASE DATEPART(YEAR, DT) % 12 - 3
      WHEN 1 THEN '자' WHEN 2 THEN '축' WHEN 3 THEN '인'
      WHEN 4 THEN '묘' WHEN 5 THEN '진' WHEN 6 THEN '사'
      WHEN 7 THEN '오' WHEN 8 THEN '미' WHEN 9 THEN '신'
      WHEN 10 THEN '유' WHEN 11 THEN '술' WHEN 12 THEN '해' END
FROM MYCAL
OPTION (MAXRECURSION 0)

이 쿼리를 MS SQL 2005 에서 돌려보시기 바랍니다.

저는 위 기능을 이렇게 사용했습니다.

WITH MYCAL AS
(
 SELECT
  CAST('37001' AS int) DT
  , IDX = 1
 UNION ALL
 SELECT
  DT + 1
  , IDX + 1
 FROM MYCAL
 WHERE
  DT + 1 <= '87100'
)
insert into insertTest
SELECT
   IDX
, DT, cast(IDX as varchar) + '_' + cast(DT as varchar) IDVALUE
FROM MYCAL
OPTION (MAXRECURSION 0)

아핫... ㅋㅋ

5만백건... 단 2초에 들어갑니다.

좋아좋아...

행복한 하루입니다.

행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Datasarang 덕분에 여러번 인서트해야만 했던, 그래서 수만 시간 걸려야 했던 작업을 순식간에 처리할 수 있을 것 같습니다.




Posted by woojja
이전버튼 1 2 이전버튼