0.TEST환경

  • 1개의 vmwere 에서 TEST함
  • 이전에 보낸 문서는 2개의 vmwere를 이용하여 TEST함.

       

1.TSET서버는 Archive 설정

  • Test서버는 Archive 설정이 않 되어 있어서 우선 alter system switch logfile; 을 3번정도 먼저 실행함.

       

SYS> Alter system switch logfile ;

System altered.

   

SYS> Alter system switch logfile ;

System altered.

   

SYS> Alter system switch logfile ;

System altered.

  

   

   

2.Hot backup 받기

   

  • 현재 backup 상태확인!!

    SYS>

    SYS> SELECT * FROM V$BACKUP;

       

    FILE# STATUS CHANGE# TIME

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

    1 NOT ACTIVE 550922 2012-05-27 14:14:30

    2 NOT ACTIVE 550943 2012-05-27 14:14:49

    3 NOT ACTIVE 550928 2012-05-27 14:14:33

    4 NOT ACTIVE 550937 2012-05-27 14:14:46

    5 NOT ACTIVE 550948 2012-05-27 14:14:52

    6 NOT ACTIVE 0

       

    6 rows selected.

       

  • Tablespace 이름 별로 begin~end 를 걸어주어야 함!!

       

    SYS> alter tablespace system begin backup;

       

    Tablespace altered.

       

    SYS> alter tablespace sysaux begin backup;

       

    Tablespace altered.

       

    SYS> alter tablespace users begin backup;

       

    Tablespace altered.

       

    SYS> alter tablespace undotbs1 begin backup;

       

    Tablespace altered.

       

    SYS> alter tablespace example begin backup;

       

    Tablespace altered.

       

    SYS> alter tablespace TS_AFS begin backup;

       

    Tablespace altered.

       

  • 컨트롤 파일과 HOT backup(데이터파일 리두로그 파일 이동) -> 현재 ACTIVE 상태확인! -> 파일 이동이 끝니면 모두 end 해주어야함.

       

    SYS>

    SYS> alter database backup controlfile to '/home/oracle/control01.ctl';

       

    Database altered.

       

    SYS>

       

       

    SYS> SELECT * FROM V$BACKUP;

       

    FILE# STATUS CHANGE# TIME

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

    1 ACTIVE 551993 2012-05-27 14:29:55

    2 ACTIVE 552010 2012-05-27 14:30:04

    3 ACTIVE 551999 2012-05-27 14:29:58

    4 ACTIVE 552004 2012-05-27 14:30:01

    5 ACTIVE 552016 2012-05-27 14:30:08

    6 ACTIVE 552022 2012-05-27 14:30:11

       

    6 rows selected.

       

  • 파일 이동 /u01/oradata/test

       

    ocp@orcl : /u01/oradata/orcl> ls

    arch1 control03.ctl redo02.log system01.dbf undotbs01.dbf

    control01.ctl example01.dbf redo03.log temp01.dbf users01.dbf

    control02.ctl redo01.log sysaux01.dbf ts_afs.dbf

    ocp@orcl : /u01/oradata/orcl>

    ocp@orcl : /u01/oradata/orcl>

    ocp@orcl : /u01/oradata/orcl> cp *.log /u01/oradata/test

    ocp@orcl : /u01/oradata/orcl>

    ocp@orcl : /u01/oradata/orcl> cp *.dbf /u01/oradata/test

       

    backup creuser.sql orcl_start.sh

    ocp@orcl : /home/oracle>

    ocp@orcl : /home/oracle> mv control* /u01/oradata/test

    ocp@orcl : /home/oracle>

       

    ocp@orcl : /home/oracle> cd /u01/oradata/test

    ocp@orcl : /u01/oradata/test> ls

    control01.ctl redo02.log system01.dbf undotbs01.dbf

    example01.dbf redo03.log temp01.dbf users01.dbf

    redo01.log sysaux01.dbf ts_afs.dbf

    ocp@orcl : /u01/oradata/test>

    ocp@orcl : /u01/oradata/test>

       

  • Hot backup을 완료.

       

    SYS> SELECT * FROM V$BACKUP;

       

    FILE# STATUS CHANGE# TIME

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

    1 ACTIVE 551993 2012-05-27 14:29:55

    2 ACTIVE 552010 2012-05-27 14:30:04

    3 ACTIVE 551999 2012-05-27 14:29:58

    4 ACTIVE 552004 2012-05-27 14:30:01

    5 ACTIVE 552016 2012-05-27 14:30:08

    6 ACTIVE 552022 2012-05-27 14:30:11

       

    6 rows selected.

       

    SYS> alter tablespace system end backup;

       

    Tablespace altered.

       

    SYS> SELECT * FROM V$BACKUP;

       

    FILE# STATUS CHANGE# TIME

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

    1 NOT ACTIVE 551993 2012-05-27 14:29:55

    2 ACTIVE 552010 2012-05-27 14:30:04

    3 ACTIVE 551999 2012-05-27 14:29:58

    4 ACTIVE 552004 2012-05-27 14:30:01

    5 ACTIVE 552016 2012-05-27 14:30:08

    6 ACTIVE 552022 2012-05-27 14:30:11

       

    6 rows selected.

       

    SYS>

       

    SYS> alter tablespace sysaux end backup;

       

    Tablespace altered.

       

    SYS> alter tablespace users end backup;

       

    Tablespace altered.

       

    SYS> alter tablespace undotbs1 end backup;

       

    Tablespace altered.

       

    SYS> alter tablespace example end backup;

       

    Tablespace altered.

       

    SYS> alter tablespace TS_AFS end backup;

       

    Tablespace altered.

       

    SYS> SELECT * FROM V$BACKUP;

       

    FILE# STATUS CHANGE# TIME

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

    1 NOT ACTIVE 551993 2012-05-27 14:29:55

    2 NOT ACTIVE 552010 2012-05-27 14:30:04

    3 NOT ACTIVE 551999 2012-05-27 14:29:58

    4 NOT ACTIVE 552004 2012-05-27 14:30:01

    5 NOT ACTIVE 552016 2012-05-27 14:30:08

    6 NOT ACTIVE 552022 2012-05-27 14:30:11

       

    6 rows selected.

       

  • 로그파일 및 컨트롤 파일, 데이터파일 위치 확인

       

    SYS>

    SYS> select * from v$logfile;

       

    GROUP# STATUS TYPE

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

    MEMBER

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

    IS_

    ---

    3 ONLINE

    /u01/oradata/orcl/redo03.log

    NO

       

    2 ONLINE

    /u01/oradata/orcl/redo02.log

    NO

       

    1 ONLINE

    /u01/oradata/orcl/redo01.log

    NO

       

       

    SYS> select member from v$logfile;

       

    MEMBER

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

    /u01/oradata/orcl/redo03.log

    /u01/oradata/orcl/redo02.log

    /u01/oradata/orcl/redo01.log

       

    SYS> select * from v$controlfile;

       

    STATUS

    -------

    NAME

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

    IS_ BLOCK_SIZE FILE_SIZE_BLKS

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

       

    /u01/oradata/orcl/control01.ctl

    NO 16384 430

       

       

    /u01/oradata/orcl/control02.ctl

    NO 16384 430

       

       

    /u01/oradata/orcl/control03.ctl

    NO 16384 430

       

       

    SYS>

    SYS> select name from v$datafile;

       

    NAME

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

    /u01/oradata/orcl/system01.dbf

    /u01/oradata/orcl/undotbs01.dbf

    /u01/oradata/orcl/sysaux01.dbf

    /u01/oradata/orcl/users01.dbf

    /u01/oradata/orcl/example01.dbf

    /u01/oradata/orcl/ts_afs.dbf

       

    6 rows selected.

     

  • Scott 유저의 현재 데이터 상태확인

       

    SYS> conn scott/tiger

       

    Connected.

    SCOTT> SCOTT>

    SCOTT> select table_name from user_tables;

       

    TABLE_NAME

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

    DEPT

    EMP

    BONUS

    SALGRADE

       

    HOT backup 완료

       

       

3.Scott 유저에 데이터 추가

  • HOT backup recovery 전/후를 보기 위해서!!

       

    SCOTT>

    SCOTT> select table_name from user_tables;

       

    TABLE_NAME

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

    DEPT

    EMP

    BONUS

    SALGRADE

    REGIONS

    LOCATIONS

    DEPARTMENTS

    JOBS

    EMPLOYEES

    JOB_HISTORY

    JOB_GRADES

    COUNTRIES

       

    12 rows selected.

       

    SCOTT>

       

4.Alter system switch logfile

   

SYS>

SYS> Alter system switch logfile ;

   

System altered.

   

SYS> Alter system switch logfile ;

   

System altered.

   

SYS>

   

   

  • 해당 아카이브도 backup 후 같은 위치에 옮기기.(initSID.ora 설정 확인)

       

5.기존의 datafile들 삭제

   

ocp@orcl : /u01/oradata>

ocp@orcl : /u01/oradata> mv orcl orcl.bak

ocp@orcl : /u01/oradata> ls

badcmdfile.rcv flash_recovery_area goodcmdfile.rcv orcl.bak test

ocp@orcl : /u01/oradata>

ocp@orcl : /u01/oradata>

ocp@orcl : /u01/oradata> cd test

ocp@orcl : /u01/oradata/test> ls

control01.ctl example01.dbf redo03.log temp01.dbf users01.dbf

control02.ctl redo01.log sysaux01.dbf ts_afs.dbf

control03.ctl redo02.log system01.dbf undotbs01.dbf

ocp@orcl : /u01/oradata/test>

   

   

6./u01/oradata/orcl->/u01/oradata/test로 복구

   

  • InitSID.ora 컨트롤 파일 및 아카이브 위치 변경

       

    <변경 후>

    *.control_files='/u01/oradata/orcl/control01.ctl','/u01/oradata/orcl/control02.ctl','/u01/oradata/orcl/control03.ctl'

    <변경 전>

    *.control_files='/u01/oradata/test/control01.ctl','/u01/oradata/test/control02.ctl','/u01/oradata/test/control03.ctl'

    <아카이브 위치도 맞쳐주기>

    *.log_archive_format='orcl_%t_%s_%r.arc'

    *.log_archive_dest_1='location=/home/oracle/backup/archive'

       

  • Startup -> 에러 해결

       

    SYS> startup

    ORACLE instance started.

       

    Total System Global Area 167772160 bytes

    Fixed Size 1218316 bytes

    Variable Size 75499764 bytes

    Database Buffers 88080384 bytes

    Redo Buffers bytes

    Database mounted.

    ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

       

    SYS> alter database open resetlogs;

    alter database open resetlogs

    *

    ERROR at line 1:

    ORA-01157: cannot identify/lock data file 1 - see DBWR trace file

    ORA-01110: data file 1: '/u01/oradata/orcl/system01.dbf'

       

  • 각 데이터파일의 위치를 재지정해줌.

       

    SYS> ALTER DATABASE RENAME FILE '/u01/oradata/orcl/system01.dbf' to '/u01/oradataSYS> ALTER DATABASE RENAME FILE '/u01/oradata/orcl/system01.dbf' to '/u01/oradataALTER DATABASE RENAME FILE '/u01/oradata/orcl/system01.dbf' to '/u01/oradata/test/system01.dbf';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/sysaux01.dbf' to '/u01/oradata/testALTER DATABASE RENAME FILE '/u01/oradata/orcl/sysaux01.dbf' to '/u01/oradata/test/sysaux01.dbf';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/example01.dbf' to '/u01/oradata/tesALTER DATABASE RENAME FILE '/u01/oradata/orcl/example01.dbf' to '/u01/oradata/test/example01.dbf';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/temp01.dbf' to '/u01/oradata/test/tALTER DATABASE RENAME FILE '/u01/oradata/orcl/temp01.dbf' to '/u01/oradata/test/temp01.dbf';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/users01.dbf' to '/u01/oradata/test/ALTER DATABASE RENAME FILE '/u01/oradata/orcl/users01.dbf' to '/u01/oradata/test/users01.dbf';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/undotbs01.dbf' to '/u01/oradata/tesALTER DATABASE RENAME FILE '/u01/oradata/orcl/undotbs01.dbf' to '/u01/oradata/test/undotbs01.dbf';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/ts_afs.dbf' to '/u01/oradata/test/tALTER DATABASE RENAME FILE '/u01/oradata/orcl/ts_afs.dbf' to '/u01/oradata/test/ts_afs.dbf';

       

    Database altered.

       

    SYS> SYS>

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/redo01.log' to '/u01/oradata/test/rALTER DATABASE RENAME FILE '/u01/oradata/orcl/redo01.log' to '/u01/oradata/test/redo01.log';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/redo02.log' to '/u01/oradata/test/rALTER DATABASE RENAME FILE '/u01/oradata/orcl/redo02.log' to '/u01/oradata/test/redo02.log';

       

    ALTER DATABASE RENAME FILE '/u01/oradata/orcl/redo03.log' to '/u01/oradata/test/rALTER DATABASE RENAME FILE '/u01/oradata/orcl/redo03.log' to '/u01/oradata/test/redo03.log';

       

    Database altered.

       

    SYS> SYS>

    Database altered.

       

    SYS> SYS>

    Database altered.

       

    SYS> SYS>

    Database altered.

       

    SYS> SYS>

    Database altered.

       

    SYS> SYS>

    Database altered.

       

    SYS> SYS> SYS>

    Database altered.

       

    SYS> SYS>

    Database altered.

       

    SYS> SYS>

    Database altered.

       

  • 현재 상태확인 -> current 상태의 redolog 확인.

       

       

    SYS> select * from v$backup;

       

    FILE# STATUS CHANGE# TIME

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

    1 ACTIVE 551993 2012-05-27 14:29:55

    2 ACTIVE 552010 2012-05-27 14:30:04

    3 ACTIVE 551999 2012-05-27 14:29:58

    4 ACTIVE 552004 2012-05-27 14:30:01

    5 ACTIVE 552016 2012-05-27 14:30:08

    6 ACTIVE 552022 2012-05-27 14:30:11

       

    6 rows selected.

       

    SYS> select * from v$log;

       

    GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE#

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

    FIRST_TIME

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

    1 1 17 10485760 1 YES INACTIVE 551980

    2012-05-27 14:29:19

       

    3 1 16 10485760 1 YES INACTIVE 551978

    2012-05-27 14:29:18

       

    2 1 18 10485760 1 NO CURRENT 551983

    2012-05-27 14:29:25

       

       

    SYS> select * from v$logfile;

       

    GROUP# STATUS TYPE

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

    MEMBER

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

    IS_

    ---

    3 ONLINE

    /u01/oradata/test/redo03.log

    NO

       

    2 ONLINE

    /u01/oradata/test/redo02.log

    NO

       

    1 ONLINE

    /u01/oradata/test/redo01.log

    NO

       

  • Recover database;

       

    SYS> recover database using backup controlfile;

    ORA-00279: change 551993 generated at 05/27/2012 14:29:55 needed for thread 1

    ORA-00289: suggestion : /home/oracle/backup/archive/orcl_1_18_643126719.arc

    ORA-00280: change 551993 for thread 1 is in sequence #18

       

       

    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

    /u01/oradata/test/redo02.log

    Log applied.

    Media recovery complete.

    SYS> alter database open resetlogs;

       

    Database altered.

       

    SYS>

    SYS>

    SYS> shutdown immediate

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SYS> startup

    ORACLE instance started.

       

    Total System Global Area 167772160 bytes

    Fixed Size 1218316 bytes

    Variable Size 75499764 bytes

    Database Buffers 88080384 bytes

    Redo Buffers 2973696 bytes

    Database mounted.

    Database opened.

    SYS>

       

  • Scott 유저 상태확인

       

    SCOTT>

    SCOTT> select table_name from user_tables;

       

    TABLE_NAME

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

    DEPT

    EMP

    BONUS

    SALGRADE

       

    SCOTT>

    SCOTT>

    SCOTT>

       

  • 결론 : HOT backup 상태의 데이터가 들어가 있음.

       

  • 발생된 에러들..
  • 해당 에러는 TEST 서버에서 아카이브를 먼저 생성해 놓지 않고 Hot backup을 받은 뒤에 recovery를 하려고 했더니 해당 에러가 발생됨.
  • HOT backup을 하기전에 아카이브를 생성한 뒤(alter system switch logfile;) 백업을 받고 -> 데이터 변경 이후에 아카이브를 생성(alter system switch logfile;) 후 리커버리 -> hot backup 된 데이터 상태로 돌아감.

       

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

MSDN subscription

2. Knowledge 2012. 5. 8. 21:57




MSDN subscription


MSDN Subscriptions은 MS의 모든 제품에 대한 라이센스와 설치파일 그리고 교육 및 저널, 잡지등....

MS의 모든 제품들을 정품으로 사용하고, 교육 및 서비스 지원을 받을  수 있도록 해줍니다. (다만 영어로 된 교육과 서비스라는거...)


 

 MSDN Subscriptions 혜택은 정말 다양하게 지원을 해주고 있는데요.

 

이 중에서 제가 가장 많이 사용하는 부분은 역시나.. MS제품의 다운로드와 시디키!! 그리고 E-Learning 정도가 되겠네요.



지금 제가 가지고 있는 라이센스는 "Visual Studio Ultimate with MSDN" 입니다.

 

해당 라이센스는 MS의 모든 혜택을 받을 수 있도록 지원해주고 있는 라이센스로

기존에 알고 싶었던 MS에 대한 제품이나 기술에 대한 모든 정보들을 접하실 수 있을 겁니다.

 

혜택이 많지만, 역시나.. 중요한건 MS 제품의 다운로드와 시디키이겠죠??ㅋㅋㅋ


 

구독 혜택을 보면 현재 라이센스가 지원하는 혜택들을 간략하게 확인하고 사용할 수 있습니다.


 

 

 

가장 중요한 MS 제품에 대한 다운로드는 "구독자 다운로드" TAP 에 들어 오시면,

 

최신의 MS제품 부터 MS사의 초창기 제품까지 다운로드 받으실 수 있습니다.(윈도우8로 이미 나왔으니 써보세요~)

 

다운로드와 동시에 해당 제품에 대한 시디키 또한 받으실 수 있습니다.

 

단! 시디키는 만 하루 동안 최대 10개 까지만 새롭게 할당 받을 수 있고,

 

기존에 이미 할당 받은 시디키로도 중복 설치가 가능한 것 같습니다. (설치파일 다운로드 수의 제한은 잘 모르겠어요ㅠ)


 


"해당 제품은 있는데, 시디키만 필요하다??" 그러한 상태라면, "제품키" TAP 으로 오셔서 해당 시디키를 보시면 되겠습니다.

 

해당 TAP에는 지금까지 할당 받은 모든 제품에 대한 시디키가 표로 만들어져 있는 상태이구요.

 


MS의 모든 제품은 물론이고, 다양한 혜택을 누릴 수 있는  MSDN subscription!!!

라이센스 비용이 비싸지만 그만큼이나 이점이 많다는 것을 많이 느끼고 있습니다. 잘활용해야 할텐데...



 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

heapSort

1. IT Story/Development 2012. 4. 4. 15:51



heapSort

#include<iostream>
#include<iomanip>
#include "maxHeap.h"
using namespace std;

#define MAX_ARY 15


void heapSort(int list[], int last);

int main()
{

 int ary[MAX_ARY]={12,12,23,54,67,43,67,87,56,4,3,2,54,67,9};


 cout << "before sort"<<endl;

 for(int i=0; i<MAX_ARY; i++)
 {
  cout<<setw(3)<<ary[i];
 }

 cout<<endl;

 cout<<"after heap sort"<<endl;

 heapSort(ary, MAX_ARY-1);

 for(int i=0; i<MAX_ARY; i++)
 {
  cout<<setw(3)<<ary[i];
 }
 cout<<endl;

}

void heapSort(int list[], int last)
{
 int sorted;//index
 int hold;
 int walker;
 //heap building 하기

 for(walker=1; walker <= last; walker++)
 {
  reheapUp(list, walker);
 }
 //sort

 int pass=1;


 sorted = last;
 while(sorted >0)
 {
  hold=list[0];
  list[0] = list[sorted];
  list[sorted]=hold;
  sorted--;
  reheapDown(list, 0, sorted);

  cout<<"PASS"<<pass++<<":";
  for(int i=0; i<MAX_ARY; i++)
  {
  cout<<setw(3)<<list[i];
  }
  cout<<endl;
 }
}

 

 

#define HEAP_SIZE 15

void reheapUp(int heap[], int newNode);
void reheapDown(int heap[], int root, int last);
void buildHeap(int heap[], int size);

bool insertHeap(int heap[], int& last, int data);
bool deleteHeap(int heap[], int& heapLast, int& dataOut);
void swap(int heap[],int root,int largeChildIndex);

void reheapUp(int heap[], int newNode)
{
 int parent;
 //int hold;


 if (newNode !=0) // if(newNode)
 {
  parent=(newNode-1)/2;

  if(heap[newNode] > heap[parent])
  {
   swap(heap, newNode, parent);

   /*hold = heap[parent];
   heap[parent]=heap[newNode];
   heap[newNode] = hold;*/

   reheapUp(heap, parent);
  }
 }
 return;
}

 

void reheapDown(int heap[], int root, int last)
{
 //int hold;
 int rightKey;
 int leftKey;
 int largeChildKey, largeChildIndex;

 if((root * 2 + 1) <= last)
 {
  leftKey=heap[root * 2 + 1];

  if(root * 2 + 2<=last)
  {
   rightKey = heap[root * 2 + 2];
  }
  else
  {
   rightKey = -1; // 아주작은값!
  }
  // 자식들중에 큰 키 찾기
  
  if(leftKey>rightKey)
  {
   
   largeChildKey = leftKey;
   largeChildIndex = root * 2 + 1;
  }
  else
  {
   largeChildKey = rightKey;
   largeChildIndex = root * 2 + 2;
  }

  if(heap[root]< largeChildKey)
  {
   swap(heap, root, largeChildIndex);

   /*int hold = heap[root];
   heap[root]=heap[largeChildIndex];
   heap[largeChildIndex] = hold;*/
   
   reheapDown(heap, largeChildIndex, last);
  }
 }
 return;
}

void swap(int heap[],int newNodeRoot,int parentLargeChildIndex)
{
 int hold = heap[newNodeRoot];
 heap[newNodeRoot]=heap[parentLargeChildIndex];
 heap[parentLargeChildIndex] = hold;
}

bool insertHeap(int heap[], int& last, int data)
{
 

 if(last == HEAP_SIZE -1)
 {return false;}

 ++last;
 heap[last]=data;
 reheapUp(heap, last);

 return true;
}
bool deleteHeap(int heap[], int& last, int& dataOut)
{
 
 if(last<0)
 {
  return false;
 }
 
 dataOut = heap[0];
 heap[0]=heap[last];
 last--;
 reheapDown(heap, 0, last);
 return true;
}

'1. IT Story > Development' 카테고리의 다른 글

무료 IT 개발 언어공부, 코딩공부 유튜브 TOP5  (0) 2021.01.26
selectionSort  (0) 2012.04.04
shellSort  (0) 2012.04.04
오픈 API를 이용한 간단한 번역프로그램  (0) 2012.03.29
ChatClient  (0) 2012.03.29
MultiChatServer  (0) 2012.03.29
MultiChatClient  (0) 2012.03.29
큐를 이용한 간단한 구직Pro  (0) 2012.03.29
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



selectionSort

#include<iostream>
#include<iomanip>
using namespace std;

#define MAX_ARY 15


void selectionSort(int list[], int last);

int main()
{

 int ary[MAX_ARY]={12,12,23,54,67,43,67,87,56,4,3,2,54,67,9};


 cout << "before sort"<<endl;

 for(int i=0; i<MAX_ARY; i++)
 {
  cout<<setw(3)<<ary[i];
 }

 cout<<endl;

 cout<<"after selection sort"<<endl;

 selectionSort(ary, MAX_ARY-1);

 for(int i=0; i<MAX_ARY; i++)
 {
  cout<<setw(3)<<ary[i];
 }
 cout<<endl;

}

void selectionSort(int list[], int last)
{
 int current;
 int smallest; 
 int hold;
 int walker;

 for(current = 0; current < last; current++)
 {
  smallest=current;
  
  for(walker = current +1; walker<=last; walker++)
  {
   if(list[walker]< list[smallest])
   {
    smallest = walker;
   }
  }//for
  //최소값이 선택됨. 현재요소와 교환
  hold = list[current];
  list[current] = list[smallest];
  list[smallest] = hold;
  cout<<"PASS"<< current+1<<":";
  for(int i=0; i<MAX_ARY; i++)
  {
  cout<<setw(3)<<list[i];
  }
  cout<<endl;
 }
}

'1. IT Story > Development' 카테고리의 다른 글

무료 IT 개발 언어공부, 코딩공부 유튜브 TOP5  (0) 2021.01.26
heapSort  (0) 2012.04.04
shellSort  (0) 2012.04.04
오픈 API를 이용한 간단한 번역프로그램  (0) 2012.03.29
ChatClient  (0) 2012.03.29
MultiChatServer  (0) 2012.03.29
MultiChatClient  (0) 2012.03.29
큐를 이용한 간단한 구직Pro  (0) 2012.03.29
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


shellSort

#include<iostream>
#include<iomanip>
using namespace std;



#define MAX_ARY 15

void shellSort(int list[], int last);

int main()
{

 int ary[MAX_ARY]={12,12,23,54,67,43,67,87,56,4,3,2,54,67,9};


 cout << "before sort"<<endl;

 for(int i=0; i<MAX_ARY; i++)
 {
  cout<<setw(3)<<ary[i];
 }

 cout<<endl;

 cout<<"after sort"<<endl;

 shellSort(ary, MAX_ARY-1);

 for(int i=0; i<MAX_ARY; i++)
 {
  cout<<setw(3)<<ary[i];
 }
 cout<<endl;

}

void shellSort(int list[], int last)
{
 int hold;
 int incre;
 int curr;
 int walker;
 incre = last /2;
 int pass =1;

 while(incre != 0)
 {
  for(curr=incre; curr<=last; curr++)
  {
   hold = list[curr];
   walker = curr - incre;

   while(walker>=0 && hold < list[walker])
   {
    list[walker + incre] = list[walker];
    walker = walker - incre;
   }//while(walker>=0 && hold < list[walker])
   list[walker + incre] = hold;
  }//for
  //pass출력하기
  
  cout<<"PASS"<<pass++<<"("<<incre<<")"<<":";

  for(int i=0; i<MAX_ARY; i++)
  {
   cout<<setw(3)<<list[i];
  }
  cout<<endl;

  incre=incre/2;

 }//while(incre!=0)
 
}

 

 

'1. IT Story > Development' 카테고리의 다른 글

무료 IT 개발 언어공부, 코딩공부 유튜브 TOP5  (0) 2021.01.26
heapSort  (0) 2012.04.04
selectionSort  (0) 2012.04.04
오픈 API를 이용한 간단한 번역프로그램  (0) 2012.03.29
ChatClient  (0) 2012.03.29
MultiChatServer  (0) 2012.03.29
MultiChatClient  (0) 2012.03.29
큐를 이용한 간단한 구직Pro  (0) 2012.03.29
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,




Oracle 10g Install 설치 후(DBCA생성 전) -> Upgrade(10.2.0.4) -> DB설치(DBCA) -> Upgrad(10.2.0.5) [RHEL5]

   

1.오라클 현재 버전 확인

   

1-1 Dbupgdiag.sql

   

   

1-2 dbupgdiag.sql 실행 및 버전 확인

  • 간단하게 sqlplus "/as sysdba" 나 select * from v$version 을 통해서 알아 볼 수 도 있다.
  • 해당 스크립트를 사용하는 이유는 현재 버전에 대한 정보와, 그 후에 버전의 번화를 확인할 때 편리하기 때문이다.

       

   

   

2.기존에 존재하던 패치파일 삭제

   

   

3.10.2.0.5 패치파일 준비

   

   

4.패치를 하기 전에 리스너와 DB를 정지시킨다.

  • 정지하지 않을 경우 중간에 프로세스를 중지하라는 에러가 발생하게 됨.

   

   

5.10.2.0.5 패치 파일 실행

   

   

   

5-1 패치 할 Oracle Home 지정

   

   

5-2 오라클 서포터를 받을 건지에 대한 선택

   

   

5-3 해당 패치파일 설치에 필요한 요구 값들 체크

   

<에러 발생1>

  • 커널 파라미터 값에 대한 에러발생

       

   

Checking the Components installed in Oracle Home

Check complete. The overall result of this check is: Passed

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

   

Checking for Oracle Home incompatibilities ...

Check complete. The overall result of this check is: Passed

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

   

Checking kernel parameters

Checking for semmsl=250; found semmsl=250.        Passed

Checking for semmns=32000; found semmns=32000.        Passed

Checking for semopm=100; found semopm=100.        Passed

Checking for semmni=128; found semmni=128.        Passed

Checking for shmmax=1073741824; found shmmax=536870912.        Failed <<<<

Checking for shmmni=4096; found shmmni=4096.        Passed

Checking for shmall=2097152; found shmall=2097152.        Passed

Checking for file-max=101365; found file-max=65536.        Failed <<<<

Checking for VERSION=2.6.18; found VERSION=2.6.18-194.el5.        Passed

Checking for ip_local_port_range=9000 - 65500; found ip_local_port_range=1024 - 65000.        Failed <<<<

Checking for rmem_default=1048576; found rmem_default=262144.        Failed <<<<

Checking for rmem_max=1048576; found rmem_max=262144.        Failed <<<<

Checking for wmem_default=262144; found wmem_default=262144.        Passed

Checking for wmem_max=262144; found wmem_max=262144.        Passed

Check complete. The overall result of this check is: Failed <<<<

Problem: The kernel parameters do not meet the minimum requirements (see above).

Recommendation: Perform operating system specific instructions to update the kernel parameters.

  

  

   

<에러 해결1>

  • 에러가 발생한 파라미터 값들을 해당 패치가 원하는 값의 크기로 변경하여 적용

       

# Vi /etc/sysctl.conf

파일 위치

   

   

<에러 발생2>


<에러 해결2>

  • 10g는 기본적으로 물리적 메모리를 1GB 이상 요구한다. 그러나, 실제 시스템에서는 2GB 이상의 메모리를 장착하므로 기본적으로 Passed로 나오게 된다. 512MB인 경우에도, swap이 충분하면 설치가 가능하며 DB 생성, 운영이 가능하다.
  • 넘어가도 설치하는 것에는 이상이 없음(정확한 이유를 잘모르겠음)

   

5-4 패치 요약

   

   

5-5 패치 설치

   

   

5-6 스크립트 실행(Root계정)

   

   

   

5-7 패치 설치완료

   

   

<에러 발생3>

  • 패치 후에 DB를 시작하게 되면 다음과 같은 에러가 발생한다.

       

   

   

  • 오라클 10g 패치 후(10.2.0.4 -> 10.2.0.5)  

    startup 명령어로 DB를 open 하려고 할 때,

    ORA-01092: ORACLE instance terminated. Disconnection forced 에러 발생

       

  • 발생 원인

    오라클 엔진만 패치되고 DB에 패치가 제대로 적용되지 않았을 경우

   

   

7.Post Upgrade

   

  • 해당 작업은 DB를 이미 사용하고 있는 경우에 작업, 즉 DB가 설치되어 있지 않은 경우에는 하지 않아도 된다.(소프트웨어만 설치되었을 경우)
  • 패치 작업이 끝난 후에는 Post Upgrade 작업을 진행
  • 주 작업 내용은 DB 파라미터 값을 수정.

   

6-1

   

SQL> startup upgrade

(SQL> startup migrate)

두 개 중 1개만 사용

SQL> select status from v$instance;

현재 상태확인

   

   

   

   

6-2

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

엔진을 따라서 DB에 버젼 패치 적용.

   

   

   

6-3

SQL> shutdown

  

SQL> startup

  

SQL> @?/rdbms/admin/utlrp.sql

// Invalid PL/SQL package를 compile 하는 단계

   

   

   

7.패치완료 확인

  • 현재까지 무사히 왔다면, 패치가 완료되었을 것임.
  • 마지막으로 패치가 잘 되었는지를 확인해야 함.
  • 현재 DB 버전확인
  • 현재 DB 상태확인
  • 데이터베이스 중요 데이터파일들이 존재하고, 잘 적용이 되는지 확인한다.
  • Dbupgdiag.sql를 통하여 현재 데이터베이스의 패치 상태를 확인한다.(아래 참고)

       

   

7-1 dbupgdiag.sql 패치완료 확인

  • 스크립트 실행후, 해당 로그 파일을 천천히 보면서 패치가 잘 적용되었는지 확인한다.

   

   

   

   

   

원본 위치 <http://web3.c2.cyworld.com/myhompy/board/retrieveBoard.php?home_id=a3177717&lmenuSeq=499037&smenuSeq=834741&postSeq=6952833&referrer=http%3A%2F%2Fwww.cyworld.com%2FBC83%2F6952833>

원본 위치 <http://blog.naver.com/PostView.nhn?blogId=thesot&logNo=70126892070&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=true&topReferer=http%3A%2F%2Fsearch.naver.com%2Fsearch.naver%3Fsm%3Dtab_hty.top%26where%3Dnexearch%26ie%3Dutf8%26query%3Dora-01092%26x%3D0%26y%3D0>

원본 위치 <http://www.saybox.co.kr/bbs/board.php?bo_table=board04&wr_id=1>

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,




Oracle 10g Install 설치 후(DBCA생성 전) 바로 Upgrade(10.2.0.4) [RHEL5]

   

1.해당 패치파일 준비 및 Certified Versions 확인

  • 오라클 10g 설치파일에서는 RHEL5에 대한 버전이 없었는데 패치파일에서는 추가된 것을 확인할 수 있다.

     

     

    

 

   

2.오라클 패치파일 실행

  • 오라클 초기 설치 때와 같은 방식이다.
  • DB가 생성된 뒤에 패치를 했다면, 해당 패치 설치 후에, DB에 추가적인 적용을 해주어야 한다.
  • 하지만 소프트웨어만 설치한 뒤, 바로 패치를 하기 때문에 추가적인 적용이 필요 없어 수월하게 작업을 할 수 있다.
  • 조금 바뀐 부분에 대해서만 추가적으로 이야기를 추가함.

       

   

   

2-1 패치할 Oracle Home 지정

   

   

2-2 패치 설치를 위한 체크

   

   

   

2-3 패치 요약

   

   

2-4 패치 설치

   

   

   

   

   

3.오라클 10.2.0.4 패치 완료

   

   

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



안녕하세요!!

개학을 하고, 학교가 시작된지도 생각보다 많이 되었습니다.
이번 방학은 비도 많이 내리고, 덥고..
금융위기에...
덕분에 공부만 열심히 했습니다.
3학년이다보니, 이것저것을 많이 생각할 시기라서 그런지
하루 하루가 정말 빠르게 흐르고 있습니다.

-운명을 바꾸는 자-




 

Engine 백업 및 그 외!!


1. Engine의 위치 찾기

1-1 해당 DB의 Engine을 찾기위해서 "cd ORACLE_HOME" -> cd .. -> 해당 DB의 버전으로 이름이 되어진 디렉토리!
1-2 만약 OS 엔지니어가 잘못해서 엔진을 뭉게버리면, DB 복구가 불가능함.(엔진 백업의 필요성)

 


2. Engine 백업 시작

2-1 엔진을 확인 했다면 백업을 시작하자. (.tar)

"tar cvf engine.tar /u01/app/oracle/product/"    (sql 밖에서)


2-2 압축이 끝나게 되면 해당 엔진 옆에 .tar파일이 생긴다.



3. Engine 백업 완료
 

3-1 에러없이 완료되었다면 아래와 같이 나온다.
3-2 백업된 엔진을 백업용으로 마운트된 공간에 넣어준다.(mv 명령어)

 



4. 그 외의 백업해두면 좋은 파일들!!
 
-.profile 파일 /home/oracle ls -al
-cp /etc/passwd 이건 바로
-cp /etc/group

※ 현재 OS에 저장된 DB 기본 정보들이 속해 있는 파일들이다.(자세한 내용은 추후에 포스팅)
 

5. OS 명령어들...

데이터 생성 및 보기: vi

데이터 이동 : mv 해당 파일위치 새로운위치 // 이름 변경도 가능함.

데이터 복사 : cp 해당 파일위치 새로운위치

디렉토리 확인 : pwd

데이터 삭제(주의!!!) : rm 해당파일위치 // 가장 주의해야될 명령어!

데이터 정보 자세히 보기: ls -al

데이터 정보 시간순으로 보기 : ls -trl

마운트 상태의 데이터 보기 : df -k
마운트 상태의 데이터 보기 : df -h

현재 전송 속도 보기 : iostat -xtc 1 100

유닉스에서 파일 수정할때  I는 삽입 X는  D // 문서 수정시 불편하지만..

관리자 권한 변경(루트사용자일 때) 주의!!!!!!!: chown -R user:dba 폴러명  // 잘못된 권한 변경으로 큰일이 날수 있음!

모든 데이터 파일 보기 : desc v$datafile

현재 로그파일로 진행 사항 보기 tail -f  xxx.log

'1. IT Story > DB' 카테고리의 다른 글

Oracle Structure 메모리  (0) 2012.02.29
Oracle 11g Install[RHEL 5] 3  (0) 2012.02.27
Oracle 11g Install[RHEL 5] 2  (0) 2012.02.27
Oracle 11g Install[RHEL 5] 1  (0) 2012.02.27
Cold 백업하자!!  (0) 2011.09.11
Export백업!!  (0) 2011.09.11
백업하기전에 해야 되는 것들!!!  (0) 2011.09.04
Oracle 공부하기 위해 유용한 사이트  (0) 2011.08.14
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,