반응형

다음 예에서는 EXECUTE가 변수가 포함된 동적으로 작성된 문자열을 처리하는 방법을 보여 줍니다. 이 예에서는 AdventureWorks2008R2 데이터베이스에 있는 모든 사용자 정의 테이블의 목록을 유지하는 tables_cursor 커서를 만든 다음 해당 목록을 사용하여 테이블의 모든 인덱스를 다시 작성합니다.

 
USE AdventureWorks2008R2;
GO
DECLARE tables_cursor CURSOR
   FOR
   SELECT s.name, t.name 
   FROM sys.objects AS t
   JOIN sys.schemas AS s ON s.schema_id = t.schema_id
   WHERE t.type = 'U';
OPEN tables_cursor;
DECLARE @schemaname sysname;
DECLARE @tablename sysname;
FETCH NEXT FROM tables_cursor INTO @schemaname, @tablename;
WHILE (@@FETCH_STATUS <> -1)
BEGIN;
   EXECUTE ('ALTER INDEX ALL ON ' + @schemaname + '.' + @tablename + ' REBUILD;');
   FETCH NEXT FROM tables_cursor INTO @schemaname, @tablename;
END;
PRINT 'The indexes on all tables have been rebuilt.';
CLOSE tables_cursor;
DEALLOCATE tables_cursor;
GO
반응형
반응형

유지보수 업체가 없어진 솔루션에서 Oralce DB의 특정 Table의 record를 삭제 하려고 하였으나,

참조무결성 제약조건 때문에 삭제가 안 되었다.

구글링 하여 방법을 찾아서 정리 한다.

1. 에러 메시지에 나타난 제약조건 이름을 확인 한다.


2. 해당 제약조건 이름을 이용해서 다음 쿼리를 실행 한다.
   쿼리 결과에서 TABLE_NAME 을 확인 할 수 있다.


3. 찾은 테이블에서 참조 하고 있는 record를 삭제 한 다음, 원래 테이블에서 삭제 하면 된다.

반응형
반응형
SELECT 로 데이터를 가져 오면서 전체 또는 원하는 그룹단위로 일련번호를 부여 해야 할 때

ROW_NUMBER() 를 사용하면 쉽게 할 수 있다.

Table를 마이그레이션 할 때, 레거시 에서는 PK를 복잡하게 부여하였는데 새로운 시스템 에서는

일련번호로 단순화 한다거나 할 때 사용하면 유용 하다.

예를 들어 emp_code, request_ym 로 GROUP 하고 relation 으로 정렬하여 일련번호를 부여하고자 한다면

다음과 같이 할 수 있다.

ROW_NUMBER() OVER (PARTITION BY emp_code, request_ym ORDER BY relation) as seq_no 

만일 역순으로 일련번호를 부여 하고자 하면 ORDER BY relation DESC 처럼 하면 된다.

* ORDER BY 에 의해 동순 인 경우에도 ROW_NUMBER()는 1, 2, 3, ... 과 같이 하는데 만약 동순 일때 동일한 순위번호를

  부여하고자 하면 ROW_NUMBER() 대신에 DENSE_RANK()를 사용하면 된다.

  또한 DENSE_RANK()는 동순에 대하여 동일한 순위번호를 매기고 나서 그 다음 일련번호를 부여(즉, 1, 2, 2, 2, 3, 4, ... 

  와  같이) 하게 되는데,  RANK() 함수를 사용하면 동일한 순위번호 갯수만큼 건너 띄고 다음 일련번호를 부여 하게

  된다 (즉, 1, 2, 2, 2, 5, 6 ... 와 같이).




반응형
반응형


(1) 데이터베이스 복구 모델
  - 데이터베이스 속성 창의 옵션 페이지에서 확인 및 변경 가능

  1. 전체복구모델 : 문제가 발생한 시점까지 복구 가능

  2. 단순모델: 최근 백업받은 데이터까지만 복구 가능

  3. 대량로그복구모델

(2) 데이터베이스 백업 종류

  1. 전체 백업 : 차등 및 로그 백업을 하기전에 전체 백업이 선행 되야 함.

        BACKUP DATABASE 데이터베이스이름 TO [disk = "백업할 파일명" 또는 장치명]

  2. 차등 백업: 마지막 전체 백업 후 변경된 모든 데이터 백업

        BACKUP DATABASE 데이터베이스이름 TO [disk = "백업할 파일명" 또는 장치명] WITH DIFFERENTIAL

  3. 트랜잭션 로그 백업 : 로그 파일(ldf)에 대한 백업. 마지막 로그 백업을 받은 이후(또는 최초의 전체 백업 이후)의 
      변경된 내용만 백업 됨. 로그 백업이 이루어지고 나면 로그 파일은 비워 짐. 만약 로그를 강제로 비우려면
      데이터베이스 복구 모델을 '단순'으로 변경한 후, 다시 원래 모델인 '전체' 또는 '대량로그'로 돌린다.

        BACKUP LOG 데이터베이스이름 TO [disk = "백업할 파일명" 또는 장치명]

  4. 비상 로그 백업 : 데이터베이스 장애등 이상 발생시에 로그 백업. 비상 로그 백업을 받으면 해당 데이터베이스의
      상태는 '복원 중'으로 바뀜.

        BACKUP LOG 데이터베이스이름 TO [disk = "백업할 파일명" 또는 장치명] WITH NO TRUNCATE

 

반응형

+ Recent posts