728x90
반응형
LIST

출처 : 스물 여섯, 일생의 터닝포인트로 만들기. | 시내서현

원문 : https://blog.naver.com/sinae_/120032248271

 

경고문에 XXXX.dll 이라고 뜰 경우 아래파일에서 찾아서

해당폴더에 다운받으시면 됩니다.

dll-files downloads


728x90
반응형
LIST
728x90
반응형
LIST

 

 "LISTERINE'S BLOG" | 짱아

 

일도, 취미도 모두 컴퓨터로 하는 요즘세대들.

장시간 앉아있으니 허리도 아프고, 어깨도 아프고 손목까지 아플때가 많죠.

저도 하루종일 모니터만 보고있어야 하는 직업이라 자세에 엄청 신경을 쓴답니다.

 

바른자세를 유지해야만 척추와 허리를 지킬 수 있습니다.

요 바른자세를 위해서는 적당한 책상높이, 의자높이, 모니터 높이 3박자가 맞아야 한답니다.

그림으로 살펴볼까요.

 

 

 

■ 컴퓨터 할 때 바른자세

 

▲▲▲

대략 그림만 봐도, 따라 앉을수 있겠죠?

여기서 중요한것은, 발 받침대가 있어야 한다는것.

의자높이는 쉽게 조정할 수 있는 반면, 책상높이는 조정이 불가능하기 때문입니다.

책상이 높을거나, 키가 작은사람의 경우에는 발받침대가 있어야지 바른자세를 유지할 수 있습니다^^

 


 

 

▲▲▲

이 사진도 같은 맥락이며, 눈과 모니터의 위치를 자세히 설명하기위해 올립니다.

모니터는 모니터 최상단의 높이가 눈높이와 비슷하면 됩니다.

즉, 모니터를 아래로 보는 시선이 가장 편하지요.

 

 

 

 

 

■ 의자에 앉을 때 바른자세

 

▲▲▲

컴퓨터 자세와 마찬가지로 엉덩이와 척추, 허리를 받쳐주는 의자여야하고.

컴퓨터자세와 조금 다른것은 컴퓨터자세보다 조금 더 비스듬한 허리입니다.

 

 

 

▲▲▲

상세한 설명.

 

 

------------------
여기까지 바른자세입니다!

컴퓨터 할 때 자세나, 의자에 앉을때 바른 자세나 둘다 비슷합니다.

제가 두가지 모두의 경우로 장시간 앉아 일해봤으나, 큰 차이는 없는듯하구요.

컴퓨터자세가 오히려 안정감이 있습니다.

착석시 바른자세로 유지하면 자꾸 몸이 루즈해진다고 할까...ㅎㅎ

여튼 바른자세! 꼭 꼭 신경쓰며 앉아야 겠죠.

 

 

 

 

 

■ 마우스 잡는법

 


▲▲▲

마우스를 올바르게 잡는 법입니다.

의외로 이런것을 모르고 컴퓨터 하는 분들이 많이 계시던데, 유의하시는게 좋습니다.

 

 

▲▲▲

이번엔 팔꿈치의 사진입니다.

보통 왼편의 자세로 많이 하시죠?

하다보면 자신도 모르게 팔이 저렇게 됩니다 ㅠ.ㅠ

RIGHT의 바른자세처럼 키보드와 마우스를 사용하기 위해서는 위에 언급된 컴퓨터 바른자세대로 앉으시면 됩니다.

그럼 저절로 자세가 저렇게 나오게 되지요.ㅎㅎ

 

 

▲▲▲

보너스

손목보호대의 중요성.

보통 마우스를 잘못 골라서 손과 손목이 아프기도하지만,

대부분은 마우스 손목보호대를 사용하지 않거나 잘못 사용하고 있는 경우가 많습니다.

 

그냥 여담인데, 저 브랜드의 손목보호대 엄청 좋습니다.

저도 이것저것 다 사서 써보고.. 안에 물?같은것 차있는거도 써보고, 일반 패드도 써보고, 천종류도 써봤는데요.

저 제품이 가장 맘에 들더군요. 일단 팔을 들었다 뗐다 할 필요없이 팔따라 움직입니다.

이거쓰고나서 손목통증 거의 다 나았음. 선물해준 분께 무지 감사했었드랬죠.

 

 

 

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

지금 이 포스팅을 보고계신 분들.

모두 자세를 고쳐 앉으셨겠죠?

마우스도 바로 잡으시고 손목보호대도 올바른것을 제대로 사용하고 있는지 확인해보세요.

 

저도 바른자세, 마우스잡는법, 손목보호대의 중요성을 모르고 살다가 병원신세를 지고나서 알았습니다.

처음엔 손이 아프더니, 그다음엔 손바닥, 손목, 팔목, 어깨까지 아프고나니 정신이 번쩍 들더라구요.

그때부터 한 1년간 자세교정을 위해서 부단히 노력했습니다 ㅠ.ㅠ

고쳐앉고 또 고쳐앉고, 마우스도 이거사보고 저거사보고... 별짓을 다 했네요.

 

습관이 건강을 좌우합니다.

먹고 마시는것만큼 이 자세도 중요하다는것 잊지마셔요.

 

끝~

728x90
반응형
LIST
728x90
반응형
LIST

윈도우 재설치하면 이전에 쓰던 폴더가 권한 문제로 삭제가 안되는 경우가 종종 있는데

그럴땐 커맨드창에 (삭제할 폴더가 D:\Test 폴더일 경우)

takeown /f "d:\Test" /r 
icacls "d:\Test" /grant Administrators:F /T



이렇게 쳐주면 뭔가 주루룩 지나가는데 그 담엔 해당 폴더 삭제하면 된다.

728x90
반응형
LIST
728x90
반응형
LIST

-- 여러가지 연산자들

 

between 1 and 10 -- 사이 값

sal IN(2, 3) -- 해당 레코드와 일치하는 것 

ename like '_S\%%' escape '\' -- 해당 문자가 포함된 레코드 검색

                                                %를 포함한 문자 검색시에 옵션 설정 가능

 

 

 

-- 숫자 관련 함수들

 

abs(-2) -- 절대값

mod(5,2) -- 나머지

sign(-2) -- 양, 음 판단

ceil(3.26) -- 소수점에서 올림

floor(3.26) -- 소수점에서 버림

round(3.26, 1) -- 해당 소수점에서 반올림

trunc(3.26, 1) -- 해당 소수점에서 버림

 

-- 문자 관련 함수들

upper/lower(ename) -- 대,소문자 변환

initcap(ename) -- 첫 글자만 대문자로 변환

concat(job,ename) -- 두 문자 값 연결

substr(ename, 1, 2) -- 해당 위치부터 지정된 만큼의 문자를 추출. -1위치는 뒤에서 추출

 

length(ename) -- 문자의 길이

ltrim/rtrim('abb ', 'a') -- 해당 방향에서 지정된 문자 제거

lpad/rpad('abb ', 5, 'a') -- 문자가 자리수를 만족하지 못한다면 해당 방향에서 지정된 문자로 채움

trim('S' from ename) -- 양쪽에서 지정된 문자열 제거

 

-- 날짜 관련 함수들

 

add_months(sysdate,2) -- 해당 날짜에 달수를 더함

months_between(sysdate, hiredate) -- 두 날짜의 차이

 

 

 

-- 형 변환 함수들

 

to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') -- 날짜형을 문자형으로 변환. 일반적인 형태

to_char(123456, 'L000,000,000') -- 숫자형을 문자형으로변환. 1의자리부터 맞추고 \형태로 0을 채움 

                                              0 대신 9로 채우면 알아서 잘라서 채움

to_number('5')-2 -- 문자형을 숫자형으로 변환

to_date(19810220, 'YYYYMMDD') -- 문자형을 날짜형으로 변환

 

 

-- 그 밖의 함수들

 

 

nvl(str, 'a') -- 해당 값이 NULL값이면 해당 지정된 문자 출력

 

-- NULL 값[정해지지 않은 값]을 넣는 세가지 방법

insert into emp(seq, str) values(2,NULL)

insert into emp(seq) values(2)

insert into emp(seq, str) values(2,'')

 

 

 

 

-- 조건 관련 함수

 

DECODE(to_char(hiredate, 'YYYY'),

'1980','과장',   '1981','대리',   '사원')

CASE to_char(hiredate, 'YYYY')

WHEN '1980' THEN '과장'   WHEN '1981' THEN '대리'   ELSE '사원'   END

-- CASE에서는 비교조건을 쓸 수 있음. NULL은 is NULL 형태로 기술

 

-- 그룹 함수

 

max(sal) -- 최소 값

min(sal) -- 최대 값

sum(sal) -- 합계

avg(sal) -- 평균

count(comm) -- NULL값을 제외한 개수

count(*) -- 총 개수

 

 

 

-- HAVING 절[그룹함수는 where절에 쓸 수 없기 때문에 씀(순서에 유의)]

select job, count(*)

from emp

where sal>500 and job !='PRESIDENT'

group by job -- select에 기술한 컬럼들은 반드시 group by절에 기술 되어 있어야 함

HAVING count(*)>2 -- 그룹의 결과를 제한할 때 쓰이며, 그룹함수를 적용한 컬럼이 조건으로 옴

order by job

 
 
728x90
반응형
LIST

'IT개발/정보 > DB ( Oracle )' 카테고리의 다른 글

Oracle 구조  (0) 2023.03.02
Oracle 개념  (0) 2023.03.02
테이블 스페이스 용량 자동 증가 및 추가하기  (0) 2021.12.26
ORACLE | 대형 데이터 관리 (LOB, BLOB, CLOB) with Java  (0) 2021.12.26
Object recompile  (0) 2021.12.26
728x90
반응형
LIST
OS : Windows Server2008
프로그램 및 버전 : Oracle11g

※ 주의사항 : 실제 적용을 위해서는 한번쯤 시험을 해보고 하시길...

1. 작업개요
   - 처음 테이블 스페이스를 생성할때 사이즈를 지정하고 데이터가 많아지다 보면 지정된 사이즈를 넘어서게 되고 그렇게 되면 DB가 멈춰 버린다. 이것을 방지하기위해 테이블스페이스 사이즈를 자동으로 증가할 수 있게 설정해줘야 하고, 만일 허용치(30G)가 넘어가려 한다면 데이터 파일을 새로 생성해줘야한다.

2. 작업내용
1) 테이블 스페이스 확인하기 : 현재 테이블스페이스의 총 사이즈와, 사용중인 사이즈, 남은 사이즈를 확인할 수 있음
SELECT A.TABLESPACE_NAME          TABLESPACE_NAME
            ,ROUND(A.BYTES,2)           TOT_SIZE
            ,ROUND((A.BYTES-B.BYTES),2) USE_SIZE
            ,ROUND(B.BYTES,2) FREE_SIZE
   FROM (SELECT B.TABLESPACE_NAME
                         ,SUM(B.BYTES)/1024/1024/1024 BYTES
                 FROM DBA_DATA_FILES B
               GROUP BY B.TABLESPACE_NAME
             ) A
            ,(SELECT A.TABLESPACE_NAME
                         ,SUM(A.BYTES)/1024/1024/1024 BYTES
                  FROM DBA_FREE_SPACE A
                 GROUP BY A.TABLESPACE_NAME
            ) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
ORDER BY 1
- 하나의 데이터파일 당 최고 값이 30G이므로 만일 TOTAL사이즈가 30G가 되어간다면 참고1) 을 참고하여 데이터파일을 새로 생성해 줘야 한다.

2) 테이블 스페이스가 자동으로 증가되도록 설정되어 있는지 확인하기
SELECT FILE_NAME, AUTOEXTENSIBLE FROM DBA_DATA_FILES
- AUTOEXTENSIBLE : YES이면 자동 증가, NO 이면 자동증가 아님

3) 테이블스페이스 사이즈 자동 증가하도록 설정하기
ALTER DATABASE DATAFILE ['데이터파일경로 및 파일명'] AUTOEXTEND ON NEXT [사이즈];
- 선택한 데이터파일을 자동으로 설정한 사이즈 만큼 증가한다.
ALTER DATABASE DATAFILE ['데이터파일경로 및 파일명'] AUTOEXTEND ON MAXSIZE [사이즈];
- 선택한 데이터파일이 설정한 사이즈까지 증가한다.

ex) ALTER DATABASE DATAFILE 'D:\MYDB\MY_DATA.ORA' AUTOEXTEND ON NEXT 100M;
ex) ALTER DATABASE DATAFILE 'D:\MYDB\MY_DATA.ORA' AUTOEXTEND ON MAXSIZE 30000M;

참고1) 
ALTER TABLESPACE [테이블스페이스명] ADD DATAFILE ['데이터파일경로 및 파일명'] SIZE [사이즈];
ex) ALTER TABLESPACE MYDB ADD DATAFILE 'D:\MYDB\MY_DATA.ORA' SIZE 10G;

3. 작업결과

- 만일 테이블스페이스 사이즈가 30G에 도달하여 참고1 작업을 진행하였다면, 1) 을 다시 실행하여 정상적으로 증가됐는지 확인한다.

 

 

출처 : http://www.happytomorrow.net/107

728x90
반응형
LIST

'IT개발/정보 > DB ( Oracle )' 카테고리의 다른 글

Oracle 개념  (0) 2023.03.02
SQL문에 쓰이는 함수 및 연산자들  (0) 2021.12.26
ORACLE | 대형 데이터 관리 (LOB, BLOB, CLOB) with Java  (0) 2021.12.26
Object recompile  (0) 2021.12.26
Tablespace 생성, 삭제  (0) 2021.12.26
728x90
반응형
LIST

1. LOB

 

- LOB은 TEXT, 그래픽, 이미지, 비디오, 사운드 등 구조화되지 않은 대형 데이터를 저장하는데 사용한다.

- 일반적으로 테이블에 저장되는 구조화된 데이터들은 크기가 작지만, 멀티미디어 데이터는 크기가 크다.

- 크기가 큰 데이터는 DB에 저장하기 힘들기 때문에 OS상 존재하는 파일을 데이터베이스가 접근하게 된다.

- LONG, LONG RAW 데이터 유형은 예전에 사용던 것이고, 현재는 대부분 LOB 데이터 유형을 사용한다.

- TO_LOB 함수를 이용하여 LONG 및 LONG RAW 를 LOB 으로 변경할 수 있다.

 

 

종류

   - CLOB: 문자 대형 객체 (Character). Oracle Server는 CLOB과 VARCHAR2 사이에 암시적 변환을 수행한다.

   - BLOB: 이진 대형 객체 (Binary). 이미지, 동영상, MP3 등... 

   - NCLOB: 내셔널 문자 대형 객체 (National). 오라클에서 정의되는 National Character Set을 따르는 문자.

   - BFILE: OS에 저장되는 이진 파일의 이름과 위치를 저장. 읽기 전용 모드로만 액세스 가능.

 

 

데이터베이스 내부, 외부에 따라

   - 내부 : BLOB, CLOB, NCLOB - Table에 LOB 형식의 컬럼을 생성하고 이곳에 데이터의 실제위치를 가리키는 Locator(위치자) 저장.

   - 외부 : BFILE

 

특징- 하나의 테이블에 여러 개의 LOB 열(column) 가능- 최고 4GB까지 저장- SELECT로 위치자 반환- 순서대로 또는 순서없이 데이터 저장- 임의적 데이터 액세스 LOB 구성- LOB 값 : 저장될 실제 객체를 구성하는 데이터- LOB 위치자 : 데이터베이스에 저장된 LOB값의 위치에 대한 포인터
 
 

2. 내부 LOB

  

- LOB값은 데이터베이스에 저장된다.

- 사용자 정의 유형 속성, 테이블의 열, 바인드 변수, 호스트 변수, PL/SQL변수, 파라미터 또는 결과

- 동시성 방식, 리두 로그 및 복구 방식, 커밋또는 롤백 트랜잭션 사용 가능

- BLOB 데이터 유형은 Oracle Server 내에서 비트 스트림으로 해석된다.

- CLOB 데이터 유형은 단일 바이트 문자 스트림으로 해석된다.

- NCLOB 데이터 유형은 데이터베이스 national character set 의 바이트 길이에 따라 멀티바이트 문자 스트림으로 해석된다.

 

내부 LOB 관리

- LOB 데이터 유형을 포함하는 테이블을 생성한 후 이를 채운다.

- 프로그램에서 LOB 위치자를 선언하고 초기화한다.

- SELECT FOR UPDATE를 사용하여 LOB이 포함된 행을 잠그고 해당 행 값을 LOB 위치자에 넣는다.

- LOB 위치자를 LOB값에 대한 참조로 사용하여 DBMS_LOB 패키지 프로시저, OCI호출, OLE용 오라클 객체, 오라클 선행 컴파일러 또는 JDBC를 통해 LOB을 조작한다.

- SQL을 통해서도 LOB 관리 가능(일부)

- COMMIT을 통해 변경사항 적용.

 

 

3. CLOB

 

lob_test1.sql

 

 

CREATE TABLE CAR (
        id      NUMBER(6) PRIMARY KEY NOT NULL,
        name    VARCHAR2(20),
        price   NUMBER(10),
        review  CLOB)
/



INSERT INTO CAR VALUES (100, 'SM7', 25000000, '삼성에서 나온 SM7을 타보니 정말 편안했다.')
/
INSERT INTO CAR VALUES (200, 'PORTER', 13000000, '역시 1톤트럭의 대표자!!')
/
INSERT INTO CAR VALUES (300, 'VERNA', 9000000, '싸고 좋은 거 같아용~^^*')
/
INSERT INTO CAR VALUES (400, 'SANTAFE', 33000000, EMPTY_CLOB())
/

 

 

- 테이블 생성시 CLOB 타입 컬럼을 선언하고, 데이터 입력.

- 따로 SIZE는 지정하지 않는다.

- EMPTY_CLOB() 함수는 위치자(Locator)를 아무 것도 없는 데이터로 초기화시킨다.

 

:: 출처 : http://hwanyc.tistory.com/267

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

1) import 시켜야할 API

 

① oracle.sql.BLOB

② oracle.sql.CLOB

③ oracle.jdbc.driver.OracleResultSet

 

2) CLOB

 

① DB에 CLOB 데이터형 쓰기

       // UPDATE 또는 INSERT 명령으로 DB 에 공간 확보
     String query = "UPDATE TABLE SET CLOB_DATA = EMPTY_CLOB() " ;
     stmt.executeUpdate(query);

     // 그런 다음 다시 요놈을 다시 SELECT
     query = "SELECT CLOB_DATA  FROM TABLE WHERE ~ " ;   

     stmt = dbConn.createStatement(); 
     rs = stmt.executeQuery(query);

     if(rs.next()) {
          CLOB clob = null;
          Writer writer = null;
          Reader src = null;
          char[] buffer = null;
          int read = 0;  

          clob = ((OracleResultSet)rs).getCLOB(1);         
          writer = clob.getCharacterOutputStream();

          // str -> DB에 넣을 내용
          src = new CharArrayReader(str.toCharArray()); 
          buffer = new char[1024]; 
          read = 0;
          while ( (read = src.read(buffer,0,1024)) != -1) { 
               writer.write(buffer, 0, read); // write clob. 
          }
          src.close();         
          writer.close();
     }

     dbConn.commit();
     dbConn.setAutoCommit(true);


 ② DB에서 CLOB 데이터형 읽기

 

 

      // SELECT
     String query = "SELECT CLOB_DATA  FROM TABLE WHERE ~ " ;   

     stmt = dbConn.createStatement(); 
     rs = stmt.executeQuery(query);

     if(rs.next()) {

          StringBuffer output = new StringBuffer(); 
          Reader input = rs.getCharacterStream("CLOB_DATA"); 
          char[] buffer = new char[1024]; 
          int byteRead = 0; 
          while((byteRead=input.read(buffer,0,1024))!=-1){ 
               output.append(buffer,0,byteRead); 
          } 
         

          // contents -> CLOB 데이터가 저장될 String
          String contents = output.toString();


     }

     dbConn.commit();
     dbConn.setAutoCommit(true);


 3) BLOB

① DB에 BLOB 데이터형 쓰기

      // UPDATE 또는 INSERT 명령으로 DB 에 공간 확보
     String query = "UPDATE TABLE SET BLOB_DATA = EMPTY_BLOB() " ;
     stmt.executeUpdate(query);

     // 그런 다음 다시 요놈을 다시 SELECT
     query = "SELECT BLOB_DATA  FROM TABLE WHERE ~ " ;   

     stmt = dbConn.createStatement(); 
     rs = stmt.executeQuery(query);

     if(rs.next()) {

          BLOB blob = null;
          BufferedOutputStream out = null;
          BufferedInputStream in = null;
          byte[] buf = null;
          int bytesRead= 0;  

          blob = ((OracleResultSet)rs).getBLOB(1);
          out = new BufferedOutputStream(blob.getBinaryOutputStream());

          // str -> DB에 넣을 내용
          in = new BufferedInputStream(new StringBufferInputStream(str));
          int nFileSize = (int)str.length();
          buf = new byte[nFileSize];
          
          while ((bytesRead = in.read(buf)) != -1){
               out.write(buf, 0, bytesRead);

          }

          in.close();
          out.close();
     }

     dbConn.commit();
     dbConn.setAutoCommit(true);


 ② DB에서 BLOB 데이터형 읽기

      // SELECT
     String query = "SELECT CLOB_DATA  FROM TABLE WHERE ~ " ;   

     stmt = dbConn.createStatement(); 
     rs = stmt.executeQuery(query);

     if(rs.next()) {

          BLOB blob = ((OracleResultSet)rs).getBLOB(1);

          BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());
          int nFileSize = (int)blob.length();
          byte[] buf = new byte [nFileSize];    
          int nReadSize = in.read(buf, 0, nFileSize);
          in.close();

           // contents -> BLOB 데이터가 저장될 String

          String contents = new String(buf);
     }

     dbConn.commit();
     dbConn.setAutoCommit(true);

출처 : Tong - 뚱뚱이총각님의 JAVA통

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

그다지 중요한건 아니지만, CLOB 사용법이 없는 듯해서 올립니다. 참고하시기 바랍니다.

*** CLOB type 에 insert 하는 부분입니다. ***
public void insertData(String key, String data){
    Connection con = null;
    PreparedStatement pstmt = null;
    try{
        con = ds.getConnection();
        pstmt = con.prepareStatement("insert into lobTbl values(?,?)");
        pstmt.setString(1, key);
        // 요기가 CLOB insert 하는 부분입니다. LONGVARCHAR 와 동일
        StringReader sr = new StringReader(data);
        pstmt.setCharacterStream(2, sr, data.length());

        pstmt.executeUpdate();
    }catch(SQLException se){
        se.printStackTrace();
    }finally{
        if(pstmt != null)
            try{pstmt.close();}catch(SQLException cs){cs.printStackTrace();}
        if(con != null)
            try{con.close();}catch(SQLException cs){cs.printStackTrace();}
    }
}

**** CLOB type select 하는 부분입니다. ****
while(rs.next()){
    Reader instream = rs.getCharacterStream("data");
    // create temporary buffer for read
    char[] buffer = new char[1024];
    // length of characters read
    int length = 0;

    // fetch data  
    while ((length = instream.read(buffer)) != -1)  {
        for (int i=0; i<length; i++){
            sb.append(buffer[i]);
        }
    }
    // Close input stream
    instream.close();
}

일반적인 Oracle 에서 CLOB 을 가져올 때는,

  CLOB clob = ((OracleResultSet)rs).getCLOB("data");

라는 형식으로 가져올 수 있습니다. 그러나 Weblogic6.1 의 테스트 결과 rs 가
weblogic.jdbc.rmi.SerialResultSet 이라는 객체형식으로 반환을 합니다. 그래서 위와같이
casting 하면 ClassCastException 이 발생합니다. 

  CLOB clob = ((SerialResultSet)rs).getCLOB("data");

하면 casting 은 문제가 없는데 CLOB 을 지원하지 않는다고 나옵니다. 그래서 위와같이
그냥 getCharacterStream 을 이용하면 됩니다.

조금이라도 도움이 되면 좋겠군요. 참고로 WebLogic 이 아닌 일반적인 Application 에서
Oracle 연결방식입니다.

while(rs.next()){
    System.out.println("key : " + rs.getString(1));
    CLOB clob = ((OracleResultSet)rs).getCLOB(2);
    // get character stream to retrieve clob data
    Reader instream = clob.getCharacterStream();
    // create temporary buffer for read
    char[] buffer = new char[1024];

    // length of characters read
    int length = 0;

    // fetch data  
    while ((length = instream.read(buffer)) != -1)  {
        for (int i=0; i<length; i++)     
            System.out.print(buffer[i]);
    }
    // Close input stream
    instream.close();
}
출처 : http://www.okjsp.pe.kr/seq/27800

728x90
반응형
LIST
728x90
반응형
LIST

Object 들 중에 STATUS 가 INVALID 인 것들을 재컴파일 해주는 과정이다. 

 

 DECLARE
    n_rowcount PLS_INTEGER := 0;
    n_rowcount2 PLS_INTEGER := 0;


    CURSOR cur_objects
    IS
        SELECT *
            FROM SYS.USER_OBJECTS
            WHERE  STATUS = 'INVALID'
AND OBJECT_TYPE IN ('PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY');
BEGIN
    LOOP
        n_rowcount2 := n_rowcount;
        n_rowcount := 0;
        FOR rec_objects IN cur_objects
        LOOP
            DBMS_DDL.ALTER_COMPILE(rec_objects.object_type,NULL,rec_objects.object_name);
            n_rowcount := cur_objects%ROWCOUNT;
        END LOOP;


        IF n_rowcount = 0 OR (n_rowcount = n_rowcount2) THEN
            EXIT;
        END IF;
    END LOOP;
END;
/

 

728x90
반응형
LIST
728x90
반응형
LIST

Tablespace

 - DBMS에 저장되는 자료가 있는 물리적인 파일.

 - 각 개체마다 테이블스페이스를 지정해 줄 수 있고, 사용자에게 기본으로 사용할 테이블스페이스를 지정할 수 있다.

 - 오라클에서는 기본적으로 /usr/local/oracle/oradata/[SID]/ 디렉토리에 기본 테이블스페이스를 생성하며,

    Oracle Express Edition에서는 /usr/lib/oracl/xe/oradata/XE/ 디렉토리에 기본 테이블스페이스를 저장한다.

 

 

 

테이블스페이스 생성

 테이블스페이스를 생성할 경우 여러 옵션이 사용될 수 있으나 테이블스페이스의 기본 용량을 자동으로 늘려주는

 옵션(autoextend) 등은 기본으로 사용하는 것이 편하다.

 
1
2
3
4
5
6
7
8
9
create tablespace 테이블스페이스명 (예: ts_jihyung)
 
datafile '테이블스페이스 파일 저장 경로 (예: D:/db/테이블스페이스명.dbf)'
 
size 파일 용량 (예: 50M)
 
autoextend on
 
extent management local autoallocate;
 
 

Temp 테이블스페이스 생성

Temp 테이블스페이스의 최소 용량은 1 MByte 이상이다. 그러므로 처음 생성시 2 MByte로 생성 한 뒤 자동증가 옵션을 사용한다

 
1
2
3
4
5
6
7
8
9
create temporary tablespace 테이블스페이스명 (예: ts_temp_jihyung)
 
tempfile 'Temp 테이블 스페이스 파일 저장 경로 (예: D:/db/Temp테이블스페이스명.dbf)'
 
size 파일 용량 (예: 2M)
 
autoextend on
 
extent management local;
 
 

 

테이블스페이스 삭제

 특별한 경우가 아니라면 테이블스페이스의 모든 내용을 자동으로 지우고 파일까지 깔끔하게 삭제할 수 있다.

 이 옵션이 바로 "including contents AND datafiles"이다.

 
1
2
3
4
5
drop tablespace 테이블스페이스명
 
including contents and datafiles
 
cascade constraints;

 

728x90
반응형
LIST
728x90
반응형
LIST
SELECT DBMS_METADATA.GET_DDL('TABLE','테이블명')
FROM USER_ALL_TABLES u
WHERE u.nested='NO' AND (u.iot_type is null or u.iot_type='IOT');
728x90
반응형
LIST
728x90
반응형
LIST
-- 해당 테이블에 대한 참조 테이블 및 프로시저, 함수 추출
 
SELECT * FROM USER_DEPENDENCIES WHERE REFERENCED_NAME = '테이블명' order by name;     -- 범위 : 접속중인 DB
 
SELECT * FROM DBA_DEPENDENCIES WHERE REFERENCED_NAME = '테이블명' order by name;     -- 범위 : 전체 DB
 
-- View 스크립트 추출
 
SELECT TEXT FROM USER_VIEWS WHERE VIEW_NAME='뷰이름'
728x90
반응형
LIST

+ Recent posts