728x90

MS-SQL MDF/LDF 파일 크기 줄이기

초기 설정값의 실수, 혹은 어쩌다가 데이터가 대박 큰게 들어왔다가 사라졌을 때, DB의 디스크 용량을 줄이고 싶을 때가 있다. 이럴때 사용하는 것.


    -- DB 정보보기

    SP_HELPDB db_name 


    -- DB 로그 비우기

    BACKUP LOG db_name WITH TRUNCATE_ONLY

 

   -- DB 의 LDF 파일의 크기를 5MB로 줄인다.

   DBCC SHRINKFILE (logfile_name, 5)


   -- MDF 파일 크기 줄이기

   DBCC SHRINKDATABASE(db_name)



출처 : http://coolsoo7221.blogspot.kr/

728x90
728x90

MSSQL SCRIPT로 COMMENT 달기

 

/* 테이블 주석 */
exec sp_addextendedproperty 'MS_DESCRIPTION','[테이블주석]','user', 'dbo', 'table', '[테이블명]'
go

/* 컬럼 주석 */
exec sp_addextendedproperty 'MS_DESCRIPTION','[컬럼주석]','user', 'dbo','table', '[테이블명]', 'column', '[컬럼명]'

go

 

728x90
728x90

-- 테이블별 사용 용량

SELECT table_name = convert(varchar(30), min(o.name))

 , table_size = ltrim(str(sum(cast(reserved as bigint)) * 8192 / 1024.,15,0) + 'KB')

FROM sysindexes i

  INNER JOIN 

  sysobjects o 

  ON (o.id = i.id)

WHERE i.indid IN (0, 1, 255) 

AND  o.xtype = 'U'

GROUP BY i.id


-- 용량별 소팅

SELECT table_name = convert(varchar(30), min(o.name))

 , table_size = convert(int, ltrim(str(sum(cast(reserved as bigint)) * 8192 / 1024., 15, 0))), UNIT = 'KB' 

FROM sysindexes i 

  INNER JOIN 

  sysobjects o

  ON (o.id = i.id) 

WHERE i.indid IN (0, 1, 255)

AND  o.xtype = 'U' 

GROUP BY i.id

ORDER BY table_size DESC


-- 테이블별 Row 수

SELECT o.name

 , i.rows 

FROM sysindexes i

  INNER JOIN 

  sysobjects o 

  ON i.id = o.id

WHERE i.indid < 2 

AND  o.xtype = 'U'

ORDER BY i.id


출처 : http://unions5.tistory.com/92

728x90
728x90

오라클 SQL 문

     SELECT MENU_CD_V     menucdv
     ,UP_MENU_CD_V  upmenucdv
     ,MENU_NM_V     menunmv
     ,DEPTH_N       depthn
     ,SHOW_ORDER_N  showordern
     ,USE_YN_C      useync
    FROM T_OM_USER_MENU
         START WITH UP_MENU_CD_V = '07000000'
           AND SITE_CD_V = 'S0000100'
       CONNECT BY PRIOR MENU_CD_V = UP_MENU_CD_V AND SITE_CD_V = 'S0000100'
         ORDER SIBLINGS BY SHOW_ORDER_N;

=========================================================================>

위의 오라클 sql 문을 ms-sql 문으로 변환

MS-SQL  문

WITH CTE_USER_MENU_TABLE
AS
(
   SELECT MENU_CD_V, UP_MENU_CD_V, MENU_NM_V, DEPTH_N, USE_YN_C , CONVERT(VARCHAR(255), RIGHT('000' + RTRIM(SHOW_ORDER_N),3) ) AS SHOW_ORDER_N
   FROM T_OM_USER_MENU
   WHERE UP_MENU_CD_V = '07000000' AND SITE_CD_V = 'S0000100'
   UNION ALL
   SELECT A.MENU_CD_V, A.UP_MENU_CD_V, A.MENU_NM_V, A.DEPTH_N, A.USE_YN_C , CONVERT(VARCHAR(255), CONVERT(VARCHAR,B.SHOW_ORDER_N) + '|' + RIGHT('000' + RTRIM(A.SHOW_ORDER_N),3) ) AS SHOW_ORDER_N
   FROM T_OM_USER_MENU A INNER JOIN CTE_USER_MENU_TABLE B ON A.UP_MENU_CD_V = B.MENU_CD_V
   WHERE A.SITE_CD_V = 'S0000100'
)
SELECT
    MENU_CD_V     menucdv
    ,UP_MENU_CD_V  upmenucdv
    ,MENU_NM_V     menunmv
    ,DEPTH_N       depthn
    ,SHOW_ORDER_N  showordern
    ,USE_YN_C      useync
   FROM CTE_USER_MENU_TABLE ORDER BY SHOW_ORDER_N;

 

728x90

'프로그래밍 > MS_SQL' 카테고리의 다른 글

MSSQL COMMENTS 생성  (0) 2015.04.13
mssql 테이블 용량 및 row 갯수  (0) 2015.03.24
Session 관리 ( Inproc,StateServer,SQL Server )  (0) 2013.06.14
mssql 2008 로그 축소  (0) 2013.04.29
mssql 2008 이후 로그 축소  (0) 2012.11.27
728x90

SQLPLUS 출력 컬럼 수 조정하기

 

--조회컬럼의 크기 변경하기
--column 컬럼명 format
--문자열인경우:  a글자수
--숫자인경우 9나 0으로 자릿수표현 : 9999 데이터가 없으면 표현하지 않는다. / 00000 데이터가 없어도 표현
--일시적으로 사용된다. 컬럼명이 같다면 테이블이 달라도 설정한 자릿수로 출력된다.
--column은 줄여서 col만 써도 된다.
--column은 sqlplus에서만 사용할수 있는 sqlplus문장이다.

column name format a6;
col num format 00;
col address format a13;
--포멧으로 설정한 글자가 컬럼의 있는 글자보다 작다면 해당 레코드는 두줄로 표현된다.

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 백업  (0) 2015.04.24
오라클 테이블 정보 보기  (0) 2015.04.23
프로시저 혹은 함수 목록 출력시  (0) 2014.06.25
오라클 날짜 함수  (0) 2014.01.13
SQL LOADER 사용 기초  (0) 2013.10.01
728x90

1. 전통적인 방법


SELECT *

  FROM (SELECT ROWNUM rnum

              ,a.*

          FROM (SELECT *

                  FROM members) a)

 WHERE rnum BETWEEN startrow# AND endrow#;




2. Oracle 10g 이후부터 사용가능한 방법


SELECT * FROM 

(

SELECT a.*,

    CEIL((ROW_NUMBER() OVER ( ORDER BY #order by#  desc|ASC )) / #page_row# ) as PAGENUM,

        CEIL(COUNT(*) OVER() / #page_row)  as TOTALPAGE

        FROM table명

        WHERE 1=1

and ...

 

)

where PAGENUM = 1

 

728x90
728x90

프로시저나 펑션을 만들다 보면 여러 소스코드 파일을 검색하듯이 여러 프로시저나 펑션의 내용을 검색하고자 할 경우가 있습니다.

 

결론부터 말하자면 USER_SOURCE 를 이용하면 됩니다.

 

SELECT NAME 
FROM   USER_SOURCE
WHERE  TYPE = 'PROCEDURE'

GORUP BY NAME  

ORDER BY NAME ASC;

 

 

(TYPE = 'FUNCTION" 으로 하면 펑션에서 검색하게 됩니다.)

 

아래는 USER_SOURCE뷰의 스크립트입니다. (Oracle8i 기준입니다.)

 

CREATE OR REPLACE VIEW USER_SOURCE

(NAME, TYPE, LINE, TEXT)
AS
select o.name,
decode(o.type#, 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
               11, 'PACKAGE BODY', 13, 'TYPE', 14, 'TYPE BODY',
               'UNDEFINED'),
s.line, s.source
from sys.obj$ o, sys.source$ s
where o.obj# = s.obj#
  and o.type# in (7, 8, 9, 11, 13, 14)
  and o.owner# = userenv('SCHEMAID')
union
select o.name, 'JAVA SOURCE', s.joxftlno, s.joxftsrc
from sys.obj$ o, x$joxfs s
where o.obj# = s.joxftobn
  and o.type# = 28
  and o.owner# = userenv('SCHEMAID')
/

 

 

728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

오라클 테이블 정보 보기  (0) 2015.04.23
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
오라클 날짜 함수  (0) 2014.01.13
SQL LOADER 사용 기초  (0) 2013.10.01
ORA-01476 : 제수가 0 입니다.  (0) 2012.05.14
728x90

 Path Manipulation  

취약점) 예상가능한 경로 노출로 인해 시스템 의 중요파일에 접근해 공격가능  

대응방안) 인가된 경로 외에 파일에 접근하지 못하도록 소스 변경해야함

 SQL Injection

취약점) DB를 공격해서 정보 조작및 유출 가능  

대응방안) 사용자 입력값이 쿼리문에 직접 조합되지 않도록 preparedStatement사용할것

 XSS

취약점) 페이지 우회, 바이러스 설치 등 스크립트 공격가능

대응방안) 사용자 입력값에 대해 유효문자가 아닌 문자등을 필터링 해주어야 함 

 HTTP Response Splitting

취약점) 페이지 우회, 바이러스 설치 등 스크립트 공격가능. 헤더 세팅시 본문 침해할 가능성 있음

대응방안) 사용자 입력값에 대해 유효문자가 아닌 문자등을 필터링 해주어야 함 

 Trust Boundary Violation

취약점) 프로그램 내부 데이터 조작 공격 가능

대응방안) 내부데이터의 외부 사용자 입력값이 사용되지 않도록 소스 수정해야함

 Unchecked Return Value: Missing Check against Null  

취약점) 시스템 간접정보 획득 및 프로그램 오작동 가능  

대응방안) 사용자 입력값 필터링해주어야 함 

 J2EE Misconfiguration: Missing Error Handling

취약점) 시스템 간접정보 획득 가능  

대응방안) Error발생시 시스템 정보가 노출되지 않도록 설정 파일 변경해야 함



728x90

+ Recent posts