반응형

◎ 초기화 파라미터(Initial Parameter)

 : 오라클 서버가 운영하기 위해, Instance를 메모리에 할당해야하는데 이를 위한 초기화 파라미터 가 필요하다.
   대표적인 초기화 파라미터로 PFile과 SPFile 이 있다.

 8i 이전에는 SPfile은 없고 PFile 만 있었다. 즉, 오라클 인스턴스(SGA+부가)를 생성하기 위해서는 인스턴스의 사이즈, 향후 SQL문이 들어왔을때 물리 데이터 베이스로 부터 데이터를 끌어올리는 버퍼의 크기 등등 인스턴스 설정파일이 필요한데 그것이 파라미터파일(PFile)인 것이다.

근데... 이게 설정바꾸면 계속 db를 껐다 켜야지만 인식이 되는 문제가 있었다. 그래서 8i이후부터는 SPFile 이라고 서버내에 2진 파일로 만들어두고 명령문으로 설정을 변경할 수 있도록 한 것이다. 8i이후부터는 그래서 오라클 설치하면 SPFile은 기본 탑재되어있다.

 

 Start up      ->      nomount      ->      mount                ->                    open
       (PFile or SPFile)       (Control File)      (data file & redo log file)

 

위 순서는 Oracle Database의 Startup 과정을 설명한 것이다. 위에서 보듯이 Startup 상태에서 nomount 상태로

가기 위해서는 PFile 또는 SPFile을 읽어들이는 과정이 있다.

nmount = 오라클 인스턴스 생성이 완료된 상태임.

그렇다면 PFile과 SPFile의 하는 역할에 대해서 알아보도록 하자.

 

(1) PFile (Parameter File)

     - 오라클을 startup 할때 필수적인 파라미터 들이 정의되어있는 기본 설정파일이다.

     - Text 형태로 구성되어있으며, OS 레벨에서 수정이 가능하다.
       (단 수정 후 Database를 재시작해야 적용된다.)

     - ALTER 문으로 수정했을 경우에는, 현재 인스턴스 에만 반영이 될 뿐, 실제 물리적인 파일에는 반영이 되지 않아

       추후 재부팅시에는 적용이 되지 않는다.

 

   1) 최초 Oracle Install 후 현재 PFile의 위치 확인방법

      : 아래와 같이 spfile만 나오면 현재 DB는 spfile설정을 읽어들여 nomount된 상태임.

     SQL> show parameter pfile;
     NAME                                 TYPE                   VALUE
     ------------------------------------ ---------------------- ------------------------------
     spfile                               string                 C:\ORACLE\PRODUCT\11.2.0\DBHOM
                                                                    E_2\DATABASE\SPFILEORCL.ORA

 

 

  2) PFile 생성방법

     : Pfile은 SPFile로부터 생성할 수 있음.(만약 설치 후 SPFile로 구동되고 있다면, PFile은 SPFile로부터 만들 수 있음)

   SQL> create pfile='D:/initPfile.ora' FROM spfile='C:\ORACLE\PRODUCT\11.2.0\DBHOME_2
            \DATABASE\SPFILEORCL.ORA';
   파일이 생성되었습니다.

 

 3) 생성된 PFile 확인방법

orcl.__db_cache_size=1258291200
orcl.__java_pool_size=33554432
orcl.__large_pool_size=16777216
orcl.__oracle_base='C:\oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=1325400064
orcl.__sga_target=1979711488
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=637534208
orcl.__streams_pool_size=0
*.audit_file_dest='C:\oracle\admin\orcl\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='C:\oracle\oradata\orcl\control01.ctl','C:\oracle\flash_recovery_area\orcl\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='C:\oracle\flash_recovery_area'
*.db_recovery_file_dest_size=4102029312
*.diagnostic_dest='C:\oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.local_listener='LISTENER_ORCL'
*.memory_target=3298820096
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'

 

 (2) SPFile (Server File)

     - 9i 부터 새롭게 추가됨.  - 2진 Binary 파일로 구성되어 OS 레벨에서 Edition이 불가능 하다.
       (만약 수정하고 싶으면 , Pfile로 변환하여 수정 해야 한다)
     - SPFile은 한번 생성되면 Oracle 구동중에도 Instance를 끄지 않고도 동적으로 반영할 수 있다.

     ※ SPFile 이 생겨나게 된 이유?( WHY? )

         기존 PFile의 경우, 내부 설정을 바꾸기 위해서는 os레벨에서 editing 후, Instance에 적용시키기 위해 Database를

         restart 해야하지만, SPFile이 생긴 후로 Alter system set ?parameter? = ?value? 의 형식으로 SQL을 실행함으로써

         매번 재시작해야하는 번거로움을 줄여준다.(관리상의 편의성이 증대됨)

 

    1) 최초 Oracle Install 후 현재 SPFile의 위치 확인방법

     : 위 Pfile과 동일함.

  SQL> show parameter spfile;
  
  NAME                                 TYPE                   VALUE
  ------------------------------------ ---------------------- ------------------------------
  spfile                               string                 C:\ORACLE\PRODUCT\11.2.0\DBHOM
                                                              E_2\DATABASE\SPFILEORCL.ORASQL> show parameter

 

   2) SPFile 내부 설정 변경방법

    : Alter 문을 이용하여 동적으로 초기화 파라미터를 수정할 수 있다.

   SQL> ALTER system set ?parameter? = ?value? scope = memory|spfile|both
    -- 별도 예제는 하지 않겠음.

    ※ Scope에 대한 설명

    memory : 현재 구동중인 Instance에는 적용시키지만, 별도 초기화 파라미터에는 기록하지 않는다.(한시적임)

    spfile : 메모리에는 적용시키지 않고 초기화 파라미터 파일에만 적용하여, 다음 번 Instance 재가동시 적용시킨다.

    both : 현재 인스턴스에도 적용시키고, 추후 Instance가 재기동 되었을때에 바로 적용할 수 있도록 초기화 파라미터

             파일도 수정함.

 

   3) SPFile 직접 수정방법(OS레벨에서 Edtiong 하는 방법)

      : 구지 SPfile을 OS레벨에서 수정하기 위해서는 Pfile로 변경후 OS레벨에서 Editing 후 SPFile로 다시금 변환
        하는 과정을 거쳐야 한다.

 

   4) SPFile 생성방법

   SQL> create spfile='C:\ORACLE\PRODUCT\11.2.0\DBHOME_2\DATABASE\SPFILEORCL.ORA';   
            FROM  pfile='D:/initPfile.ora'
   파일이 생성되었습니다.

    : 위와 같이 실행하면 됨.

 

(3) 초기화 파라미터 파일 실행 구동 순서

 - 만약 PFILE과 SPFILE둘다 가지고 있는 경우 아래와 같은 순서대로 구동된다.

   ⓐ spfileSID.ora (특정 인스턴스의 SPFile = force 옵션으로 아규먼트로 준 spfile)
   ⓑ 기본 SPFile (show parameter spfile 했을때의 값)
   ⓒ initSID.ora(특정 인스턴스의 PFile = force 옵션으로 아규먼트로 준 spfile)
   ⓓ 기본 PFile 을 읽어드린다. (show parameter pfile 했을때의 값)

반응형
반응형

오라클 공부를 시작한지 얼마되지 않아 나의 습관대로 , 용어를 미리 공부하려 한다.

 

OTN SITE를 뒤지던중 Materialized View 라는 단어를 발견하게 되었다.

 

이것에 대해서 공부한 내역을 적어보도록 하겠다.

 

(1) Materialized View 란?

 

: 흔히 MView 라고 불리는 이것은, 일반적인 DBMS에서 말하는 View하고는 조금 개념이 틀리다. 사전의 의미를

  찾아보면 Materialized(구체화되어있는) View 라는 뜻이다. 즉, 일반적인 View하고는 다르게, 실제 물리적인 테이블이

  존재하여 메모리상에만 존재하는 View와는 달리 HDD에 데이터 영역을 할당한다는 의미이다.

 

Wiki depia에 보면 아래와 같이 영어로 적혀있다.

A materialized view is a database object that contains the results of a query. For example, it may be a local copy of data located remotely, or may be a subset of the rows and/or columns of a table or join result, or may be a summary based on aggregations of a table's data. Materialized views, which store data based on remote tables, are also known as snapshots. A snapshot can be redefined as a materialized view.

 

(해석)

: MView는 쿼리의 결과를 포함하고 있는 Database 오브젝트이다. 예를들어 서로다른 물리적공간에 저장된 데이터의 LOCAL COPY 데이터 , 조인된 결과 또는 테이블의 컬럼 이나 로우의 일부, 테이블 데이터의 요약된 정보 가 Mview로 저장된다. 테이블 단위로 저장되는 Mview는 snapshots 이라는 용어로 불려지기도 한다. snapshot은 MView를 정의한 또다른 용어이다.

: 영어가 맞는지 모르겠다. 아~~ 영어 공부 해야겠군. 흠....

 

하여튼 결론적으로 MView에 대해서 몇 마디 더 적어보자면 9i 이전까지는 snapshot이란 용어로도 불려졌으나, 이제는

MView 라는 용어로 불려지고 있따.

 

(2) Mview와 일반 View의 차이점 ?

 

: 위의 내용을 읽으신 분들은 차이점에 대해서 어느정도 이해가 가실 거라 생각되지만, MView와 일반 View의 차이점에

대해서 알아보도록 하자.

 

     가장 큰 차이점은 MView의 경우 물리적으로 Table의 형태로 저장하는 것이고, 일반 View는 그렇지 않다는 것이다. 

     일반 View의 경우 , 자주 사용하는 Query에 대해서, Dictionary 에 저장하고 있기 때문에, 다시금 재 실행되는 경우

     일반 SQL로 조회하는 것 보다 조금 빠를 뿐, 물리적인 DB의 데이터를 조회하는 ROW수는 같다.      

     그러나 MView의 경우, 자주 사용하는 SQL에 대한 결과SET을 물리적인 Table에 저장해 두는 것이기 때문에

     실제 조회되는 ROW수 자체가 줄어들어 보다 빠른 속도 효과를 느낄 수 있다.

 

휴~ 문법적인 것까지 MView에 대해서 알아 보고 싶지만, 우선 개념을 익히는 단계에서 그만두도록 하겠다.

 

지금까지 MView에 대한 설명이었다.

 

                                                                                                - 2013.05.16 랑이씀 -

반응형
반응형

부동소수점은 우리가 알고 있는 primitive type의 형중에서


산술연산에 있어서 각 언어마다 매번 혼돈을 일으키고 있는 요소이다.


이런 부동소숫점 연산의 문제점이 무엇인지 한번 적어보도록 하자.



(1) Javascript에서의 부동소수점 연산 오류

아래와 같은 코드가 있다고 가정하자, 출력물을 바로보도록 하자. 흠.. 에러의 원인은 나도 잘모르겠다.





위 코드의 결과화며은 아래와 같다.




위와 같이 출력되는 원인은 컴퓨터는 부동소숫점(float, double)에 대해서, 정확한 값을 리턴하지 못하고, 


리턴 하기 때문에 정확한 연산을 할 수 없다.


(2) Java 에서의 부동소수점 연산 오류

Java 에서도 (1)과 같이 부동소수점 오류가 발견된다. 아래 코드를 실행해 보도록 하자.

public class AA {

	public static void main(String argsp[]) {
		System.out.println(2.0 - 1.1);
	}
}

위 코드의 결과는 다음과 같다.



※ 그렇다면, Java 에서는 위 문제점을 해결하기 위해 어떻게 해야하는것인가?

    추후, 별도 Blog posting을 하겠지만, BigDecimal 을 사용하면 깔끔하게 해결이 된다.



위처럼.. 예상했던 결과와는 다른 결과가 출력됨을 확인할 수 있다. 만약에 ~ 통계페이지와 같이 소숫점 하나


하나가 매우 중요한 페이지의 결과물을 처리한다고 가정하였을때에는,, 어떻게 해야할까?


충분히 생각해 볼만한 문제인듯하다.



ps: 추가적으로 시간날때마다 타 언어에서 자료형의 산술연산의 오류를 찾아보도록 하자.



반응형
반응형

JavaScript Dom에서 사용하는 정규식에 대해서 정리를 한번 해보려 한다.


(1) 정규식 사용 Pattern


var regex = '/Pattern/Flag';   or var regex = new RegExp("Pattern","Flag");

==>요 형식으로 정규식을 최초 선언한다.


※ 주의사항은 new 키워드를 사용할 경우에는 escape 문자를 \\로 두개를 붙여 주어야 한다.

ex ) '|' 란 문자를 표현하기 위해서는??


var regex = '/\/' or var regex = new RegExp("/\\|/","") 


(2) 정규식의 Flag의 종류

 - 위의 글에서 표현한 플래그의 종류에 대해서 알아보도록 하자.


 g 옵션

 Global Pattern 찾기 , 즉, 패턴에 맞는 문자를 모두 찾는 것이다. 

 i 옵션

 Ignore Case 찾기, 즉 대소문자를 무시하고 찾는 것이다. 

 m 옵션

 Multiline 찾기, 여러줄 에서 정규식 문자열을 찾는 것이다. 


(3) 정규패턴식에서 자주 사용하는 Pattern의 종류

ㅇㅇ

반응형

+ Recent posts