database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 21059 게시물 읽기
No. 21059
Table Schema Size를 구하는 SQL 은 없는지요?
작성자
mini
작성일
2004-12-14 17:42ⓒ
2004-12-14 18:08ⓜ
조회수
3,579

예를 들어 설명하겠습니다.

Table Name : AAA
Column       : A1 NUMBER(10)
                    A2 CHAR(4)
                    A3 VARCHAR2(125)
                    A4 DATE

위와 같이 설정된 Table 이 있을 경우,

각 컬럼의 합 = A1(10) + A2(4) + A4(125) + A4(7)
(VARCHAR2 는 그냥 처음 설정한 값으로 함)


이와 같이, 각 컬럼의 합을 구할 수 있는 SQL 문이 있는지 알고 싶습니다.
(사용되는 Table 의 크기를 구하는 SQL 은 인터넷을 통해 보았으나..
그것을 찾는 것은 아닙니다.)

답변 부탁드립니다..수고하세요^^

이 글에 대한 댓글이 총 4건 있습니다.

정확히 어떤 용도로 사용하시려고 table size를 구하지는 잘모르겠지만

아래의 답변이 도움이 되셨으면 좋겠네요..^^

설명하신 size 구하는데 있어서...

varchar2 같은 같은 경우 가변길이여서 실제 데이타가 들어 가는 만큼

사이즈가 잡힌다는 건 아실겁니다.

그래서 row별로 합산한 사이즈가 서로 상이하게 되죠..

만약 서로 다른 row size의 평균 길이를 원하신다면

user_tables / all_tables / dba_tables 중 하나를 조회 해 보시면 됩니다

-----------------------------------------------------------

select avg_row_len from user_tables where table_name = '테이블명';

------------------------------------------------------------

위 쿼리를 조회 해보면 해당 값이 나올 수 도 있고 안날올 수도 있습니다

안나오는 경우는 해당 테이블이 대해 analyze하면 해당 값이 조회될 겁니다

 

 

박승무님이 2004-12-14 18:02에 작성한 댓글입니다.
이 댓글은 2004-12-14 18:03에 마지막으로 수정되었습니다. Edit

단순히 칼럼길이의 합을 구하는 것이라면 아래 쿼리 사용해 보세요

----------------------------------------------------------

select max(table_name), sum(data_length)
from user_tab_columns
group by table_name

----------------------------------------------------------

참고로, user_tab_columns는 오라클에 접속한 계정이 접근할 수 있는 권한을 갖고 있는 테이블들의 칼럼에 대한 정보를 갖고 있는 오라클 객체 입니다

박승무님이 2004-12-14 18:30에 작성한 댓글입니다.
이 댓글은 2004-12-14 18:42에 마지막으로 수정되었습니다. Edit

-- 테이블 사이즈 DDL기준

Select /*+ CHOOSE */ cols.column_name as Name, nullable,
 data_type as Type,
 Decode( data_type, 'NUMBER', data_precision + data_scale, data_length ) Length,
 data_precision Precision, data_scale Scale, data_length dlength
, ' ' comments
 FROM
 user_tab_columns cols
 where
 cols.table_name = '테이블명'
 order by column_id

 

 

-- index 사이즈 DDL 기준

  select sum(decode(data_type, 'DATE',     7,
  'CHAR',  data_length,  'VARCHAR2', decode(sign(data_length)-250,
  -1, .7*data_length+3,  .7*data_length+1),
  'NUMBER',   floor(nvl(data_precision,38)/2)+2 )  )
    from all_tab_columns xxx
    where owner = :tabowner and table_name = :tabname
   and exists (select 1 from all_ind_columns yyy
  where index_owner = :idxowner and index_name = :idxname
  and table_owner = :tabOwner and table_name = :tabname
  and xxx.column_name = yyy.column_name   )

 

 

 

pctused,pctfree 값음 고려되지 않은 사이즈 입니다.

 

pctused 값이 60%라면, 계산값/(60/100) 을 한 값이 실제 차지하는 사이즈 일것입니다. 더세세하게 가면 한없이 고려사항이 많으니 대략 이렇게 가시면 될것입니다.

 

참 위의 sql은 토드를 사용해서 뽑은것입니다.

spool sql을 on으로 해놓은 상태해서 원하는것을 해보면 해당 sql을 알수 있습니다.

 

데이터 사이즈관련 산출물 만들때 저는 주로 이것을 사용합니다. 물론 erwin 같은 툴을 이용하기도 하지만

 

틀린것이 있으면 언제나 리플주세요.

 

장종훈(장종훈)님이 2004-12-14 18:33에 작성한 댓글입니다.

감사합니다^^

박승무님, 장종훈님...

또 하나의 좋은 정보를 얻고 갑니다.

좋은 하루 되시구요..수고하세요..^^

mini님이 2004-12-14 18:38에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
21063group by 절을 쓰면서 통계를 출력 [3]
정진종
2004-12-15
4060
21061오라클 04031 에러 질문이요.. [3]
로그파일
2004-12-14
1886
21060[질문]시작일과 끝날자를 입력 받는 쿼리 [2]
신승익
2004-12-14
1342
21059Table Schema Size를 구하는 SQL 은 없는지요? [4]
mini
2004-12-14
3579
21058쿼리문좀 도와주세요... [2]
고운님
2004-12-14
1240
21057가로로나오는 Data를 세로(row)로 나오게하는 방법 좀 부탁합니다. [2]
임영수
2004-12-14
4962
21056FK의 설정이 시스템의 Performance를 많이 떨어뜨리나요? [6]
안용주
2004-12-14
3188
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다