'테이블'에 해당되는 글 4건
- 2014.03.04 [Oracle] 테이블 스페이스 용량/사용량 산출
- 2013.02.07 [Oracle] 테이블 하나만 복원하기
- 2012.12.03 [Oracle] 10g 공간 줄일수 있는 테이블 찾기와 Shrink 실행하기
- 2010.10.20 [MSSQL] 테이블 복사
// TABLESPACE_NAME 별로 합처리
SELECT SUBSTR(A.TABLESPACE_NAME,1,30) TABLESPACE,
ROUND(SUM(A.TOTAL1)/1024/1024,1) "TOTALMB",
ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1) "USEDMB",
ROUND(SUM(A.SUM1)/1024/1024,1) "FREEMB",
ROUND((ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1))
/ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USED%"
FROM
(SELECT TABLESPACE_NAME,0 TOTAL1,SUM(BYTES) SUM1,MAX(BYTES) MAXB,
COUNT(BYTES) CNT
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
UNION
SELECT TABLESPACE_NAME,SUM(BYTES) TOTAL1,0,0,0
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A
GROUP BY A.TABLESPACE_NAME
ORDER BY TABLESPACE;
// 전체 합처리
SELECT ROUND(SUM(A.TOTAL1)/1024/1024/1024,1) "TOTALGB",
ROUND(SUM(A.TOTAL1)/1024/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024/1024,1) "USEDGB",
ROUND(SUM(A.SUM1)/1024/1024/1024,1) "FREEGB",
ROUND((ROUND(SUM(A.TOTAL1)/1024/1024,1)-ROUND(SUM(A.SUM1)/1024/1024,1))
/ROUND(SUM(A.TOTAL1)/1024/1024,1)*100,2) "USED%"
FROM
(SELECT TABLESPACE_NAME,0 TOTAL1,SUM(BYTES) SUM1,MAX(BYTES) MAXB,
COUNT(BYTES) CNT
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
UNION
SELECT TABLESPACE_NAME,SUM(BYTES) TOTAL1,0,0,0
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) A
'Database / Sql' 카테고리의 다른 글
[Oracle] IO를 많이 발생시키는 쿼리 찾기 (0) | 2014.09.02 |
---|---|
[Oracle] 각 테이블/인덱스 사이즈 조회 쿼리 (0) | 2014.03.06 |
[Oracle] SID, SPID 를 통해 수행하고 있는 쿼리 찾기 (0) | 2013.11.27 |
[Oracle] SYS_CONNECT_BY_PATH 문자열 합치기?? (0) | 2013.10.18 |
[Oracle] 대소문자 처리 (0) | 2013.09.26 |
imp userid/userpass file = data_bak.dmp fromuser = kice tables = (PRGVER)
=> imp 유저아이디/패스워드 file = 덤프파일이름 fromuser = 덤프테이블유저이름 tables = ( 필요한테이블 여러개일때에는 , 로 )
복원할 테이블은 삭제해두어야 한다. 그렇지 않으면 이미 있는 객체라고 해서 오류 발생.
임시테이블 하나 만들어 놓고 복원할 테이블 DROP.
CREATE TABLE PRGVER_T AS ( SELECT * FROM PRGVER );
DROP TABLE PRGVER;
'Database / Sql' 카테고리의 다른 글
[Oracle] ROLLUP, GROUPING SETS (0) | 2013.02.13 |
---|---|
[Oracle] Session Timeout (0) | 2013.02.08 |
[Oracle] SID와 Service Name의 차이 (0) | 2013.01.25 |
[Oracle] ROWID 구성 (0) | 2013.01.03 |
클러스터인덱스와 비클러스터인덱스 차이 (0) | 2013.01.03 |
기존에는 테이블을 새로 작성(reorg) 작업을 통해 커진 테이블 스페이스 크기를 복구 가능하였으나 10g 부터는 Shrink 기능을 이용하여 손쉽게 테이블을 줄일수 있게 되었다.
Shrink 기능은 HWM(High Water Mark)를 줄일수 있는 기능이다.
- 사전 확인 사항
init.ora 파일내에 compatible = 10.2 이상인것을 확인
ASSM (Automatic Segment Space Management) 테이블 스페이스여만 가능
각 테이블 조회 방법은
SELECT OBJ.OWNER
, OBJ.TABLE_NAME, OBJ.TABLESPACE_NAME
, (CASE WHEN NVL(IDX.CNT, 0) < 1 THEN 'YES' ELSE 'NO' END) SHRINKABLE
FROM DBA_TABLES OBJ,
(SELECT TABLE_NAME, COUNT(ROWNUM) CNT
FROM DBA_INDEXES
WHERE INDEX_TYPE LIKE 'FUN%'
GROUP BY TABLE_NAME) IDX
WHERE OBJ.TABLE_NAME = IDX.TABLE_NAME(+)
AND OBJ.TABLESPACE_NAME = :TABLESPACE_NAME;
쿼리를 통해 (테이블 스페이스 명을 인자값으로) 확인 가능하다.
1. 테이블 검색 방법
SELECT * FROM TABLE(DBMS_SPACE.ASA_RECOMMENDATIONS());
아래와 같이 테이블의 DBA_SEGMENTS에서 볼수 있는 크기와 축소 가능 크기가 조회된다.
SEGMENT_OWNER | SEGMENT_NAME | SEGMENT_TYPE | PARTITION_NAME |
ALLOCATED_SPACE | USED_SPACE | RECLAIMABLE_SPACE
MAX_TI | SMR_IF_LOG | TABLE | | 6761793074 | 5910149080 | 851643994
MAX_TI | SMR_IF_LOG_I01 | INDEX | | 478455081 | 420139142 | 58315939
MAX_TI | SMR_IF_LOG_I02 | INDEX | | 411921243 | 398204079 | 13717164
2. 축소하기
가장 먼저 행들을 이동 가능하도록 변경한다.
위의 SMR_IF_LOG 테이블을 기준으로 설명하겠다.
ALTER TABLE SMR_IF_LOG ENABLE ROW MOVEMENT;
--> 반대로는 ALTER TABLE SMR_IF_LOG DISABLE ROW MOVEMENT; 이다..
이제 SHRINK 기능을 수행할수 있으며, 다음 3가지 형태로 가능하다
① ALTER TABLE SMR_IF_LOG SHRINK SPACE;
-- SMR_IF_LOG 테이블의 공간만 TABLESPACE로 환원
② ALTER TABLE SMR_IF_LOG SHRINK SPACE CASCADE;
-- 모든 관련 OBJECT까지 TABLESPACE으로 공간 환원
③ ALTER TABLE SMR_IF_LOG SHRINK SPACE COMPACT;
-- 행들만 이동시킴.
※ SHRINK 를 적용 시킬 없는 테이블
UNDO segments
temporary segments
clustered tables
tables with a column of datatype LONG
LOB indexes
IOT mapping tables and IOT overflow segmnets
tables with MVIEWS with ON COMMIT
tables with MVIEWS which are based on ROWIDs.
[출처] 웹 개발과 관련된 모든 것들 (http://web-dev.tistory.com/116)
'Database / Sql' 카테고리의 다른 글
클러스터인덱스와 비클러스터인덱스 차이 (0) | 2013.01.03 |
---|---|
[Oracle] PL/SQL - SELECT INTO (0) | 2012.12.21 |
[Oracle] PL/SQL PROCEDURE Scripts Sample 설명 (0) | 2012.11.27 |
[Oracle] Toad 실행계획 (0) | 2012.11.23 |
[MS-SQL] JOIN UPDATE / DELETE (0) | 2012.11.23 |
select * into [생성될 테이블명] from [원본테이블명]
select * into [생성될 테이블명] from [원본테이블명] where'1'='2' ;
(데이터 없이 테이블 구조만 복사)
select * into [생성될 테이블명] from [원본테이블명] where'1'='1 ;
(데이터까지 복사)
단, 제약조건이나 Identity 정보는 복사되지 않는다.
'Database / Sql' 카테고리의 다른 글
[MSSQL] 날짜 함수 (0) | 2010.11.30 |
---|---|
[Oracle] 9i 이상에서 컬럼명 변경 (0) | 2010.11.11 |
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
[Oracle] PL/SQL (0) | 2010.06.29 |