반응형

SQL%NOTFOUND 라는 구문을 사용하면 Update를 사용할 때 일치하지 않는 조건을 찾을 수 있다.

ex)

TABLE 명 : STUDENT

COLUMN : NAME, GRADE, ADDRESS1, ADDRESS2

VALUE    : 김가을, 1, 서울, 양천구
              : 고운손, 2, 서울, 마포구
              : 유하늘, 1, 경기, 일산시


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

DECLARE

BEGIN
UPDATE STUDENT
      SET NAME = '김가우'
    WHERE NAME='김가오'

IF SQL%NOTFOUND THEN
     DBMS_OUTPUT.PUT_LINE('일치하는 조건 없음');
     -- 에러 코드와 에러 메시지를 조회한다. 물론 값은 정상이다.
     DBMS_OUTPUT.PUT_LINE(SQLCODE || ' : ' || SQLERRM);
END IF;
END;

일치하는 조건이 없기 때문에

일치하는 조건 없음 ORA-0000 (정상코드) 값등이 출력된다.)
반응형
반응형

map_path 라는 필드에 한글 값이 있는지 확인하고 있는것에 대한

확장자 변환 처리를 위해 아래와 같이 사용했다.

즉, 한글로 된 map_path를 영문 or 숫자 형태로 전체 변환하기 위해 사용했다 .~

select map_path, instr(map_path,'.'), substr(map_path, instr(map_path,'.'), length(map_path)) from JOIN_ORG where trim(map_path) is not null
and ascii(map_path) between 45217 and 51454

반응형
반응형

Please perform the post-installation scripts given in the readme of the patchset.

1. Please ensure to have a backup of the database
2. Startup the database in upgrade mode and run catalog.sql and catproc.sql'


SQL> STARTUP UPGRADE
SQL> @?/rdbms/admin/catupgrd.sql


Please note that the catupgrd.sql calls the catalog.sql and catproc.sql internally.If you are
running

@the catalog.sql and catproc.sql script it is not required to run the catupgrd.sql script
separately.

3.Shutdown and restart the database normally

SQL> SHUTDOWN
SQL> STARTUP

[출처] 10.2.0.3 업그레이드후 ORA-01092 발생할 경우, (ProDBA) |작성자 주노팔

반응형
반응형

1. 기존의 데이터를 수정하지는 않는다.

2. 다음 쿼리를 통해 캐릭터셋이 2개 이상 조회된다면 (같은 케릭터셋이 2개의 타입이라면..) 데이터를 주고 받을 때 정상적이지 않을수 있다 ~.

select distinct(nls_charset_name(charsetid)) CHARACTERSET,
       decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
                     9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
                    96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
                   112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
   from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);


3. 시스템 환경을 케릭터 셋으로 변경한다.(/as sysdba)
   ※ 반드시 백업받고 수행한다
   SHUTDOWN IMMEDIATE;
   STARTUP MOUNT;
   ALTER SYSTEM ENABLE RESTRICTED SESSION;
   ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
   ALTER SYSTEM SET AQ_TM_PROCESSES=0;
   ALTER DATABASE OPEN;
   COL VALUE NEW_VALUE CHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
   COL VALUE NEW_VALUE NCHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
   ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
   ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   -- yes, 2 times startup/shutdown . This is not a typo
   SHUTDOWN IMMEDIATE;
   STARTUP;



절차

 SQL> SHUTDOWN IMMEDIATE;
<do a full backup>
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET KO16KSC5601;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;



참고 사이트 : http://www.oracle.com/technology/global/kr/pub/columns/oracle_nls_2.html
반응형
반응형

EXP-00008: ORACLE 오류 6552가 발생했습니다
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 알 수 없는 문자 집합 이름입니다

 

즉, 아래의 형태의 문제가 발생했을 경우

 

Problem description
===================
You receive the following error when (re)compiling or calling a piece of pl/sql:

ORA-06550: line <num>, column <num>: ....
or
ORA-06552: PL/SQL: Compilation unit analysis terminated

followed by
   
ORA-06553: PLS-553: character set name is not recognized

이것은 export 시 발생할 수 도 있고, Catproc.sql를 실행하다가..또는 다른 경우에도 발생할 수 있는데

그 원인은 character set 이 섞였기 때문이다.

 

그럼..검증을 해보자 검증하려면 아래의 쿼리를 수행하고 그 결과를 보면 된다.

select distinct(nls_charset_name(charsetid)) CHARACTERSET,
       decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
                     9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
                    96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
                   112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
   from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);

결과에서

CHARACTERSET                            TYPES_USED_IN
-----------------------------------------------------
AL16UTF16                               NCHAR
AL16UTF16                               NVARCHAR2
AL16UTF16                               NCLOB
AL32UTF8                                CHAR
AL32UTF8                                VARCHAR2
AL32UTF8                                CLOB


위처럼이 아니라

 

CHARACTERSET                            TYPES_USED_IN
-----------------------------------------------------
AL16UTF16                               NCHAR
AL16UTF16                               NVARCHAR2
AL16UTF16                               NCLOB
US7ASCII                                CHAR
US7ASCII                                VARCHAR2
WE8DEC                                  VARCHAR2
US7ASCII                                CLOB


이런 식으로 하나의 varchar2 에 대해 2개의 characterset 이 나온다면 mix 된 것이다.

 

이 문제에 대한 처리는 아래처럼 하도록 한다.

 

a) INIT.ORA 안에 있는 parallel_server parameter 가 false 거나 아예 세팅되어있지 않은지 확인한다
   SQL>show parameter parallel_server

b) 다음스크립트를 SQLPLUS 에서 "as sysdba"로 수행한다.
   (물론 백업을 해두는 것도 있지 말자!)

   SHUTDOWN IMMEDIATE;
   STARTUP MOUNT;
   ALTER SYSTEM ENABLE RESTRICTED SESSION;
   ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
   ALTER SYSTEM SET AQ_TM_PROCESSES=0;
   ALTER DATABASE OPEN;
   COL VALUE NEW_VALUE CHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
   COL VALUE NEW_VALUE NCHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
   ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
   ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   -- yes, 2 times startup/shutdown . This is not a typo
   SHUTDOWN IMMEDIATE;
   STARTUP;

c) 만약 parallel_server parameter 를 고쳤다면 다시 원상복구한다.

 

This script doesn't change anything for the data that is already stored, but it
re-enforces database character set to be known in all places where it should be
stored

 

위 스크립트는 이미 저장된 데이터들을 바꾸지는 않는다. 단지 database 의 character set 을 그것이 저장되어지는 모든 장소에 다시 강제적으로 세팅할 뿐이다.

출처 : http://cafe.naver.com/happysharing.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=19



반응형
반응형

데이터 이관작업은 별로 많지는 않지만...

어제 exp 백업시 tablespace 단위로 이동하게 작업을 했다...

comment 부분이 이관이 정상적으로 되지 않았다.

comments 부분은 저장되는게 아래 쿼리와 같다...

  SELECT   o.name, c.name, co.comment$
     FROM   sys.obj$ o, sys.col$ c, sys.com$ co
    WHERE       o.owner# = USERENV ('SCHEMAID')
            AND o.type# IN (2, 4)
            AND o.obj# = c.obj#
            AND c.obj# = co.obj#(+)
            AND c.intcol# = co.col#(+)
            AND BITAND (c.property, 32) = 0

자 이 정보를 이관하려면

COMMENT ON TABLE ~ 명령을 사용 하면 아주 쉬워진다.

1. 테이블 comment 정보 이관하기 반드시 NULL이 없는것을 기준으로 한다 ~

SELECT
    'COMMENT ON TABLE '
    || TABLE_NAME
    || ' IS '
    || ''''
    || COMMENTS
    || ''';'
 FROM USER_TAB_COMMENTS
WHERE COMMENTS IS NOT NULL;

2.  컬럼 comment 정보 이관하기 위해서도 역시 반드시 NULL이 없는 데이터를 기준으로 합니다. ~

SELECT
    'COMMENT ON COLUMN '
    || TABLE_NAME
    || '.'
    || COLUMN_NAME
    || ' IS '
    || ''''
    || COMMENTS   
    || ''';'
 FROM USER_COL_COMMENTS WHERE COMMENTS IS NOT NULL;   
반응형
반응형

기존에는 테이블을 새로 작성(reorg)  작업을 통해

커진 테이블 스페이스 크기를 복구 가능하였으나

10g 부터는 shrink 기능을 이용하여 손쉽게 테이블을 줄일수 있게 되었다.

Shrink 기능은 HWM(High Water Mark)를 줄일수 있는 기능이다.


- 사전 확인 사항

init.ora 파일내에 compatible = 10.2 이상인것을 확인

ASSM (Automatic Segment Space Management) 테이블 스페이스여만 가능

각 테이블 조회 방법은

SELECT obj.owner
,obj.table_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 = upper('&1')

쿼리를 통해 (테이블 스페이스 명을 인자값으로)

확인 가능하다.

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.
반응형
반응형

DBA_USERS                      : 데이터베이스 USER에 대한 정보를 보여준다
DBA_ROLES                      : ROLE에 대한 정보를 보여준다.
DBA_TAB_PRIVS                  : 테이블에 대한 권한이 설정된 정보를 보여 준다
DBA_SYS_PRIVS                  : SYSTEM 권한이 설정된 정보를 보여준다
DBA_ROLE_PRIVS                 : ROLE에 대한 권한이 설정된 정보를 보여 준다.
DBA_COL_PRIVS                  : 컬럼 단위로 권한이 설정된 정보를 보여준다.
DBA_SEGMENTS                   : 세그먼트(저장공간이 있는 오브젝트)에 대한 정보를 보여준다.
DBA_OBJECTS                    : 모든 오브젝트에 대한 정보를 보여준다.

DBA_TABLESPACES                : 테이블 스페이스에 대한 정보를 보여준다.
DBA_DATA_FILES                 : 테이블스페이스를 구성하고 있는 데이터 파일에 대한 정보를 보여준다.
DBA_FREE_SPACE                 : 아직 사용되지 않은 영역에 대한 정보를 보여준다.
DBA_EXTENTS                    : 할당된? EXTENT의 정보를 보여준다.
DBA_TS_QUOTAS                  : QUOTA가 설정된 정보를 보여준다
DBA_TABLES                     : 테이블에 대한 정보를 보여준다.
DBA_TAB_COLUMNS                : 테이블을 구성하는 컬럼에 대한 정보를 보여준다
DBA_TAB_COMMENTS               : 테이블의 설명에 대한 정보를 보여준다
DBA_PART_TABLES                : 파티션 테이블에 대한 정보를 보여준다.
DBA_PART_KEY_COLUMNS           : 파티션을 구성하는 기준 컬럼에 대한 정보를 보여준다
DBA_COL_COMMENTS               : 컬럼에 대한 설명에 대한 정보를 보여 준다
DBA_INDEXES                    : 인덱스에 대한 정보를 보여준다.
DBA_PART_INDEXES               : 파티션된 인덱스에 대한 정보를 보여준다
DBA_IND_COLUMNS                : 인덱스를 구성하는 컬럼에 대한 정보를 보여준다
DBA_CONSTRAINTS                : 테이블에 걸려있는 제약조건을 보여준다.
DBA_CONS_COLUMNS               : 제약조건을 구성하는 컬럼에 대한 조건을 보여준다.
DBA_VIEWS                      : VIEW를 정의한 정보를 보여준다.
DBA_SYNONYMS                   : 시노님에 대한 정보를 보여준다.
DBA_SEQUENCES                  : 시퀀스에 대한 정보를 보여준다.
DBA_DB_LINKS                   : DB 링크에 대한 정의를 보여준다
DBA_TRIGGERS                   : 트리거에 대한 정의를 보여준다.
DBA_TRIGGER_COLS               : 컬럼 단위로 작성된 트리거에 대한 정의를 보여준다.
DBA_ROLLBACK_SEGS              : 롤백세그먼트에 대한 정보를 보여 준다.
DBA_SOURCE                     : FUNCTION, PROCEDURE,PACKAGE를 구성하는 PL/SQL 소스코드를 보여준다

 

출처 : http://www.jakartaproject.com/board-read.do?boardId=dbtip&boardNo=119026265610890&command=READ&page=1&categoryId=-1

반응형
반응형

사용되지 않은 공간을 DEALLOCATE하는 방법

========================================

 

 

Purpose

-------

TABLE, INDEX, CLUSTER 등의 DATABASE OBJECT들은 입력되는 자료의 양이

증가함에 따라서 새로운 EXTENT들이 자동적으로 할당된다. 이 때 필요 이상

과도한 크기의 EXTENT가 할당되면 실제로 자료가 들어있지 않거나 들어갈

예정이 없는 죽은 공간이 생길 수 있게 된다.

이러한 죽은 공간은 DISK 전체의 사용 효율을 저하시키는 원인이 되므로

적절히 제거되어야 하는데 여기서는 그 중에서 DEALLOCATE라는 방법에

대해서 알아본다

 

 

Explanation

-----------

 

1. DEALLOCATE의 대상

 

TABLE, INDEX, CLUSTER들이 생성된 이후에 한번도 사용되어지지 않은 공간

ORACLE에서는 이렇게 한번도 사용되지 않은 공간을 HIGH WATER MARK라는

개념으로 설명하는데 이는 다음과 같다.

 

* HIGH WATER MARK

TABLE_A 의 EXTENT 구조

|-------------------|--------------------|-------------------|

EXTENT1 EXTENT2 | EXTENT3 |

| |

A.현재 DATA가 B.HIGH WATER MARK

차있는 위치

 

TABLE이 생성된 이후 DATA가 INSERT되어 B지점까지 공간을 점유하고

있었다고 가정을 하자. 이후 DATA가 DELETE되어 현재 DATA들이

점유하고 있는 위치는 A라고 하면 B지점이 HIGH WATER MARK가 된다.

 

DEALLOCATE 작업을 하면 HIGH WATER MARK 위의 공간만이 FREE되며,

HIGH WATER MARK 아래의 공간들(B-A)은 이후 DATA가 다시 INSERT될 것을

예상하여 그대로 빈 공간으로 남겨두게 된다.

 

 

2. DEALLOCATE의 대상이 되는 공간이 어느 정도 존재하는지 파악하는 방법

 

ANALYZE TABLE table_name COMPUTE STATISTICS ;

 

예1)

SELECT EMPTY_BLOCKS, BLOCKS

FROM DBA_TABLES

WHERE TABLE_NAME = 'table_name' ;

 

EMPTY_BLOCKS BLOCKS

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

6530 2400

 

EMPTY_BLOCKS - OBJECT에 할당된 총 SPACE중 HIGH WATER MARK 위의 공간

BLOCKS - OBJECT에 할당된 총 SPACE중 HIGH WATER MARK 아래 공간

 

여기서 EMPTY_BLOCKS + BLOCKS(해당 OBJECT의 총 SPACE)에 비해서

EMPTY_BLOCKS 이 과도하게 크고 앞으로 더 이상의 DATA INSERT도 일어나지

않을 계획이라면 DEALLOCATE를 하는 것이 좋다.

 

 

3. SYNTAX

 

ALTER TABLE table_name DEALLOCATE UNUSED [KEEP integerK] ;

ALTER INDEX index_name DEALLOCATE UNUSED [KEEP integerK] ;

ALTER CLUSTER cluster_name DEALLOCATE UNUSED [KEEP integerK] ;

 

KEEP 절을 사용하면 KEEP 절에 정의된 크기 만큼은 남겨 두고

DEALLOCATE를 한다.

 

예2)

위의 예1)에서

ALTER TABLE table_name DEALLOCATE UNUSED ;

를 수행하면 다음과 같이 SPACE가 FREE된다.

 

ANALYZE TABLE table_name COMPUTE STATISTICS ;

 

SELECT EMPTY_BLOCKS, BLOCKS

FROM DBA_TABLES

WHERE TABLE_NAME = 'table_name' ;

 

EMPTY_BLOCKS BLOCKS

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

0 2400

 

 

위의 조회 결과를 보면 HIGH WATER MARK 위 부분(EMPTY_BLOCKS)은

FREE되어 0으로 표시되고 HIGH WATER MARK 아래 부분(BLOCKS)은

그대로(2400) 남아 있다

 

 

 

 

 

ORA-01653 에러와 같은 경우입니다..

해당테이블이 단지 일반 테이블이 아니라

INDEX 테이블이라는 것만 빼고... ^^

그럼 도움이 되셨길....

 

코멘트 2을 처음 님이 의도한 방법이고

코멘트 3는 제가 말씀드린 방법입니다

No. 11875

====================================================================================================

ORA-1654 ERROR ON INDEX SEGMENT

====================================================================================================

 

PURPOSE

-------

 

이 자료는 ORA-1654 error를 해결하기 위한 방법에 대한 자료이다.

 

 

Problem Description

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

 

DML 작업 시에 다음과 같은 ORA-1654 error가 특정 tablespace에 대하여

발생하는 경우가 있다. 이에 대한 해결방법을 알아보기로 한다.

 

01654, 00000, "unable to extend index %s.%s by %s in tablespace %s"

예) unable to extend index owner.object by 40964 in tablespace INDEX;

 

 

Workaround

----------

none

 

 

Solution Description

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

 

1. tablespace에 남아 있는 공간 중 가장 큰 연속된 공간의 사이즈를 구합니다.

 

SELECT TO_CHAR(MAX(bytes), '999,999,999,999') free_space

FROM dba_free_space

WHERE tablespace_name = 'HDMF_TM_DATA_70';

 

 

ora-1654 에러가 났던 tablespace 이름을 대문자로 위에 써줍니다.

위에 나온 수치는 연속된 block들 가운데 가장 큰 사이즈의 extent를 보여주는

것인데, next extent를 할당하기 위해서는 위에 나온 수치보다 더 큰 사이즈를

필요로 하는 것입니다.

 

"The above query returns the largest available contiguous chunk of space."

 

 

2. index의 storage parameter인 next_extent 값과 pct_increase 값을 확인합니다.

 

SELECT next_extent, pct_increase

FROM dba_indexes

WHERE index_name = 'INDEX NAME' AND owner = 'OWNER';

 

< TABLE 일경우 >

SELECT TO_CHAR(next_extent, '999,999,999') NEXT_EXTENT, pct_increase

FROM dba_tables

WHERE table_name = 'TB_KYBSMST' AND owner = 'HDMF_PRD';

 

--> 파티션 테이블에 대한 파티션 인덱스인 경우는

SELECT next_extent, pct_increase

FROM dba_ind_partitions

WHERE index_name = 'INDEX NAME' AND owner = 'OWNER';

 

 

ora-1654 에러가 발생한 index의 next extent 값과 pct_increase 값이 얼마인지

확인해 보십시오.

위에서 나타난 next_extent 값과 max(bytes) 값을 비교해 보세요.

 

 

3. 인스턴스의 db_block_size를 확인합니다.

 

vi $ORACLE_HOME/dbs/initSID.ora

 

db_block_size = 2048 또는 4096 또는 8192일 것입니다.

 

ora-1654 에러에 나타난 by 다음의 수치(예:40964) * db_block_size 만큼의

사이즈가 next_extent(byte 단위) 값과 같을 것이며, 이 만큼의 extent 영역을

할당할 수 없다는 뜻입니다.

따라서 datafile을 추가 시 이 byte 값 이상의 사이즈를 추가해야 합니다.

 

 

4. ora-1654 에러를 해결하는 방법

 

There are several options for solving failure to extend.

 

Manually Coalesce Adjacent Free Extents

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

 

ALTER TABLESPACE <tablespace name> COALESCE;

 

The extents must be adjacent to each other for this to work.

 

Add a Datafile:

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

 

ALTER TABLESPACE <tablespace name> ADD DATAFILE '<full path and

file name>' SIZE <integer> < |k|m>;

 

 

Lower "next_extent" and/or "pct_increase" size:

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

 

For non temporary segment problem:

 

ALTER <object> <object name> STORAGE ( next <integer> < |k|m>

pctincrease <integer>);

 

For a temporary segment problem:

 

ALTER TABLESPACE <tablespace name> DEFAULT STORAGE

(initial <integer> next <integer> <|k|m> pctincrease <integer>);

 

 

Resize the Datafile:

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

 

ALTER DATABASE DATAFILE '<full path and file name>' RESIZE

<integer> <k|m>;

 

 

Reference Document

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

<Note:146595.1

오라클 10G부터는

SHRINK 기능을 사용하면 된다.

위의 기능은 HWM (HIGH WATER MARK) 윗부분의 사용하지 않은 공간만 반환함

반응형
반응형

토드를 사용하려 할때 항상 Oracle 클라이언트를 설치 해야만 하는 불편함이 있었는데

간단한 클라이언트 환경을 구성할 수 있는 방법을 오라클에서 제공해주고 있다..

 

 

instantclient 라고 10g 부터 제공해주는거 같은데..

우선 아래 사이트에 들어가서 본인이 사용하고자 하는 버전을 다운 받는다

 

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html

 

다운받을 파일은 instantclient-basic , instantclient-sqlplus 두가지를 받으면 됩니다.

sqlplus는 접속 테스트용..

 

1. 먼저 Instant Client Basic을 적당한 디렉토리에 압축 푼다.
  ex) C:\oracle\instanceclient


2. instant Client sqlplus 를 같은 디렉토리에 압축을 푼다.

 

3. tnsnames.ora 파일을 적당한 곳에 위치 시킨다.
  ex) C:\oracle\network

 

4. Instant Client를 복사한 디렉토리를 Path 환경변수에 추가한다.
  ex) set Path=%Path%;C:\oracle\instanceclient

 

5. tnsnames.ora 파일이 있는 디렉토리를 TNS_ADMIN 환경변수에 지정하여 준다.
  ex) set TNS_ADMIN=C:\oracle\network

 

6. 레지스트리 편집기를 열고 NLS_LANG 추가 (한글 깨질경우)
    경로: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
    문자열값 : KOREAN_KOREA.KO16MSWIN949

토드를 실행하고... 접속하면 됨.

 

참고로 sqlplus 를 실행할 때 msvcr71.dll 파일이 없다는 에러가 나오면(vista에서..)
해당 dll 파일을 찾아서 instance client를 설치한 디렉토리에 복사하여 준다.
 -> 구글에서 dll 명으로 검색하면 바로 다운받을 수 있다..

 

 

위와같이 설치 한다음에 toad 등을 실행하면 깔끔하게 동작한다..^^

 

 

^^ 무겁고, 귀찮고,, 내가 모르는것이 막 깔리는 기분이던 오라클 클라이언트를 이제 설치 안해도 된다는게 ... 깨운하다!~~ ㅎㅎ^^

 

출처 : http://blog.naver.com/jajakk93?Redirect=Log&logNo=100062623719

반응형

+ Recent posts