반응형
반응형

데이터 베이스 시작

  • 1. 초기화 매개변수 파일 읽기

인스턴스를 시작하려면 Oracle 서버가 초기화 매개변수 파일을 읽어야합니다.

매개변수 파일에는 두가지 유형이 있습니다.

-PFile : 정적 매개변수 파일 initSID.ora 에 적혀있음

-SPFile : 동적 매개변수 파일 spfileSID.ora 에 적혀있음

초기화 매개변수 파일의 내용

- 인스턴스 매개변수 목록

- 인스턴스와 연관된 데이터베이스의 이름

- SGA 의 메모리 구조에 대한 할당

- 채워진 온라인 리드로그 파일로 수행하는 작업

- 제어 파일의 이름 및 위치

- 실행 취소 세그먼트 정보를 담고 있다.

 

  • 2.인스턴스 시작(NOMOUNT)

인스턴스는 데이터베이스 생성 또는 제어 파일의 재생성 동안에만 NOMOUNT 단계에서 시작됩니다.

인스턴트 시작할때의 작업은 오라클 홈 디렉토리에서 초기화 파일을 읽는다.

- 먼저 spfileSID.ora를 읽는다.

- 찾을수 없으면 spfile.ora를 읽는다.

- 그후 없으면 initSID.ora를 읽는다.

- SGA 할당

- 백그라운드 프로세스 시작

- alertSID.log 파일 및 추적 파일 열기

데이터베이스 이름은 초기화 매개변수 파일 또는 STARTUP 명령의 DB_NAME 매개변수를 사용하여 지정한다.

 

  •  3. 데이터베이스 마운트

특정 관리 작업을 수행하려면 인스턴스를 시작하고 OPEN하면 안되고 마운트 상태에서 진행 해야한다.

그 예로 , 데이터 파일 이름을 바꾸는 동안이나 리드 로그 아카이브 옵션을 활성화하고 비활성화하는 동안 에는 마운트 상태에서 진행 하여야 한다.

그리고 데이터베이스 마운트에는 이전에 시작한 인스턴스와 데이터베이스를 연관시키기, 매개변수 파일에 지정된 제어 파일 찾기 및 열기 , 데이터파일과 리드로그 파일의 이름 및 상태를 알기 위해 제어 파일 읽기 등이 포함된다.

 

  • 4. 데이터베이스 오픈

정상적인 데이터베이스 오픈이란 인스턴스가 시작되고 데이터베이스가 마운트되고 열리는것을 말하며 사용자가 데이터베이스에 접속하여 일반적인 데이터 액세스 작업을 수행할 수 있습니다.

 - 온라인 데이터 파일 열기

 - 온라인 리드로그 파일 열기

데이터베이스를 열 때 데이터 파일이나 온라인 리드로그 파일이 없으면 Oracle 서버는 오류를 반환합니다.

필요한 경우 시스템 모니터(SMON) 백그라운드 프로세스는 인스턴스 복구를 시작합니다.

반응형

'2019 > 학원' 카테고리의 다른 글

12.31 학원  (0) 2019.12.31
1.CentOS7에 오라클 설치  (0) 2019.12.30
12.30 학원  (0) 2019.12.30
12.26 학원  (0) 2019.12.26
12.24 학원  (0) 2019.12.24
반응형

오라클과 PHP 연동

- echo로 출력할 수 있는거

 *변수안에 있는 문자열

 

-fetch : 배열에 담는 행위

oci_fetch_all : 한번에 2차열배열을 다가져온다. 성능이 좋아 속도가 빠르지만 메모리를 많이 소모한다.

oci_fetch_ally : 한번엔 1차열 배열을 가져온다.

연동프로그램에서 가장 기본적인것은 SQL , 프로그램에 숙달 되야 한다.

insert, delete , alter 등 다해봐야한다.

 

oci_parse

- SQL문을 파싱한다.

- 오라클 접속 식별자를 반환한다.

oci_bind_by_name 

 - 이걸 사용하면 인젝션공격이 되지않는다.

 - 실행여부를 불리언 타입으로 반환한다

 

oci_execute : 파싱한걸 실행하는 함수 

oci_commit_on_success : 자동 커밋

bool empty : 변수가 NULL 인지 확인한다.

공통적으로 사용되는 파일은 '실행파일로 따로 만들어준다.

<html><head>
  <meta http-equiv="content-type" content="text/html; charset=euc-kr">
  <title> student 입력폼 </title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
  <form name="insert" action="st_in.php" method="POST">
    <center>
    <table  border="0" width="250">
    <tr>
      <td width="50"><p align="center">학번</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="sno"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">이름</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="sname"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">성별</p></td>
      <td>&nbsp;&nbsp;남<input type="radio" name="sex" value="남">,
                   여<input type="radio" name="sex" value="여"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">학과</p></td>
      <td>&nbsp;&nbsp;<select name="major" size="1">
        <option value="화학">화학</option>
        <option value="생물">생물</option>
        <option value="물리">물리</option>
        <option value="유공">유공</option>
        <option value="식영">식영</option></td>
      </tr>
      <tr>
        <td width="50"><p align="center">학년</p></td>
        <td>&nbsp;&nbsp;1<input type="radio" name="syear" value="1">,
          2<input type="radio" name="syear" value="2">,
          3<input type="radio" name="syear" value="3">,
          4<input type="radio" name="syear" value="4"></td>
        </tr>
        <tr>
          <td width="50"><p align="center">학점</p></td>
          <td>&nbsp;&nbsp;<input type="text" name="avr"></td>
        </tr>
        <tr>
          <td colspan="2">
            <p align="center"><input type="submit" name="확인" value="확인"></p>
          </td>
        </tr>
      </table>
    </form>
    <hr>
    <?php show_source(__FILE__); ?>
  </body>
  </html>

-student 테이블 입력 폼파일

<?php
  $sno = $_POST[sno];
  $sname = $_POST[sname];
  $sex = $_POST[sex];
  $major = $_POST[major];
  $syear = $_POST[syear];
  $avr = $_POST[avr];
  require('conn.php');
  $sql="insert into student (sno, sname, sex, major, syear, avr)
      values ('$sno', '$sname', '$sex', '$major', $syear, $avr)";
  $result=oci_parse($conn,$sql);
  $re=oci_execute($result);
  oci_free_statement($result);
  oci_close($conn);

  if($re)
  echo("정상 입력 되었습니다.");
  echo("<hr>");
  show_source(__FILE__);
?>

- student 테이블 php&oracle 연동 데이터 입력 파일

 

실습 - professor 테이블

<html><head>
  <meta http-equiv="content-type" content="text/html; charset=euc-kr">
  <title> professor 입력폼 </title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
  <form name="insert" action="pr_in.php" method="POST">
    <center>
    <table  border="0" width="250">
    <tr>
      <td width="50"><p align="center">교수번호</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="pno"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">이름</p></td>
      <td>&nbsp;&nbsp;<input type="text" name="pname"></td>
    </tr>
    <tr>
      <td width="50"><p align="center">학과</p></td>
      <td>&nbsp;&nbsp;<select name="section" size="1">
        <option value="화학">화학</option>
        <option value="생물">생물</option>
        <option value="물리">물리</option>
        <option value="유공">유공</option>
        <option value="식영">식영</option></td>
      </tr>
      <tr>
        <td width="50"><p align="center">직위</p></td>
        <td>&nbsp;&nbsp;정교수<input type="radio" name="orders" value="정교수">,
            부교수<input type="radio" name="orders" value="부교수">,
            조교수<input type="radio" name="orders" value="조교수">,
       </td>
      </tr>
      <tr>
        <td width="50"><p align="center">부임일</p></td>
        <td>&nbsp;&nbsp;1<input type="date" name="hiredate"></td>
        </tr>
        <tr>
          <td colspan="2">
            <p align="center"><input type="submit" name="확인" value="확인"></p>
          </td>
        </tr>
      </table>
    </form>
    <hr>
    <?php show_source(__FILE__); ?>
  </body>
  </html>

-professor 테이블 입력 폼파일

<?php
  $pno = $_POST[pno];
  $pname = $_POST[pname];
  $section = $_POST[section];
  $hiredate = $_POST[hiredate];
  $orders = $_POST[orders];
  require('conn.php');
  $sql="insert into professor (pno, pname, section, orders, hiredate)
      values ('$pno', '$pname', '$section', '$orders', to_date('$hiredate','YYYY/MM/DD'))";
  $result=oci_parse($conn,$sql);
  $re=oci_execute($result);
  oci_free_statement($result);
  oci_close($conn);

  if($re)
  echo("정상 입력 되었습니다.");
  echo("<hr>");
  show_source(__FILE__);
?>

-porfessor 테이블 php&oracle 데이터 입력 파일

date 타입의 values 값은 to_date 함수를 써야 하는것에 주의한다.

select 문 사용

 

-$result 에 실행한 문장이 넘어온다.

-출력 $row=oci_fetch_array ($result)

 1차원 배열로 $ row 안에 있는 행이 담긴다.

-oci_free_statement : 가지고 있던 데이터를 리셋

<?php
  echo("<a href=./st_in.html>자료 입력하기</a><hr>");
  require('conn.php');

  $sql="select sno,sname,sex,major,syear,avr
  from student order by sno";
  $result=oci_parse($conn,$sql);   
  oci_execute($result);
  while ($row = oci_fetch_array($result,OCI_NUM)){
    echo("$row[0]-$row[1]-$row[2]-$row[3]-$row[4]-$row[5] <br>");  }
  oci_free_statement($result);
  oci_close($conn);
?>

- student select 문장

 

<?php
  echo("<a href=./st_in.html>자료 입력하기</a><hr>");
  require('conn.php');

  $sql="select pno,pname,section,orders,hiredate
  from professor order by pno";
  $result=oci_parse($conn,$sql);
  oci_execute($result);
  while ($row = oci_fetch_array($result,OCI_NUM)){
    echo("$row[0]-$row[1]-$row[2]-$row[3]-$row[4] <br>");  }
  oci_free_statement($result);
  oci_close($conn);
?>

- professor select 문장

 

 

 


위에까지 사용한 select 문장은 컬럼이 너무 많으면 어떤데이터가 들어가는지 모른다.

그래서 배열의 첨자를 컬럼 이름으로 나오게한다.

<?
echo("<a href=./st_in.html>자료 입력하기</a><hr>");
  require('conn.php');
  $sql="select sno, sname, sex, major, syear, to_char(avr,'0.00') avr
  from student order by sno";
  $result=oci_parse($conn,$sql);
  oci_execute($result);
  echo("<table border='0'>");
  while ($row = oci_fetch_array($result, OCI_ASSOC)){
    echo("
          <tr>
            <td width='50'><p align='center'>$row[SNO]</p></td>
            <td width='80'><p align='center'>$row[SNAME]</p></td>
            <td width='20'><p align='center'>$row[SEX]</p></td>
            <td width='20'><p align='center'>$row[SYEAR]</p></td>
            <td width='50'><p align='center'>$row[MAJOR]</p></td>
            <td width='30'><p align='center'>$row[AVR]</p></td>
          </tr>
          ");
        }
      echo("</table>");
      oci_free_statement($result);
      oci_close($conn);
?>

- 개선된 st_vi select 문 소스코드이다.

<?
echo("<a href=./pr_in.html>자료 입력하기</a><hr>");
  require('conn.php');
  $sql="select pno, pname, section, orders, to_char(hiredate,'YYYY/MM/DD') hiredate
  from professor order by pno";
  $result=oci_parse($conn,$sql);
  oci_execute($result);
  echo("<table border='0'>");
  while ($row = oci_fetch_array($result, OCI_ASSOC)){
    echo("
          <tr>
            <td width='50'><p align='center'>$row[PNO]</p></td>
            <td width='80'><p align='center'>$row[PNAME]</p></td>
            <td width='50'><p align='center'>$row[SECTION]</p></td>
            <td width='50'><p align='center'>$row[ORDERS]</p></td>
            <td width='50'><p align='center'>$row[HIREDATE]</p></td>
          </tr>
          ");
        }
      echo("</table>");
      oci_free_statement($result);

-개선된 pr_vi select문 소스코드이다.

 

 


 

오라클

-파라미터 파일은 임의로 지정할수없다.

: 이름,위치 그대로 있어야한다.

  읽기전 다른거를 안읽기 때문에 어디있는지 모른다.

  위치는 oracle_home/dbs 에 있어야한다.

 파라미터 파일은 두가지로 분류된다.

Pfile, SPfile . 둘 중 우리는 Pfile은 사용하지않고 SPfile만 쓴다.

인스턴스가 여러가지 있기때문에 이름이 필요하다.

 

  • SPfile

날짜 출력 포맷을 우리는 변경해 봤다. nls_date_format 같은게 파라미터 파일이다.

SPfile은 보거나 바로 만들수 없다.그렇기 때문에 일단 Pfile을 먼저만들고 내용을 똑같이 SPfile을 만들수 있다.

그 후 Pfile의 위치를 바꾸거나 Pfile을 삭제한다. Pfile과 SPfile이 같은 위치에 존재하면 시스템이 작동하지 않는다.

 

alter system set 으로 파라미터에 있는 값을 수정한다.

옵션이 세가지

spfile : spfile 수정

memory : memory만 수정

both : 다바꾼다.

 

nomount 상태에서 mount로 올라가기위해선

alter database mount

mount 에서 open 으로 올라가기위해선

alter database open이다.

startup 의 기본값은 open 옵션은 nomount, mount 이 있다.

shut down - ABORT정전났을때 오류를 잡아준다 IMMEDIATE 제대로 죽이는것 

               | TRANSACTIONAL 백그라운드프로세서가 살아있을땐안죽는다.

 

 

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

3장.ORACLE 셧다운부터 스타트업까지의 과정  (0) 2019.12.31
1.CentOS7에 오라클 설치  (0) 2019.12.30
12.30 학원  (0) 2019.12.30
12.26 학원  (0) 2019.12.26
12.24 학원  (0) 2019.12.24
반응형

목차

 

1.  설치 환경

1) 설치할 VMware에 리눅스 설치 사양 및 관리계정, 그룹생성

2) 리눅스 설정

3) Ora12c 계정설정

 

2. 오라클 설치

1) 설치할 패키지 준비

2) 패키지 실행

 

3. 오라클 네트워크 설정

1) 오라클 네트워크 구성

2) 리스너 구동

오라클설치

1. 설치 환경

 

 

1) VMware에 리눅스 설치 사양 및 관리계정 ,그룹생성

-CentOS7 최소 사양

memory : 2GB

processors : 1

Hard Disk : 60 GB

- oracle 관리 계정 및 그룹생성

groupadd -g 1200 dba
useradd -g dba -u 1200 ora12c
passwd ora12c

mkdir -p /app/ora12c
chown -R ora12c.dba /app

 

2)리눅스 설정

-  vi /etc/hosts    # 이 파일은 오라클서버의 아이피와 그에따른 도메인을 지정하고있다.

................

192.168.10.194 DB12.itclass.co.kr DB12

192.168.10.194 ora12c.itclass.co.kr ora12c

 

- vi /etc/security/limits.conf   

#수정한 내용은 새로접속해야 적용된다. ora12c가 하드/소프트로 열거나 생성하는것을 설정한다.

 #oracle setup 

ora12c                soft    nproc          2047 

ora12c                hard    nproc          16384 

ora12c                soft    nofile         1024 

ora12c                hard    nofile         65536 

ora12c                soft    stack          10240 

ora12c                hard    stack          20480

 

- vi /etc/sysctl.conf

 #오라클을 설치할때에 커널 파라미터값을 설정해준다.

 #Oracle12c setup

 kernel.shmmni = 4096

 kernel.sem = 250 32000 100 128

 kernel.msgmnb = 65536

 kernel.msgmni = 2878

 kernel.shmmni=4096 

net.ipv4.ip_local_port_range = 9000 65500

 net.core.rmem_default=4194304 

net.core.rmem_max=4194304 

net.core.wmem_default=262144 

net.core.wmem_max=1048576 

fs.file-max=6815744 

fs.aio-max-nr=1048576

 

 

- sysctl -p  #sysctl.conf 에서 설정한 설정을 반영시킨다.

 

 

-방화벽 & selinux 제거

 

[root@ora12c /]# vi /etc/selinux/config   ←  selinux 사용을 정지한다.
................. 

................ 

# SELINUX=enforcing SELINUX=disabled           

................. 

................

[root@ora12c /]# ntsysv           ←  방화벽을 정지한다.

-추가 패키지 설치

# 오라클에서 제공한 리눅스 설치 매뉴얼에 따라 필요한 패키지를 적어놨다.

오라클을 설치하기전에 다운받아야한다. 

yum -y install compat-libcap1 

 yum -y install compat-libstdc++-33 

 yum -y install libstdc++-devel

 yum -y install gcc

 yum -y install gcc-c++ 

 yum -y install ksh 

 yum -y install libaio-devel

 

3) Ora12c 계정설정

- vi .bash_profile

# 이전의 설정이나 추가 설치는 모두 root 계정에서 수행했지만 다음의 설정은 ora12c 계정 즉 설치된 오라클의 관리계정에서 수행한다.

특히 ORACLE_BASE, ORACLE_HOME, ORACLE_SID, TNS_ADMIN 등은 오라클을 운영하는데 매우 중요한 설정이므로 주의한다.

export ORACLE_HOSTNAME=DB12.itclass.co.kr       

export TMP=/tmp                                     

export TMPDIR=$TMP 

export ORACLE_OWNER=ora12c 

export ORACLE_BASE=/app/ora12c   

export ORACLE_HOME=/app/ora12c/12c 

export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME:/usr/bin 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib 

export ORACLE_SID=DB12        

export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949 

export ORACLE_TERM=xterm 

export TNS_ADMIN=$ORACLE_HOME/network/admin

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export EDITOR=vi

if [ $USER = "ora12c" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

                ulimit -p 16384

                ulimit -n 65536

        else

                ulimit -u 16384 -n 65536

        fi

fi


리부팅후 

ora12c 계정으로 재로그인해서 설정을 확인한다.

[ora12c@ora12c ~]$ env | grep ORACLE 

ORACLE_OWNER=ora12c 

ORACLE_SID=DB12 

ORACLE_BASE=/app/ora12c 

ORACLE_HOSTNAME=DB12.itclass.co.kr 

ORACLE_TERM=xterm 

ORACLE_HOME=/app/ora12c/12c 

 

2. 오라클 설치

 

1) 설치용 패키지 준비

오라클 홈페이지에서 윈도우로 다운후 리눅스에 ftp로 보냈다.

/app 디렉토리로 옮긴다음 압축해제 unzip linuxx64_12201_database.zip

설치 파일은 database 디렉토리에 생성된다.

다운받은 파일은 unzip을 이용 압축을 풀어준다.

압축을 해제하면 database 디렉토리가 생성된다.

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

[ora12c@ora12c app]$ unzip linuxx64_12201_database.zip 

[ora12c@ora12c app]$ ls 

database   ora12c

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

 

2)패키지 실행

지금부턴 putty에서 원격 접속으로 실행할 순 없고 Xwindow창에서 실행이 가능하다.

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

[ora12c@ora12c app]$ cd database 

[ora12c@ora12c database]$ ./runInstaller   ← installer를 실행한다.installer에 i 를 대문자로 안하면 실행이안된다. 

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

데이터 베이스 생성 및 구성. 컨트롤 파일, 데이타 파일, 리드로그파일을 만든다는 얘기 이걸로 설치하면된다. 
기본적으로 설정되는 창에서 문자는 OS로케일 전역 데이터베이스 이름설정 후 컨테이너 데이터베이스로 생성을 취소 시켜주었다.
위에 까지 제대로 따라했다면 실행중 이런창이 뜰것이다.

 

orainventory에 스크립트를 실행했다
똑같이 root.sh의 스크립트 실행
오라클설치가 안전하게 완료되었다.

 

 

3. 오라클 네트워크 설정

 

1) 네트워크 구성

 

- listener.ora 파일의 구성

 

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DB12.itclass.co.kr)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
 (SID_LIST =
 (SID_DESC =
 (SID_NAME = DB12)
 (ORACLE_HOME = /app/ora12c/12c)
 )
 )

 

- Default 리스너명은 listener이다.

- HOST : 데이터 베이스 서버의 호스트명이나 IP 주소

- PORT : TCP port 번호

- SID_NAME : 인스턴스 이름

 

- lsnrctl 명령어 구성

$ lsnrctl [옵션] 
 - 옵션
start : 리스너를 시작한다.
stop : 리스너를 종료한다.
status : 리스너의 상태를 출력한다.(listener.ora 파일의 내용을 확인 할 수 있다.)
reload : listener.ora를 다시 읽는다.

 2) 리스너 구동  

 lsnrctl start 명령어 실행 장면

[ora12c@ORACLE ~]$ lsnrctl start

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 22-JAN-2020 10:17:19

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /app/ora12c/12c/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /app/ora12c/12c/network/admin/listener.ora
Log messages written to /app/ora12c/diag/tnslsnr/ORACLE/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ORACLE)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DB12.itclass.co.kr)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                22-JAN-2020 10:17:21
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /app/ora12c/12c/network/admin/listener.ora
Listener Log File         /app/ora12c/diag/tnslsnr/ORACLE/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ORACLE)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "DB12" has 1 instance(s).
  Instance "DB12", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

 #위 와 같이 나오면 리스너가 잘 구동 된것이다. 잘안됬을때는 /etc/hosts 파일과 listener.ora파일에 문법적 오류가 있는지 확인해본다.

 

 

 

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

3장.ORACLE 셧다운부터 스타트업까지의 과정  (0) 2019.12.31
12.31 학원  (0) 2019.12.31
12.30 학원  (0) 2019.12.30
12.26 학원  (0) 2019.12.26
12.24 학원  (0) 2019.12.24
반응형

PHP 함수

-알고리즘이 꼬여서 자주 바꿔줘야 하는 사람들이 자주 사용하는것이 함수를 사용하는 것 이다.

 

1.함수

function 함수명 (매개변수, ..)
{
 실행 구문;
 [return 반환값];
 }

매개변수 : 함수에서 실행할 값.

가능하면 return 값이 있는게 좋다.

 

function usum($a, $b) 
{
  $s = $a + $b;
  return $s;
  }

 제대로 만들어진 함수 

 

프로그램한테 함수를 일단 만들어서 알려줘야한다.

function usum($a, $b)    // $a와 $b는 지역변수이면서 형식인자 또는 가상 변수라 한다.
{
$s = $a + $b;  return $s;
}  
$i=1; $j=2;
$k = usum($i,$j);     // $i와 $j는 실질인자라 한다.
echo("\$k = $k");

 전역변수는 굉장히 않좋기 때문에 잘사용하지않는다.

 

예제 1.

<?php 
 function usum($k)
  {
    $s=  0;
    for($i = 1; $i <= $k; $i++){
      $s = $s + $i;
    };
    return $s;
  }

  $a = 150;
  $b = usum($a);
  echo("1에서 {$a}까지의 합은 {$b}입니다.");
?>

 

예제2.

<?php
  function ex($a,$b)
  {
    $tmp = $a;
    $a = $b;
    $b = $tmp;

    echo("a ={$a}, b= {$b}입니다.<br>");
  }

  $a = 1;
  $b = 2;

  ex($a,$b);
  echo("a= {$a}, b={$b}입니다.");
  ?>

예제3.

<?
  function pri($i)
    {
          for($j = 2; $i % $j != 0; $j++){
              }
               if($i == $j)
                    return 1;
              else
                    return 0;
                    }

  $num = $_POST["num"];
  $n = 0;
  $s = 0;

  for($i = 2; $n < $num; $i++ ){
            if(pri($i)){
                         echo("$i  ");
                         $s = $s + $i;
                         $n++;
                       }
                  }
  echo("<br>
        소수의 개수는 {$n}개입니다.<br>
        소수의 합은 {$s}입니다.");
?>

 

<html>
<head>
<title>04.html 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html: charset=euc-kr">
</head>
<body>
<form method="post" action="04.php">
  A : <input type="text" name="num"><br>
    <input type="submit" name="확인" value="확인">
    <input type="reset" name="취소" value="취소"><br>
</form>
<hr>
<?php show_source(__FILE__); ?>
</body>
</html>

-html 폼파일

 

예제4.

<?php
function ar2d(&$ar)
{
  $row = count($ar);
  echo("<table border='1'>");
  for($i = 0; $i <= ($row-1); $i++){
    echo("<tr>");
    $column = count($ar[$i]);
    for($j = 0; $j <= ($column-1); $j++){
      echo("<td width='84' align='center'> {$ar[$i][$j]} </td>");
    }
      echo("</tr>");
    }
    echo("</table>");
  }
  $k = 0;
  for($i = 0; $i <= 4; $i++){
    for($j = 0; $j <= $i; $j++){
      $k = $k+1;
      $ar[$i][$j] = $k;      }
    }
  ar2d($ar);
  ?>

 

#### php 를 이용한 DB접속

 

- oci_connect : ID PW TNS 명 입력

- sql 생성 : $sql

- oci_parse : 파싱이 두단계로 나눠짐

- oci_bind_by_name :SQL 구문 실행

- oci_execute 

- oci_fetch_array

- oci_fetch_all

- oci_free_statement

- oci_close

 

 

 

 

 

 

 

 

resource oci_connect ( string $username , string $password [, string $connection_string [, string $character_set [, int $session_mode ]]] )

오라클 접속할때 필요한것.

 

접속 식별자등의 내용을 tnsnames.ora 파일에 저장해둔 경우에 다음과 같이 TNS명을 이용해서 접속 프로그램을 작성 할 수 있다.

tnsnames.ora 파일을 사용할 수 없는 경우에 아래와 같이 접속 정보를 직접한는 방법이 있앋. 특히 접속에 장애가 많이 발생하는 경우 장애 테스트 때마다 tnsnames.ora

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

12.31 학원  (0) 2019.12.31
1.CentOS7에 오라클 설치  (0) 2019.12.30
12.26 학원  (0) 2019.12.26
12.24 학원  (0) 2019.12.24
12.23 학원  (0) 2019.12.23
반응형

PHP

첨자를 자동으로 지정하게 배열을 짠다.

요소가 -5개면 0-4까지 지정된다.

 

폼을 이용해서 값을 입력받아야한다. 

 

a1, a2, a3, a4, a5

 

$ar [0] = POST_[a1]

$ar [1] = POST_[a2]

$ar [2] = POST_[a3]

$ar [3] = POST_[a4]

$ar [4] = POST_[a5]

 

for ($i=0; $i<=4;$i++){

  -- $ar [$i]

}

 

실습 1.

 

 

 

 

 

 

<table>

 <tr>-> 행

  <td>..</td>열

  <td>..</td>열

  <td>..</td>열

  <td>..</td>열

  <td>..</td>열

</td>

<tr>

  <td>..</td>열

  <td>..</td>열

  <td>..</td>열

  <td>..</td>열

  <td>..</td>열

</td>

</table>

- 2행 5열 표

 

 


 

ORACLE

1.shared pool : 2개로 구성되어 있다

 - library cache

= 수행한 모든 문장이 여기 다 저장되어있다.

   이전에 세운 실행 계획도 여기 저장되어 있다.

   쿼리문에서 조건문은 다른 문장으로 인식된다. (해쉬코드로 바뀌어서 저장된다.)

   조건문은 다 같은 문장으로 인식되게 하는 기능이 secure coding 이다.

                         LRU 알고리즘

 - Data dictionary cache

= 튜닝 못하니 건드리지 마라!

   딕셔너리에 관한 정보들.

1.2 백그라운드 프로세스

DBWR(디비라이터)

- 데이터베이스버퍼 캐시에 있는 내용을 데이터 베이스에 기록하는 일을한다. 우리 말을 안듣는다.

- 디비라이터가 꽉찼을경우 내려쓴다.

LGWR(로그라이터)

- 사용자가 commit 이나 rollback 을 끝마치면 넘어간다.

CKPT(체크포인트)

- 체크포인트 이벤트가 발생하면 디비라이터, 로그라이터를 동시에 움직이게 만든다.

PMON(피몬)

- 메모리를 돌아다니면서 좀비 프로세서들을 죽여준다.

SMON(에스몬)

- 인스턴스 장애 (컴퓨터가 갑자기 꺼지는현상) 일때 리드로그파일보고 자동으로 복구를 해준다. 

- 이런 기능을 인스턴스 리커버리라고 한다.

 

파라미터파일(매개변수)

 : 오라클의 파라미터값이 들어가 있는 파일이다.

컨트롤 파일, 라이브러리 캐쉬가 얼마줄지 데이터베이스 버퍼캐쉬 얼마줄지 등등..

 

패스워드파일 

 : 관리자가 원격으로 접속할때 이파일안에 패스워드가 저장되어 있어야 접속할 수 있다.

 

SHUTDOWN

- 다꺼진 상태

NOMOUNT

- 메모리 인스턴스가 올라간상태 

MOUNT

- 컨트롤 파일을 읽어서 데이터 베이스의 물리적인 정보를 알게되고 쉐어드 풀에 저장한다.

- 데이터 베이스가 망가지면 마운트 단계에서 다 수정한다.

OPEN

-실제로 사용할 수 있게 데이터 베이스 파일과 리드로그 파일을 오픈하는데 이걸 오픈단계라고 한다. 

 

 

올라갈때 명령어

Start up nomount, mount, open

ALTER database mount, open

내려갈때 명령어

shutdown

 

SPFILE

spfilesid.ora

-binary file :이진파일 

-maintained by the oracle server

 

 

 

프로그램 글로벌 영역 또는 PGA(프로세스 글로벌 영역)는 데이터를 포함하고 단일 서버 프로세스 또는 단일 백그라운드 프로세스의 정보를 제어하는 메모리 영역입니다. PGA는 프로세스가 생성될 때 할당되고 프로세스가 종료될 때 할당이 해제됩니다. 여러 프로세스 가 공유하는 SGA와 달리 PGA는 단 하나의 프로세스가 사용하는 영역입니다. 

반응형

'2019 > 학원' 카테고리의 다른 글

1.CentOS7에 오라클 설치  (0) 2019.12.30
12.30 학원  (0) 2019.12.30
12.24 학원  (0) 2019.12.24
12.23 학원  (0) 2019.12.23
보안 영역 구성을 위한 로컬 라우터 구현  (0) 2019.12.20
반응형

PHP

for ( 초기식; 조건; 증감식) {

         실행문;

}

- 조건이 참인 동안 실행문을 반복 실행한다.

- 초기식은 맨 처음 한번만 실행된다.

- for문은 반복횟수를 구체적으로 확인 가능함으로 반복문 중에 가장 가독성이 좋다. 즉 가장 많이 사용한다.

for($a = 1; $a <= 10; $a++)
	echo(" {$a}<br> ");

- 첫문장만 읽으면 for문이 몇번이나 수행되는지 알 수 있다.

 

-값두개를 입력해서

 

예제.1 입력한값의 사이값들의 합

 

-html 문장 

<html>
<head>
<title>3-1f.html 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html: charset=euc-kr">
</head>

<form method="post" action="3-1f.php">
  A : <input type="text" name="num1"><br>
  B : <input type="text" name="num2"><br>
    <input type="submit" name="확인" value="확인">
    <input type="reset" name="취소" value="취소"><br>
</form>
</html>

-PHP문장

<?
  $num1 =$_POST["num1"];
  $num2 =$_POST["num2"];
  if($num1 > $num2){
    echo("
          <script>
          window.alert('$num1 보다 큰값을 입력하세요');
          history.go(-1);
          </script>
          ");
      exit;
  }
  $sum = 0;
  echo ("A= {$num1} , B = {$num2}");
  echo ("<br>");
  for(; $num1 <= $num2; $num1++){
    $sum = $sum + $num1;
  }
  echo(" A 에서 B 까지의 합은 {$sum}입니다.");
  echo("<hr>");
  show_source(__FILE__);
?>

 

예제2.A와 B 사이값 모두 출력

-html문장

<html>
<head>
<title>01.html 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html: charset=euc-kr">
</head>

<form method="post" action="01.php">
  A : <input type="text" name="num1"><br>
  B : <input type="text" name="num2"><br>
    <input type="submit" name="확인" value="확인">
    <input type="reset" name="취소" value="취소"><br>
</form>
</html>

-php문장

<?
  $num1 =$_POST["num1"];
  $num2 =$_POST["num2"];
  if($num1 > $num2){
    echo("
          <script>
          window.alert('$num1 보다 큰값을 입력하세요');
          history.go(-1);
          </script>
          ");
      exit;
  }
  echo ("A= {$num1} , B = {$num2}");
  echo ("<br>");
  for(; $num1 <= $num2; $num1++){
    echo(" {$num1} ");
  }
  echo("<hr>");
  show_source(__FILE__);
?>

 

 

 


배열

배열의 이름 -> $ar

$ar[1] = 'abc';

$ar[2] = 'def';

$ar[3] = 'ghi';

 

 index or key , 첨자. - 숫자, 문자열

 

$row[sno] = 'SO1009';

$row[sname] = '관우';

$row[syear] = 4;

 

 첨자가 숫자인것은 = 스칼라 배열

 첨자가 문자인것은 = 연관 배열

 

$ar1 = array(1,2,3);

$ar2 = array(3 => "abc", 4 => "def","ghi");

$ar3 = array("a" => "ab" , "k" => "a2" . 0=>23);

 

 

 


오라클

오라클은 두가지 구조로 나눈다.

-인스턴스와 데이터베이스

-오라클을 구성하는 가장 기본요소

오라클을 종료하면 메모리에서 인스턴스가 없어짐.

Startup 을 하게 되면 메모리에 인스턴스가 생김.

sqlplus로 유저 프로세스가 서버 프로세스로 들어감.

서버프로세서가 명령을 수행하기 전에 3가지 단계를 거친다.

 

1. 문장에 오타가 있는지 검사한다.

2. 문장에 있는 컬럼과 테이블이 있는지 딕셔너리에서 확인한다.

3. 실행계획을 만든다. - (풀테이블 스캔, 인덱스 스캔을할지)

 

-이 단계를 파싱이라고 부른다.

 

실제로 파스율은 0.1%정도 밖에 안되고, 원래 있던 데이터를 출력한다.

 

데이터 베이스:

  피지컬 스트럭쳐

  전부다 하드 디스크에 있는것들이다.

  파일로 구성되있고, 3가지로 구성

 -데이터 파일 :

 이때까지 수업시간에 만들었던 모든것 (ex. 시퀀스, 테이블, 뷰, 인덱스 ) 여기 속한다.

 데이터 베이스를 변경시키는 모든것-트랜젝션 

 트랜젝션 되는것(트랜젝션 엔트리) 은 -리드 로그파일에 모두 기록됨.

 기록되는 이유 :작업일지가 잘못되면 어떤것이 잘 못된것인지 알아야 되기때문.

 리드로그파일은 다 저장 아카이브로그 파일 

 -컨트롤 파일 : 

 - 

 

 

인스턴스 : 

 오라클 스타트업 하면 메모리에서 생성

 오라클이 꺼지면 메모리에서 삭제

 SGA + 백그라운드 프로세서 (PMON, SMON, DBWR, LGWR, CKPT ...)

 PMON - 프로세서 모니터

 SMON - 시스템 모니터

 DBWR - DB writer

 LGWR - LOG writer

 CKPT - CHECK point

위의 프로세스 중 하나만 죽어도 작동 불가

 

SGA

 -shared pool 

 -database buffer cashe : 우리가 작업하는 작업장 모든일을 하는곳

 -redo log buffer : 

 

get : 원하는게 있는지 없는지 찾아 보는 기능

hit : 메모리에 원하는게 있을때 - hit 비율이 높을수록 좋타

miss : 메모리 찾아볼때 원하는게 없을떄

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

12.30 학원  (0) 2019.12.30
12.26 학원  (0) 2019.12.26
12.23 학원  (0) 2019.12.23
보안 영역 구성을 위한 로컬 라우터 구현  (0) 2019.12.20
물리적보안통제  (0) 2019.12.20
반응형

오라클 centos 설치

  • 권장사항

메모리 -2 기가

프로세스 -1

하드 -60 기가

스왑공간 - 4 기가(메모리의 두배)

네트워크 - 브릿지

루트로 설치가 불가능 하기때문에 유저 계정으로 들어가만든다

설치 계정 : ora12c

소속 그룹 : dba

홈 디렉토리 : /home/ora12c

oracle_base 는 /app/ora12c 에 만듬

 

- etc/hosts 

: DB12, ora12c 도메인 설정

 

사용자이름 제한방식 리소스이름 용량사용

 

-nproc 한번에 띄울수있는 프로세서 양

-nofile 한번에 열수 있는 파일 갯수

-stack stack 이란 메모리 갯수

 

/etc/sysctl.conf = 윈도우에 레지스트리 에디터와 같은것, 커널파라미터와같음

sysctl -p

 

selinux - disabled

ntsysv -방화벽 제거

yum -추가 패키지설치

 


실습

- centos7 리눅스 에 권장사항을 주고 설치를 했다.

oracle base 디렉토리로 사용될 계정의 이름과 비번, 그룹을 설정해준다. 

groupadd -g 1200 dba
useradd -g dba -u 1200 ora12c
passwd ora12c

계정을 만들고 오라클 베이스가 만들어질 디렉토리를 만들고 퍼미션을 변경해 사용할 수 있게 만든다.

mkdir -p /app/ora12c
chown -R ora12c.dba /app
chmod -R 755 /app

리눅스에 /etc/hosts 파일 설정을해준다.

 

 

 


사용자 계정 만들기

1. 오라클 관리자로 접속

os 인증 - os에서 보안과정을 거치기 때문에 들어갈때 관리자 권한이 쉽다.

 

테이블 스페이스- 테이블이 만들어지는 물리적인 영역

system, sysaux, undotbs1,temp 는 특별한 용도로사용

users 만 클라이언트가 사용가능하다.

 

connect resource = roll : 여러가지 권한이 포함되어 있음.

grant connect, resource, createview

 

2. 계정만들기

SQL>CREATE USER st14
 IDENTIFIED BY st14
 DEFAULT TABLESPACE users
 TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;

st14 계정을 만들어줬다.

 GRANT connect, resource, create view TO st14;

st14 계정에 접속과 뷰, 리소스를 만들 권한을 준모습.

성공적으로 st14계정으로 sql에 접속하는걸 볼 수 있다.

 

 


오라클 네트워크 설정

 

lsnrctl 

listener.ora- 서버쪽 파일

shutdown immediate - 오라클 데이터베이스 끄기.

start up - 오라클 데이터베이스 시작.

실습

 te 계정만들기 te/te

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

12.26 학원  (0) 2019.12.26
12.24 학원  (0) 2019.12.24
보안 영역 구성을 위한 로컬 라우터 구현  (0) 2019.12.20
물리적보안통제  (0) 2019.12.20
12.19 학원  (0) 2019.12.19
반응형

네트워크 실습.docx
0.43MB

 

 

 

반응형

'2019 > 학원' 카테고리의 다른 글

12.24 학원  (0) 2019.12.24
12.23 학원  (0) 2019.12.23
물리적보안통제  (0) 2019.12.20
12.19 학원  (0) 2019.12.19
12.18학원  (0) 2019.12.18

+ Recent posts