<오라클 테이블 정보 보기>


-- 전체 테이블 정보 보기

select * from all_tables ;

-- 특정 유정의 테이블 정보

select * from all_tables where owner = '유저아이디'

-- 테이블 comments 정보

select * from user_tab_comments

-- 테이블 컬럼 comments 정보

select * from user_col_comments 

-- 컬럼 정보(컬럼 타입, 길이, null 허용 여부 등)

select * from user_tab_columns

-- 해당 유저의 모든 컬럼 제약 사항 보기

select * from user_constraints

-- 해당 유저가 조회 가능한 데이터베이스의 모든 제약 조건 조회

select * from dba_constraint

-- 해당 유저가 조회 가능한 모든 제약 조건 조회

select * from all_constraint

select * from all_tables a1 left join user_tab_columns a2 on a1.table_name=a2.table_name where owner='유저아이디';

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

ORACLE PLS-553 오류 처리  (0) 2015.04.29
오라클 백업  (0) 2015.04.24
SQLPLUS 출력 컬럼 수 조정하기  (0) 2014.07.31
프로시저 혹은 함수 목록 출력시  (0) 2014.06.25
오라클 날짜 함수  (0) 2014.01.13

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/

MSSQL SCRIPT로 COMMENT 달기

 

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

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

go

 

-- 테이블별 사용 용량

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

오라클 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;

 

'프로그래밍 > 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

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;
--포멧으로 설정한 글자가 컬럼의 있는 글자보다 작다면 해당 레코드는 두줄로 표현된다.

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

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

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

 

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

 

결론부터 말하자면 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')
/

 

 

'프로그래밍 > 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

+ Recent posts