테이블 스페이스를 자동으로 사이즈가 늘어날 수 있도록 autoextend를 on으로 설정 했음에도 해당 오류가 발생하는 경우가 있습니다. 

 

해당 오류가 발생할 때에는 해당 테이블스페이스 데이터 파일의 용량을 확인해야합니다. 

 select file_name, tablespace_name, bytes, autoextensible
   from dba_data_files
  where tablespace_name='MY_TS';

bytes에 해당하는 내용이 용량을 나타내는 항목입니다.

자동 증가옵션을 넣었어도 해당용량이 최대 용량이 존재합니다. 

 

  • OS가 32비트인 경우 최대 16기가 까지 생성 가능
  • OS가 64비트인 경우 최대 32기가 까지 생성 가능

즉 OS의 비트 수에 따른 최대 용량이 존재하여 파일을 더이상 확장할 수 없는 경우 동일한 애러가 발생하게 됩니다. 

 

 

이 경우 데이터 파일을 추가하여 해당 오류를 해결 할 수 있습니다. 

/* 사용법
   ALTER TABLESPACE [TableSpaceName] 
     ADD DATAFILE [DataFileName] 
     SIZE [초기용량] 
     AUTUEXTEND ON NEXT [자동증가 용량] 
     MAXSIZE [최대 용량]
*/     
ALTER TABLESPACE MY_TS ADD DATAFILE '/TS_DATA01.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 32G

 

내부 Datatypes

 

(1) VARCHR2(size):변수길이인 영숫자 데이터. 최대 2000byte를 갖음.

(2) NUMBER(p.s):PrecisionPScaleS를 포함. P지정시 1~38까지 S지정시 -84~127의 범위.

(3) LONG:문자변수로 확장된 길이를 2GByte 또는 2^31-1까지 확장.

(4 )DATA:날자형 포함한 데이터 타입. ) Jan 1 4712BC - Dec 31 4712 AD

(5) RAW(size):크기가 255Byte까지 가능한 Binary 데이터.

(6) LONG RAW:크기가 Giga_Byte 데이터.

(7) ROWID:Table에서 행의 고유한 Address를 나타내는 16진 문자열.

(8) CHAR(size):1~255문자 사이의 길이를 갖는 영숫자 데이터.

(9) MLSLABLE:O/S Label의 이진형식.

'DB > Oracle' 카테고리의 다른 글

Oracle Database 기초 #4 - Functions  (0) 2022.03.25
Oracle Database 기초 #3 - Operators  (0) 2022.03.25
Oracle Database 기초 #1  (1) 2022.03.25
TNSPING 이용한 접속 테스트  (0) 2021.02.16
Index Rebuild  (0) 2020.10.05

SQL(Structured Query Language, pronounced equel)ORACLE D/B환경에서 사용자나 개발자가  자료접근을 위해 반드시

     사용해야 하는 명령들의 집단임.

     1. SQL 역사

       -. 관계형자료 모델은 1970대초 Dr.E.F.Codd에 의하여 처음으로 개발됨.

       -. SQL언어는 1970대 중반 IBMPototype Relational Database Managment System에 의해 발전됨.

       -. 최초의 SQL언어는 (SEQUEL2)1976 IBM Journal of R&D에 의해 소개되었고,

       -. 1979ORACLE사가 상업용으로 이용 가능한 SQL의 실행을 소개함.

       -. SQLIBMD/B2SQL/DS에서도 실행됨.

       -. 현재 SQL은 광범위한 실행과 산업 구조화된 자료접근 언어로 이용됨.

     2. SQL 표준

       -. ANSI SQL3.135-1989 Database Language SQL with Integrity Enhancement or ANSI SQL89relational database        

          managment system의 표준으로 정의.

       -. 이는 ANSI X3.135-1986을 대신함과 ANSI SQL Addendum1.에 소개된 무결성 강화를 내포함.

       -. ANSIANSI X3.168-1989 atabase Language Embeded SQL에 내장된 SQL의 정의를 표준으로 채택함.

       -. 거의 모든 관계형 자료시스템은 SQL형식을 제공하며 ANSI SQL89를 표준으로 사용함.      

     3. 비처리 언어

       -. SQL비처리 언어임.

       -. 동일 시간대의 하나보다 많은 레코드 처리

       -. 자료의 자동처리 제공

    4. 모든 사용자를 위한 언어

       -. SQL은 모든 종류의 사용자로부터 모든 종류의 자료활동에 이용.

       -. system administrators

       -. database administrators

       -. security administrators

       -. application programmers

       -. decision support system personnel

       -. many other types of end users

       -. SQL모든사용자에게 D/B구성이나 응용를 위한 명령문 제공.

  5. 통일된 언어

    - querying data

    - inserting, updating, and deleting rows in table

    - creating, replacing, altering, and dropping objects

    - controlling access to the database and its object

    - guaranteeing database consistency and integrity

  6. 내장된 SQL

    -. 모든 SQL명령은 SELET,INSERT와 같이 SQL환경하 상호작용 도구들 안에서 이용 가능.

    -. PREPARE and OPENcontrol명령으로 처리 프로그래밍 언어안에서 표준SQL을 수행.

    -. 응용프로그램에 의해 호출되어 어떤 작업을 수행할수 있는 데이터베이스에 내장된 내장 프로시져 작성을 의미.

    -. 데이타베이스에 내장된 데이타베이스 시스템은 간단한 스크린과 메뉴 오브젝트를 완전한 툴 키트를 제공.

'DB > Oracle' 카테고리의 다른 글

Oracle Database 기초 #3 - Operators  (0) 2022.03.25
Oracle Database 기초 #2 - Datatypes  (0) 2022.03.25
TNSPING 이용한 접속 테스트  (0) 2021.02.16
Index Rebuild  (0) 2020.10.05
자주쓰는 함수 정리 - 문자열 함수  (0) 2020.04.03


www.oracle.com 에 접속을 한뒤 아래 그림과 같이 메뉴를 따라가서 다운로드 페이지까지 이동합니다.




아래와 같은 페이지가 나오면 아래 붉은색 박스를 클릭하여 상세 화면으로 이동합니다. 





아래 라이센스 동의를 Accept를 선택하시고 붉은색 박스를 선택하면 로그인 과정을 거친후 다운로드 받을 수 있습니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE OR REPLACE FUNCTION SPLIT(P_INPUT_LIST VARCHAR2, P_RET_THIS_ONE NUMBER, P_DELIMITER VARCHAR2)
RETURN VARCHAR2
 
/*****************************************************************************************/
/* P_DELIMITER로 구분된 문자열을 구분하여 해당 INDEX의 값을 리턴하는 함수
/*
/* CREATE BY D.CAT 
/*****************************************************************************************/
IS
  V_LIST VARCHAR2(32767) := P_DELIMITER || P_INPUT_LIST;
  START_POSITION NUMBER;
  END_POSITION NUMBER;
BEGIN
  START_POSITION := INSTR(V_LIST, P_DELIMITER, 1, P_RET_THIS_ONE);
  IF START_POSITION > 0 THEN
    END_POSITION := INSTR( V_LIST, P_DELIMITER, 1, P_RET_THIS_ONE + 1);
    IF END_POSITION = 0 THEN
      END_POSITION := LENGTH(V_LIST) + 1;
    END IF;
    RETURN(SUBSTR(V_LIST, START_POSITION + 1, END_POSITION - START_POSITION - 1));
  ELSE
    RETURN NULL;
  END IF;
END SPLIT;
cs


10g 이상부터 가능

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

★ 오라클 정규식 사용 팁
Oracle 10g에서는 REGEXP_로 시작하는 함수를 지원합니다.
Regular Expression이라고 하죠~

 

1. REGEXP_LIKE
- LIKE 연산자와 유사하며, 표현식 패턴(Regular Expression Pattern)을 수행하여, 일치하는 값을 반환합니다.
- 문법 : REGEXP_LIKE(srcstr, pattern [,match_option])
- srcstr : 소스 문자열, 검색하고자 하는 값.

- pattern : Regular Expression Operator를 통해 문자열에서 특정 문자를 보다 다양한 pattern으로 검색하는 것이 가능.
- match_option : match를 시도할 때의 옵션. 찾고자 하는 문자의 대소문자 구분이 기본으로 설정. 대소문자를 구분할 필요가 없다면 'i' 옵션 사용을 지정한다.
[[:digit:]] : 숫자인 것.
[^[:digit:]] : 숫자가 아닌 것.

[^expression] : expression의 부정.

[ ] : []안에 명시되는 하나의 문자라도 일치하는 것이 있으면 나타냄.
- 예제 1

SELECT SSN
FROM test
WHERE REGEXP_LIKE(SSN, '[^[:digit:]]');

SSN
--------------------
******2229198
******2047888
******2349876

- 예제 2 : 제품의 이름 중에 'SS' 다음에 'P'를 포함하지 않은 문자열을 찾자.

SELECT product_name

FROM oe.product_information

WHERE REGEXP_LIKE(product_name, 'SS[^P]');

- 예제 3 : 제품 이름에 'SS' 다음 'P'나 'S'를 포함하는 문자열을 찾자.

SELECT product_name

FROM oe.product_information

WHERE REGEXP_LIKE(product_name, 'SS[PS]');

 

- 예제 4 : 메일 주소에 '@'이 포함되도록 설정.

ALTER TABLE customers

ADD CONSTRAINT cust_email_addr

CHECK(REGEXP_LIKE(cust_email, '@')) NOVALIDATE;

※ 참고 : 제약조건 해제

ALTER TABLE customers

DROP CONSTRAINT cust_email_addr;

 

 

2. REGEXP_SUBSTR
- SUBSTR 함수의 기능을 확장하였습니다. 주어진 문자열을 대상으로 정규 표현식 패턴을 수행하여, 일치하는 하위 문자열을 반환합니다.
- 문법 : REGEXP_SUBSTR(srcstr, pattern, [,position[,occurrence[,match_option]]])
- srcstr : 소스 문자열
- position : Oracle이 문자열에서 특정 문자를 어디에서 찾아야 하는지 위치를 나타냄. 기본으로 1로 설정되어 있으므로, 문자열의 처음부터 검색을 시작.
- occurrence : 검색하고자 하는 문자열에서 특정 문자의 발생 횟수. 기본으로 1로 설정되어 있으며, 이는 Oracle이 문자열에서 첫번째 발생 pattern을 찾는다는 의미.
- match_option : match를 시도할 때의 옵션
- 예제

SELECT REGEXP_SUBSTR(email, '[^@]+', 1, 1) AS "ID"
, REGEXP_SUBSTR(email, '[^@]+', 1, 2) AS "MailAddr"
FROM ( SELECT
'hellokitty@empal.com' email
FROM dual );


ID MailAddr
---------------------

hellokitty empal.com

 

 

3. REGEXP_REPLACE
- 주어진 문자열을 대상으로 정규 표현식 패턴을 조사하여, 다른 문자로 대체합니다.
- 문법 : REGEXP_REPLACE(srcstr, pattern [,replacestr[,position[,occurrence[,match_option]]]])
- replacestr : 대체하고자 하는 문자열을 나타냅니다.
- 예제 1 : 주민번호 뒷자리를 '*'로 표현

SELECT REGEXP_REPLACE(SSN, '[0-9]', '*', 7) AS "SSN"
FROM ( SELECT '7907051234567' SSN
FROM dual );

SSN
-------------
790705*******

- 예제 2 : 둘 이상의 공백 문자를 하나로 대체하여 가독성을 높이자.
SELECT REGEXP_REPLACE('Oracle is the Information Company', '( ){2,}', ' ') AS "Result"
FROM dual;


RESULT
-----------------------------------
Oracle is the Information Company
- 예제 3 : 전화번호의 표현 방식을 3자리, 3자리, 4자리로 묶어 식별력을 높이자.

SELECT REGEXP_REPLACE('555.123.4567','([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})','(\1) \2 - \3') AS "Result1"

FROM dual;

 

Result1

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

(555) 123 - 4567

-. [:digit:] : 숫자 값.
-. [:alpha:] : 문자 값.
-. [:alnum:] : 문자와 숫자를 함께 사용.

 

4. REGEXP_INSTR
- 정규 표현을 만족하는 부분의 위치를 반환합니다.
- 문법 : REGEXP_INSTR(srcstr, pattern [,position[,occurrence[,returnparam[,match_option]]]])
- position : 검색 시작 위치
- occurrence : 발생 횟수.
- returnparam : 반환 옵션.
- match_option : match를 시도할 때의 옵션.
-. 예제

SELECT REGEXP_INSTR('Regular Expression', 'a') AS "REGEXP_INSTR"
FROM dual;


REGEXP_INSTR
---------------
6

 

※ 참고 site

Oracle Database Documentation Library

http://www.oracle.com/pls/db10g/homepage

C Oracle Regular Expression Support

http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10759/ap_posix.htm

 

 

 

'DB > Oracle' 카테고리의 다른 글

DOS Mode (CMD) 창에서 Query 결과를 File로 Export  (0) 2014.06.04
SQLPLUS로 다른 네트워크에 접속하기  (0) 2014.06.04
오라클 케시 지우기  (0) 2014.06.04
오라클 엔터값 처리  (0) 2014.06.04
테이블 설계시 참고사항  (0) 2014.06.04

+ Recent posts