반응형

* 데이터와 관련된 일을 한다. 즉, 데이터 베이스와 연관된 일을 하는 곳이다.

* CI에서 model 기능이 제대로 작동하려면 CI_Model 를 반드시 상속 받아야 한다.


* 실습을 위해서는 반드시 데이터 베이스와 연동이 되어 있어야 한다.

* 설정은 application/config/database.php 에서 설정을 할 수 있다.

 - 기본적으로 설정되어야 할 값

$db['default']['hostname'] = 'localhost'; // IP 또는 hostname

$db['default']['username'] = 'scott';

$db['default']['password'] = 'tiger';

$db['default']['database'] = 'PROD';

$db['default']['dbdriver'] = 'odbc'; 

 - 설정 해주는 라인 위쪽으로 올라가보면 주석처리로 어떤 것들이 지원이 되고 어떤 이름을 넣어야 하는지도 나와 있음.

    system/database/drivers 경로에 보면 지원하고 있는 dbdriver 파일들이 있음.

 - database.php 파일은 보안상으로 많은 문제를 발생 시킬 수 있기 때문에, 파일에 대한 권한을 좀 더 신경을 써야 함.

    git 같은 소스관리 툴을 사용할 때는 ignore가 되도록 해야하며, 여러모로 주의를 기울여야하는 파일임.


* 데이터베이스를 불러오는 방법.

1. application/config/autoload.php 파일에서 $autoload['libraries'] = array('database') 라고 설정.

   - 이럴경우 계속적으로 데이터베이스를 불러옴.(테스트는 안해봄)

   - 더이상 데이터베이스를 불러오지 않아 편할지는 모르겠으나, DB를 많이 사용하지 않는 페이지이거나, 전혀 사용되지 않        는 페이지들이 DB 사용률 보다 페이지가 더 많이 불러오게 되는 경우는 안좋을 수 있다.

     즉, 사용 할 때마나 DB에 접속하는 방법이 좋다. 매번 DB에 접속하는 것보다 사용 할 때만 접속하는 것이 속도에 좋고

         DB의 부담도 줄어 들 것이다.


2. 사용 할 때마나 DB에 접속.

   - application/models/ 폴더에 ***_model.php를 생성하고 controller 파일에서 제어를 하는 방법.

   - 일반적으로 모델 파일명 규칙은 사용될 데이터베이스의 테이블 이름을 사용하고 _model이라고 반드시 붙여준다.


* models/Tablename_model.php

class Tablename_model extends CI_Model {

    function __construct() {   //method 를 초기화

        parent::__construct();

       // 매번 초기화를 해야하는 method가 있으면 이곳에 추가를 해주면 됨.

    }


   public function gets() {

       //$this->db->query()->result(); 문법.

       return $this->db->query('SELECT id,name from tablename')->result();

       //객체 - result(), 배열 - result_array(), 값이 하나 일 경우 - row()

   }

 


* controller/topic.php

function index() {

    $this->load->database();

    $this->load->model('topic_model');  //topic_model.php 파일을 불러오겠다.

    $data=$this->topic_model->gets();  //topic_model.php 의 gets라는 method를 사용하여 $data에 넣겠다.


    $this->load->view('main',array('topics'=>$data));

}


function get($id) {


    $this->load->view('get',array('id'=>$id));


}


* views/main.php

<?

    foreach($topics as $entry) {

?>

    <li><a href="index.php/topic/get/<?=$entry->id?>"><?=$entry->id?></a></li>

<?

    }

?>


* views/get.php

 This is get page.<?=$id?>


반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(3/5) - 소스 중복제거  (0) 2015.09.07
Model(2/5) - 리스트와 각 리스트 정보 구현  (0) 2015.09.04
View  (0) 2015.09.04
Controller  (0) 2015.09.04
CodeIgniter와의 규칙?  (0) 2015.09.04
반응형

화면 상에 출력하는 것, 시각적으로 표시하는 것들을 관리.

공통적으로 쓰는 코드/로직들을 통합하여, 수정/관리할때 수월해 짐.


공통적으로 사용되는 것 중 HTML의 소스가 대표적일 것이다.

모든페이지 마다 아래와 같은 html 소스가 들어가게 될 것인데, 불필요하게 사용되지 않게 view에서 관리할 수 있다.


* 공용 소스

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

    </head>

    <body>

    </body>

</html>


* views/_head.php 

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

    </head>

    <body>


* views/_footer.php

    </body>

</html>


* controller 파일에서 view를 불러 올 때 사용 예제

$this->load->view('_head');

$this->load->view('main',array('id'=>$id));

$this->load->view('_footer'); 


반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(2/5) - 리스트와 각 리스트 정보 구현  (0) 2015.09.04
Model(1/5) - 설정 및 사용  (0) 2015.09.04
Controller  (0) 2015.09.04
CodeIgniter와의 규칙?  (0) 2015.09.04
CodeIgniter 설치  (0) 2015.09.04
반응형

* View와 Model을 제어하는 역할을 함.


* URL: localhost/index.php/welcome/input/test_name 참고


    index.php : 반드시 존재해야 하나 .htpaccess 파일로 제거할 수 있음.

    welcome : welcome.php 파일.

    input : welcome.php 파일에 input함수라고 하여 또 다른페이지를 불러 올 수 있음.(함수 또는 method 라 함.)

    test_name : welcome.php 파일에 input 함수의 인자


 - controller/welcome.php(echo 문은 설명을 위해 넣은 것이고, views에 포함되어야 하는 것이 맞음)

class Welcome extends CI_Controller {

    public function index() {

       $this->load->view('url');

       echo "URL에 welcome 뒤로 아무것도 붙지 않았을 경우 기본적으로 보여지는 내용";

    }

    public function input($id) {

       $this->load->view('input');

       echo "welcome/input 이 오면 input의 내용을 보여주도록..";


       $this->load->view('id');

       echo $id."$id는input 다음에 값이 올수 있는 인자(즉 파라미터라 할 수 있음)";

    }

}


반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(1/5) - 설정 및 사용  (0) 2015.09.04
View  (0) 2015.09.04
CodeIgniter와의 규칙?  (0) 2015.09.04
CodeIgniter 설치  (0) 2015.09.04
CodeIgniter 관한 글을 작성하며..  (0) 2015.09.04
반응형

1. class명은 반드시 파일명과 동일해야 하며 첫글자는 대문자로 시작.


2. controller는 CI_Controller, Model은 CI_Model 을 반드시 상속받아야 함.(CodeIgniter가 제대로 작동하기 위함)


3. Model 파일은 반드시 "_model"이라고 명시를 해야 한다.

 ex. application/models/test.php         (X)

     application/models/test_model.php (O)


4. 문법

    $this->load->view('view_file');  => view파일 중 view_file.php를 불러옴.

    $this->load->database();       => DB에 연결

    $this->load->model('file_model');  => model파일 중 file_model.php를 불러옴.

반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(1/5) - 설정 및 사용  (0) 2015.09.04
View  (0) 2015.09.04
Controller  (0) 2015.09.04
CodeIgniter 설치  (0) 2015.09.04
CodeIgniter 관한 글을 작성하며..  (0) 2015.09.04
반응형

홈페이지 및 다운로드 : http://www.codeigniter.com


파일을 다운로드 받고 DocumentRoot 경로에 압축을 풀면 끝!

확인은 DocumentRoot/index.php 을 누르면 아래와 같은 문구가 출력 된다.


Welcome to CodeIgniter!

The page you are looking at is being generated dynamically by CodeIgniter.

If you would like to edit this page you'll find it located at:

application/views/welcome_message.php

The corresponding controller for this page is found at:

application/controllers/welcome.php

If you are exploring CodeIgniter for the very first time, you should start by reading the User Guide.


반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(1/5) - 설정 및 사용  (0) 2015.09.04
View  (0) 2015.09.04
Controller  (0) 2015.09.04
CodeIgniter와의 규칙?  (0) 2015.09.04
CodeIgniter 관한 글을 작성하며..  (0) 2015.09.04
반응형

생활코딩에서 항상 많은 도움을 받고 있는 것 같다.


CodeIgniter 에 관한 내용을 작성하게 된 계기는 프레임워크에 대해서 새롭게 알게 되었으며,

알게 된 이후 자주가는 opentutorials에서 동영상 강의 찾아 듣게 된 이후 부터이다.


정확하게 말하자면, model 수업을 본 이후 시점이다.

볼 때는 이해가 되었으나, 돌아서면 이해가 너무 되지 않아서 잊지 않기 위해 작성을 시작했다.


지금부터 열공 !!!!


CodeIgniter는 생활코딩에서 동영상 강의를 듣고 혼자만의 노트로 끄적끄적거려 볼란다.

무조건 내 중심으로 글을 적을 것이다.

반응형

'Programming > CodeIgniter' 카테고리의 다른 글

Model(1/5) - 설정 및 사용  (0) 2015.09.04
View  (0) 2015.09.04
Controller  (0) 2015.09.04
CodeIgniter와의 규칙?  (0) 2015.09.04
CodeIgniter 설치  (0) 2015.09.04
반응형

웹 소스 맨 상단에 추가 해줌.


header("Content-Type: application/vnd.ms-excel");

header("Content-Disposition: attachment; filename=test.xls");

header("Content-Description:PHP4 Generated Data");


아래와 같은 헤더도 있으나, 현재까지는 위 3개로만으로도 다운이 가능하다.

header("Content-Type: application/octet-stream");

header("Content-Type-Description: File Transfer");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0,pre-check=0");

header("Pragma; public");



이걸 응용하여 버튼 클릭시 다운받게 해보자.


버튼 페이지(button.php)

<script>

    $.fn.outerHTML = function() {

         var el = $(this);

         if(!el[0]) return "";

         if(el[0].outerHTML) {

             return el[0].outerHTML;

         } else {

             var content = el.wrap('<p/>').parent().html();

             el.unwrap();

             return content;

         }

    }

function export_excel() {

var exp=$('#export').outerHTML();  //id 값이 export인 태그부터 가져옴.(위함수)

// var exp=$('#export').html(); => id값이 export 인 태그의 자식 태그들만 가져옴.

$('#data').val(exp);

$('#export_data').submit();

}

</script>

<div>

<input type="button" value="Excel" onclick="export_excel()">

<form id="export_data" method="post" action="./Excel.php">

<input type="hidden" id="data" name="data" />

</form>

</div>


다운로드 실행 페이지(Excel.php)

header("Content-Type: application/vnd.ms-excel");

header("Content-Disposition: attachment; filename=test.xls");

header("Content-Description:PHP4 Generated Data");


$data = $_REQUEST['data'];

echo "<meta content=\"application/vnd.ms-excel;charset=UTF-8;\" name=\"Content-type\">";

echo $data;


반응형

'Programming > PHP' 카테고리의 다른 글

Fatal error: Maximum execution time of 30 seconds exceeded  (0) 2015.10.22
error 메세지 출력  (0) 2015.10.22
bitnami  (0) 2015.10.21
phpexcel 설치  (0) 2015.10.13
index.php 삭제하기  (0) 2015.09.09
반응형

현재 서버

shmmax=1g

shmseg=120

SGA = 48G


신규서버

shmmax=1g

shmseg=120

SGA = 110G 위로 올라가지 않음.


왜 그런 것인지를 찾아봄.


shmmax 할당 : SGA 보다 크거나 같게 설정하는 것을 권장한다고 함.


현재 알아본 바로는,

1. sga 값보다 shmmax를 낮게 설정하면, 여러개의 shared memory가 뜨는 것을 볼 수 있다.

 - ipcs -ma 명령어로 SEGSZ 값을 합산하면 대략적으로 sga값과 동일하게 나온다.

2. sga 값보다 shmmax를 높게 설정하면, 한개의 shared memory가 뜨는 것을 볼 수 있다.


의문. sga 값보다 shmmax를 낮게 설정하였는데, 에러가 발생하였다.

       - ORA-27123: unable to attach to shared memory segment

      위 1번에 의하면 여러개의 shared memory가 떠야하는 것이 아닌가?


답변추측. shmseg 값이 현재 120으로 설정되어있다. shared memory가 120개가 초과하여 발생하는 문제 같다.

          sga 가 48g로 설정되어 있고 shmmax 가 1기가로 설정되어 있었을 때, 53개의 메모리가 떴다.

          그러면 192g로 설정을 하려고 하니 120개를 초과하여 발생하는 문제 인 것 같다.


이를 검증하기 위해서는, 아래와 같이 한번 해보자

1. shmmax 에 값을 sga 값만큼 올려주고, shared memory 개수를 확인.

2. shmmax 값은 그대로 두고 shmseg 값만 올려주고 shared memory 개수를 확인.


설명에 의하면 아래와 같으니 내 추측이 맞을 것이라 봄.


커널이 공유메모리(오라클이 SGA로 사용할) 할 당 방법

 1. 공유메모리로 사용할 물리적 메모리가 충분할 경우.

  -> 하나의 세그먼트에 전체 SGA 할당

 2. 하나의 세그먼트에 다 할당할 수 없는 경우

  -> 연속된 여러 세그먼트로 분산시켜 할당

 3. 두번째 방법도 여의치 않을 경우

  -> 연속되지 않은 여러 세그먼트에 분산시켜 할당

* SGA내 fixed Area 부분은 반드시 전체가 하나의 세그먼트에 할당되어야 함.


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

테스트 결과는 맞게 나옴.

다만, 커널값을 shmmax, shmseg 등 설정값을 늘려주었다고 하더라도,

pfile에 또 하나의 값을 변경해줘야지 DB가 startup 될 수 있다.

만약 그렇지 않으면, ORA-00064 에러가 난다.(ORA-00064: object is too large to allocate on this OS(1,4086000))

pfile에 추가할 파라미터, _ksmg_granule_size=33554432(32M)

- default = 16777216(16M)


* granule size 확인

select name, bytes/1024/1024 "size" from v$sgainfo where upper(name) like '%GRANULE%'


NAME                                                                   size

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

Granule Size                                                            32



Granule(메모리 할당 단위)

 - SGA 메모리는 연속적인 메모리 조각(Chunk) 을 뜻하는 Granule 이란 단위로 할당된다.

 - Granule의 크기는 SGA 총 크기에 의해 결정된다. SGA의 크기가 1GB 이하라면 Granule의 크기는 4MB, 1GB 이상이라면 Granule 크기는 16MB 가 된다.

 - SGA의 각 컴포넌트들에 쓰여지는 Granule size는 v$sgainfo 로 조회가 가능하다.



반응형

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

[oracle19c] 사용자 생성 및 삭제 (ORA-65096, ORA-28014)  (0) 2022.03.24
11g alert 파일 경로 확인  (0) 2022.02.09
External Table  (0) 2014.07.16
archive 와 log switch v$log  (0) 2013.01.18
rowid의 변화  (0) 2013.01.17
반응형

C:\Windows\System32>net use

새 연결 정보가 저장되지 않습니다.


상태         로컬      원격                      네트워크


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

OK                     \\111.111.111.111\IPC$       Microsoft Windows Network

명령을 잘 실행했습니다.



C:\Windows\System32>net use \\111.111.111.111\IPC$ /delete

\\111.111.111.111\IPC$이(가) 제거되었습니다.


C:\Windows\System32>

반응형
반응형

drop table temp_pgheo_external;

drop directory TEST;


create directory TESTas '/data16/tmp';


create table temp_pgheo_external

(server_date varchar2(14)

,code1 varchar2(20)

,code2 varchar2(20)

,code3 varchar2(20)

,code4 varchar2(20)

,code5 varchar2(20)  

)

organization external

(

    type oracle_loader

    default directory BDUMP

    access parameters(

                        --recodrds fixed 63

                        records delimited by newline

                        fields terminated by ","  --필드를 구분할 수 있는 구분자 지정

(server_date varchar2(14)

,code1 varchar2(20)

,code2 varchar2(20)

,code3 varchar2(20)

,code4 varchar2(20)

,code5 varchar2(20)  

)

                     )

    location('external_01.txt','external_02.txt','external_03.txt','external_04.txt')

)

reject limit unlimited

;


데이터가 계속 0 row로 뿌려주고 있어, 명령어가 잘못되었는 줄 알고 한참을 찾아보고 수정했더니,

결론은 데이터 포맷이 맞지 않아 발생된 문제였음.

컬럼에 따라 하나라도 어긋나면 작동이 안되는 것 같다.

반응형

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

11g alert 파일 경로 확인  (0) 2022.02.09
shmmax 값에 대한 추측성 글  (0) 2015.03.10
archive 와 log switch v$log  (0) 2013.01.18
rowid의 변화  (0) 2013.01.17
기본적인 궁금증들(?)  (0) 2012.09.23
반응형

특정 데이터를 찾아서 삭제하는 명령어인데 아래와 같습니다.

Awk 를 사용하여 나온 결과값을 while 문을 사용하여 지우는 명령어 입니다.

 

[/var/spool/mqueue]# ls -al |grep -i 2008 | awk '{print $7}'| while read line

> do

> rm -f $line

> done

반응형

'Unix & Linux' 카테고리의 다른 글

CentOS 8 한글 입력  (0) 2021.09.12
cpu, mem 사용량 확인  (0) 2020.10.27
메일 서버 사이트  (0) 2014.01.03
cron 메일 수신하기(?)  (0) 2013.08.22
cron에서 sqlplus: command not found  (0) 2013.08.22
반응형

KISA 사이트에 들어가면 메일서버에 대한 자세한 소개와 Exchange, Postfix, Sendmail, qmail 에 대한 설명과 설치 방법들이 나옴.



SPF 가 뭔지? 또 왜 등록을 해야하는지 찾아보다가 알게되었다.ㅡㅡ

반응형

'Unix & Linux' 카테고리의 다른 글

cpu, mem 사용량 확인  (0) 2020.10.27
특정 데이터를 찾아서 삭제  (0) 2014.07.02
cron 메일 수신하기(?)  (0) 2013.08.22
cron에서 sqlplus: command not found  (0) 2013.08.22
CentOS6 samba 서버 설치  (0) 2013.05.20
반응형

$ vi /etc/aliases 에 입력


root     : <메일주소>

oracle : <메일주소>


ex) root : goodgods@tistory.com


저장 후 newaliases 를 실행 시켜 적용한다.

반응형
반응형

단순히 shell 파일을 실행시킬 경우 문제없이 잘 된다.

그러나 크론으로 실행시켰을 경우 sqlplus 명령어를 찾을 수 없다는 메세지가 뜬다.

메세지는 크론메일로 확인이 가능하다.(/var/spool/mail/계정)

sqlplus: command not found


결론부터 말하자면, 환경변수가 맞지 않아서이다.

실행되는 계정의 환경변수를 변경해주기도 하지만, 대부분 shell 파일에 환경변수를 재설정하여 사용하는 것 같다.


나같은 경우는 path를 지정해주지 않았음.


export ORACLE_SID=PROD

export ORACLE_BASE=/oracle

export ORACLE_OWNER=oracle

export ORACLE_HOME=/oracle/product/10.2.0

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

export NLS_LANG=American_America.KO16KSC5601



반응형

'Unix & Linux' 카테고리의 다른 글

메일 서버 사이트  (0) 2014.01.03
cron 메일 수신하기(?)  (0) 2013.08.22
CentOS6 samba 서버 설치  (0) 2013.05.20
리눅스 관리자 권한 부여 및 root 계정 접속 제한  (0) 2013.04.09
/etc/procmailrc  (0) 2013.04.03
반응형

$ sudo yum install samba-client.x86_64 samba-common.x86_64 samba-swat.x86_64 samba.x86_64


설치 후 /etc/samba/smb.conf 에서 설정


$ /etc/init.d/smb start | stop | restart



#---- Network Related Options ------

        unix charset = utf-8

        dos charset = utf-8

        display charset = utf-8

        smb port = 139

;        hosts allow = 127. 192.168,12. 192.168.13


#---- Standalone Server Options ------

        security = user

        passdb backend = smbpasswd

;       passdb backend = tdbsam


#===== Share Definitions =======
[homes]
        comment = Home Directories

        path = /data5/shared

        browseable = no
        writable = yes
        valid users = user1

반응형

'Unix & Linux' 카테고리의 다른 글

cron 메일 수신하기(?)  (0) 2013.08.22
cron에서 sqlplus: command not found  (0) 2013.08.22
리눅스 관리자 권한 부여 및 root 계정 접속 제한  (0) 2013.04.09
/etc/procmailrc  (0) 2013.04.03
sendmail 기본 명령어  (0) 2013.04.02
반응형

* 관리자 권한 주기

/etc/sudoers 파일 수정(vi로는 수정이 불가능하므로, 아래명령어를 이용.)

$ visudo


root 밑에 관리자 권한을 줄 계정을 써주고 저장하면 관리자 권한이 부여됨.

root                ALL=(ALL)       ALL

USER_NAME   ALL=(ALL)       ALL


관리자 권한에 제약을 주려면 아래와 같이 주면 된다.

USER_NAME ALL=/user/sbin/useradd, /user/bin/passwd

sudo를 붙여  명령어를 실행한다.

$ sudo useradd USER_NAME



* 루트 ssh 로그인 제한.

$ vi /etc/ssh/sshd_config

PermitRootLogin no 로 수정(default는 yes 이다.)


$ service sshd restart (서비스 재시작)

반응형

'Unix & Linux' 카테고리의 다른 글

cron에서 sqlplus: command not found  (0) 2013.08.22
CentOS6 samba 서버 설치  (0) 2013.05.20
/etc/procmailrc  (0) 2013.04.03
sendmail 기본 명령어  (0) 2013.04.02
vncserver & xrdp-v0.6.0 설치  (0) 2013.03.28
반응형

내가 설정한 procmailrc 이다.

spamassassin에서 걸러내지는 파일을 삭제 시키고,

수신자가 여러 alias에 포함되어 있어 중복 메일이 오는 경우를 설정에 넣었다.

그러나 이 파일에 한글은 걸러내지지 않는 것 같다. 왜그런지 모름..ㅠㅠ


SHELL=/bin/shTH=/bin:/usr/bin:usr/local/bin

VERBOSE=on


:0fw: spamassassin.lock

| /usr/local/bin/spamc


SPAMDIR="/data1/vpopmail/domains/domain_name.com/spamd/Maildir/"


## Filtering Rules

# 인코드되어 날아오는 헤더를 디코드 하는 부분.

:0 Efhw

*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?

|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m


:0 Efhw

*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?

|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m


:0 Efhw

*^(Subject|From|Cc):.*=\?KSC5601\?(B|Q)\?

|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m


:0 Efhw

*^(Subject|From|Cc):.*=\?ISO-8859-1\?(b|B|Q)\?

|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m


# 영문

:0

* ^Subject:.*(advert|sex|porno|casino|**SPAM)

#$SPAMDIR  --> 해당 문구 포함시 지정한 경로로 이동

/dev/null     --> 해당 문구 포함시 삭제


# 한글

:0

* ^Subject:.*(광고|홍보|廣告|몰카|성인|광 고|홍 보|몰 카|성 인|포르노|광.고|홍.보|몰.카|성.인)

$SPAMDIR


# 한글

:0

* ^Subject:.*(정력|발기|오르가즘|조루|성생활|페니스|흥분|애인|비아그라)

$SPAMDIR


# 괄호

:0

* ^Subject:.*(\[광고\]|\[홍보\]|\[몰카\]|\[성인\])

$SPAMDIR


# 중복 메일이 올 경우 한번만 발송

# duplicate messages

:0 Whc: msgid.lock

| formail -D 16384 msgid.cache

:0 a:

duplicates



반응형

'Unix & Linux' 카테고리의 다른 글

CentOS6 samba 서버 설치  (0) 2013.05.20
리눅스 관리자 권한 부여 및 root 계정 접속 제한  (0) 2013.04.09
sendmail 기본 명령어  (0) 2013.04.02
vncserver & xrdp-v0.6.0 설치  (0) 2013.03.28
fail2ban 설치  (0) 2013.03.13
반응형

- sendmail 시작/중지

$ /sbin/init.d/sendmail stop

$ /sbin/init.d/sendmail start


- sendmail queue 확인

$ sendmail -bp -oQ/var/spool/clientmqueue

$ sendmail -bp -oQ/var/spool/mqueue


- sendmail queue 삭제

$ cd /var/spool/mqueue/

rm *


반응형

'Unix & Linux' 카테고리의 다른 글

리눅스 관리자 권한 부여 및 root 계정 접속 제한  (0) 2013.04.09
/etc/procmailrc  (0) 2013.04.03
vncserver & xrdp-v0.6.0 설치  (0) 2013.03.28
fail2ban 설치  (0) 2013.03.13
vacation 설치(/usr/bin/vacation)  (0) 2013.03.13
반응형

$ cd /tmp


* vnc와 기본적인 패키지 설치

$ yum install gcc make pam-devel openssl-devel vnc-server tigervnc-server


* xrdp-v0.6.0 다운로드, 압축 풀기 및 설치

$ wget http://downloads.sourceforge.net/project/xrdp/xrdp/0.6.0/xrdp-v0.6.0.tar.gz

$ tar xvfz xrdp-v0.6.0.tar.gz

$ cd xrdp-v0.6.0

$ yum install libX11-devel libXfixes-devel autoconf automake libtool

$ ./bootstrap

$ ./configure

$ make

$ make install

$ /etc/xrdp/xrdp.sh start


* 원격 연결시 아래와 같은 에러 메세지가 나올 경우

error problem connecting...

$ vi /etc/xrdp/startwm.sh


export LANG=en_US.UTF-8

export LC_ALL=en_US.UTF-8

export XKL_XMODMAP_DISABLE=1

(아래 3중 택일) : 설치가 되어 있어야한다.

. /etc/X11/Xsession

startkde &

gnome-session &


- Xsession으로 했을 경우 접속은 되지만 검은색 바탕화면에 X표시로 되어있는 마우스 커서만 나올 것이다.

  이럴 땐 gnome 또는 kde를 설치 후 접속을 하면 제대로 보일 것이다.


* KDE 설치

$ yum groupinstall "KDE Desktop"


* gnome-session 설치

$ yum install gnome-desktop.x86_64 gnome-desktop-devel.x86_64


* 해상도 설정

$ vi /etc/sysconfig/vncservers

VNCSERVERS="1:root"

VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -localhost"

sdf

* vncserver 재시작

$ /etc/init.d/vncserver restart

반응형

'Unix & Linux' 카테고리의 다른 글

/etc/procmailrc  (0) 2013.04.03
sendmail 기본 명령어  (0) 2013.04.02
fail2ban 설치  (0) 2013.03.13
vacation 설치(/usr/bin/vacation)  (0) 2013.03.13
hosts.deny 자동 등록 IP 해제  (0) 2012.10.31
반응형

특정 IP가 해당 서버에 무분별하게 접속하는 것을 방지하기 위해서 설치.

해킹에 대한 차단을 미연에 방지할 수 있다.

/etc/fail2ban/jail.conf 에서 설정이 가능하다.(몇번 접속시 언제까지 막을 것인지..)


$ rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm

$ yum install fail2ban

$ /etc/init.d/fail2ban stop | start | restart


$ iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

DROP       tcp  --  1-164-0-0.dynamic.hinet.net/16  anywhere            tcp dpt:smtp

fail2ban-SMTP  tcp  --  anywhere             anywhere            tcp dpt:smtp

fail2ban-SSH  tcp  --  anywhere             anywhere            tcp dpt:ssh


Chain FORWARD (policy ACCEPT)

target     prot opt source               destination


Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination


Chain fail2ban-SMTP (1 references)

target     prot opt source               destination

DROP       all  --  1-1-1-1.dynamic-ip.hinet.net  anywhere

DROP       all  --  114-45-193-234.dynamic.hinet.net  anywhere

RETURN     all  --  anywhere             anywhere


Chain fail2ban-SSH (1 references)

target     prot opt source               destination

RETURN     all  --  anywhere             anywhere


* Append(Chain INPUT에 해당 IP를 3레벨로 등록한다. - fail2ban-SSH 아래로)

$ iptables -A INPUT -p tcp --dport smtp -s 1.164.0.0/16 -j DROP


* Insert(Chain INPUT에 해당 IP를 1레벨로 등록한다. - fail2ban-SMTP 위로)

$ iptables -I INPUT -p tcp --dport smtp -s 1.164.0.0/16 -j DROP


* Delete(Chain INPUT에 3레벨에 위치한 IP를 해제한다.)

$ iptables -D INPUT 3


* Delete(Chain fail2ban-SMTP에 등록되어있는 IP를 해제한다.)

$ iptables -D fail2ban-SMTP -s 1.1.1.1 -j DROP

반응형

'Unix & Linux' 카테고리의 다른 글

sendmail 기본 명령어  (0) 2013.04.02
vncserver & xrdp-v0.6.0 설치  (0) 2013.03.28
vacation 설치(/usr/bin/vacation)  (0) 2013.03.13
hosts.deny 자동 등록 IP 해제  (0) 2012.10.31
scp 복사  (0) 2012.10.18
반응형

$ cd /var/tmp

$ wget http://sourceforge.net/projects/vacation/files/latest/download?source=files

$ cd vacation-1.2.7.1

$ make


* make 시 아래와 같은 에러 발생시 gdbm 관련 패키지를 설치한다.

gcc  -g -Wall   -Xlinker -warn-common -D_PATH_VACATION=\"/usr/bin/vacation\" -o vacation vacation.c strlcpy.c strlcat.c rfc822.c -lgdbm

vacation.c:81:18: error: gdbm.h: No such file or directory


* gdbm 설치 확인

$ rpm -qa | grep gdbm

gdbm-1.8.0-36.el6.x86_64

$ yum install gdbm-devel.x86_64

$ find / -name gdbm.h

/usr/include/gdbm.h

/usr/include/gdbm/gdbm.h


$ make

$ make install


* vacation 설치확인

$ whereis vacation

반응형

'Unix & Linux' 카테고리의 다른 글

vncserver & xrdp-v0.6.0 설치  (0) 2013.03.28
fail2ban 설치  (0) 2013.03.13
hosts.deny 자동 등록 IP 해제  (0) 2012.10.31
scp 복사  (0) 2012.10.18
cpio.gz 압축풀기  (0) 2012.06.07
반응형

v$log 가 처리되는 순서(?)를 보고자 함..


현재 대량 데이터를 삭제중에 있다.


select a.group#, member, bytes/1024/1024, a.status, archived

from

(select * from v$log) a,

(select * From v$logfile) b

where a.group#=b.group#

order by group#, member

;


위 쿼리를 지속적으로 모니터링을 해보았다.


log switch가 발생하면 alert 파일에 기록이 남고 status는 active 상태로 변환. 

status가 inactive 로 변경되면, archive 파일로 떨구는 작업을 진행하게 된다.

이후 archived 컬럼은 NO에서 YES로 변경되면서 다음 log switch가 발생할 때 까지 기다린다.


archive 파일로 떨구는 작업보다 log switch가 더 빠르면 alert 파일에는 아래와 같은 문구가 나온다.

All online logs needed archiving





반응형

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

shmmax 값에 대한 추측성 글  (0) 2015.03.10
External Table  (0) 2014.07.16
rowid의 변화  (0) 2013.01.17
기본적인 궁금증들(?)  (0) 2012.09.23
Windows Oracle 10g 설치  (0) 2012.09.23
반응형

현재 데이터의 rowid가 dml 작업시 변화가 있을까하여 몇가지 테스트를 해보았다.


* TEMP 테이블 생성

create table temp_rid_test tablespace users nologging as

select 1 no,'aaaaa' depth from dual union all

select 2,'bbbb' from dual union all

select 3,'xxxxx' from dual union all

select 4,'ddddd' from dual union all

select 5,'hhhha' from dual union all

select 6,'agghha' from dual

;


* 현재 rowid

select rowid, no, depth from temp_rid_test;

 ROWID

 NO

DEPTH 

 AAA8vIAAMAABYt0AAA  1  aaaaa
 AAA8vIAAMAABYt0AAB  2  bbbb
 AAA8vIAAMAABYt0AAC  3  xxxxx

 AAA8vIAAMAABYt0AAD

 4  ddddd
 AAA8vIAAMAABYt0AAE  5  hhhha
 AAA8vIAAMAABYt0AAF  6  agghha


* update

update temp_rid_test set no=7 where no=1;

commit;


select rowid, no, depth from temp_rid_test;

 ROWID

 NO

DEPTH 

 AAA8vIAAMAABYt0AAA

 7

 aaaaa
 AAA8vIAAMAABYt0AAB 2 bbbb
 AAA8vIAAMAABYt0AAC 3 xxxxx

 AAA8vIAAMAABYt0AAD

 4 ddddd
 AAA8vIAAMAABYt0AAE 5 hhhha
 AAA8vIAAMAABYt0AAF 6

 agghha


* delete

delete from temp_rid_test where no=7;

commit;


select rowid, no, depth from temp_rid_test;

 ROWID

NO 

DEPTH 
 AAA8vIAAMAABYt0AAB  2  bbbb
 AAA8vIAAMAABYt0AAC

 3

 xxxxx
 AAA8vIAAMAABYt0AAD  4  ddddd
 AAA8vIAAMAABYt0AAE  5  hhhha
 AAA8vIAAMAABYt0AAF  6  agghha

* update(특정로우에 대한 큰용량 byte로 갱신) - 2000byte

alter table temp_rid_test modify depth varchar2(2000);

select lengthb('AAA......생략')

from dual  --1710

;


update temp_rid_test

set depth = 'AAA......생략'

where no = 6

;

commit;

select rowid, no, depth from temp_rid_test;

 ROWID

NO 

DEPTH 
 AAA8vIAAMAABYt0AAB 2 bbbb
 AAA8vIAAMAABYt0AAC

 3

 xxxxx
 AAA8vIAAMAABYt0AAD 4 ddddd
 AAA8vIAAMAABYt0AAE 5 hhhha
 AAA8vIAAMAABYt0AAF 6

 aaaa....


* update(특정로우에 대한 큰용량 byte로 갱신) - 4000byte

alter table temp_rid_test modify depth varchar2(4000);

select lengthb('AAA......생략')

from dual  --3478

;


update temp_rid_test

set depth = 'AAA......생략'

where no = 6

;

commit;

select rowid, no, depth from temp_rid_test;

 ROWID

NO 

DEPTH 
 AAA8vIAAMAABYt0AAB 2 bbbb
 AAA8vIAAMAABYt0AAC

 3

 xxxxx
 AAA8vIAAMAABYt0AAD 4 ddddd
 AAA8vIAAMAABYt0AAE 5 hhhha
 AAA8vIAAMAABYt0AAF 6

 aaaa....


* 결론

dml 작업시 rowid의 변화는 없었다.


반응형

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

External Table  (0) 2014.07.16
archive 와 log switch v$log  (0) 2013.01.18
기본적인 궁금증들(?)  (0) 2012.09.23
Windows Oracle 10g 설치  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
반응형

Linux Debian


hosts.deny 에 나의 IP가 수시로 등록되어 접속이 될 수 없었다.

/var/lib/denyhosts 에 있는 일부 파일들을 열어 IP를 지어주면 된다.

hosts 

hosts-restricted

hosts-root

hosts-valid

user-hosts


http://denyhosts.sourceforge.net/faq.html#3_19

반응형

'Unix & Linux' 카테고리의 다른 글

fail2ban 설치  (0) 2013.03.13
vacation 설치(/usr/bin/vacation)  (0) 2013.03.13
scp 복사  (0) 2012.10.18
cpio.gz 압축풀기  (0) 2012.06.07
.htpasswd, .htaccess  (0) 2012.03.09
반응형

scp 파일명 계정명@IP주소:경로


scp copy_test.log oracle@127.0.0.1:/oracle/oradata/

Password:

copy_test.log                                              100%  124MB  17.7MB/s   00:07




반응형

'Unix & Linux' 카테고리의 다른 글

vacation 설치(/usr/bin/vacation)  (0) 2013.03.13
hosts.deny 자동 등록 IP 해제  (0) 2012.10.31
cpio.gz 압축풀기  (0) 2012.06.07
.htpasswd, .htaccess  (0) 2012.03.09
grep -i  (0) 2011.12.22
반응형

IMP-00032: SQL statement exceeded buffer length

IMP-00008: unrecognized statement in the export file


buffer size를 늘려주어라.

반응형
반응형

문득 생각났던 부분을 테스트 해본 결과이다. 중요하지는 않지만 궁금해서...

어이없는 궁금증이였던가? ㅋㅋ


1. archive mode 가 아니면 hot backup을 할 수가 없다.

SQL> alter tablespace system begin backup;

alter tablespace system begin backup

*

ERROR at line 1:

ORA-01123: cannot start online backup; media recovery not enabled


SQL>


2. 핫백업시 다시 begin backup 명령어 먹는가?

SQL> alter tablespace system begin backup;


Tablespace altered.


SQL> alter tablespace system begin backup;

alter tablespace system begin backup

*

ERROR at line 1:

ORA-01146: cannot start online backup - file 1 is already in backup

ORA-01110: data file 1: '/home/oradata/PROD/data1/system01.bdf'


SQL>


3. 10g부터 바뀐 hotbackup 명령어 : 테이블스페이스마다 begin backup을 해줄 필요가 없다.

SQL> alter database begin backup;


Database altered.


SQL> alter database end backup;


Database altered.


SQL>


4. dba_tables, user_tables, all_tables 에 있는 extents 는 테이블들이 설정되어 있는 값들이다.

   테스트를 해보니 값에 대한 변화가 없었다.

반응형

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

archive 와 log switch v$log  (0) 2013.01.18
rowid의 변화  (0) 2013.01.17
Windows Oracle 10g 설치  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
minus 에 대한 위험(?)  (0) 2012.06.21
반응형

제목과 같이 갑자기 의문이 들었다.

파일은 복사하는 중인데, 인서트는 계속 되고 있는 상황이 발생하였다.

이론적으로 생각하였을 때는 아카이브 파일을 불러와 복구가 되겠다는 생각은 들어지만..정말 그렇게 될까?ㅎㅎ


테스트를 해보자.

session 을 sys 와 scott 계정 2개를 열었다.


users 테이블스페이스를 제외한 나머지 테이블스페이스에 대해서는 미리 hotbackup을 진행 완료.

users 테이블스페이스를 남겨놓기 위해 alter database begin backup; 명령어를 사용하지 않고,

alter tablespace system begin backup; 명령어를 사용하였다.(참고로 작업환경은 윈도우에서 하였음.)


SQL> select * from v$backup;


     FILE# STATUS                CHANGE# TIME

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

         1 NOT ACTIVE             175887 12/09/23

         2 NOT ACTIVE             175909 12/09/23

         3 NOT ACTIVE             175923 12/09/23

         4 NOT ACTIVE                  0                       <-- users 테이블스페이스

         5 NOT ACTIVE             175940 12/09/23


파일 용량이 적어 미리 잽싸게 scott 계정에서 dml 작업을 하기 위해 스크립트를 만들어주었다.

* sequence 생성

SQL> create sequence seq_hot

  2  start with 1

  3  increment by 1

  4  nomaxvalue

  5  nocycle

  6  ;


* scott_insert.sql

insert into temp_hot_table select seq_hot.nextval,'AA',sysdate from dual connect by level <= 100000;

commit;

select count(*) cnt,max(id) max_id from temp_hot_table;


불완전 복구가 되었을 시 어느 단계까지 복구가 되는지 확인을 하기 위해, 단계별로 insert를 수행함.


 순서

 sys

scott 

 1

  

 @scott_insert.sql
 cnt : 100000, max_id : 100000

 2

 alter tablespace users begin backup;


 3

 

 @scott_insert.sql
 cnt : 200000, max_id : 200000

 4

$copy D:\PROD\DATA2\ORADATA\USERS01.DBF D:\PROD\BACKUP\USERS01.DBF

 @scott_insert.sql
 cnt : 300000, max_id : 300000

 5

 alter tablespace users end backup;

 

 6

 

 @scott_insert.sql
 cnt : 400000, max_id : 400000

 7

 alter database backup controlfile to 'D:\PROD\BACKUP\control.bak';

 


SQL> select * from v$backup;


     FILE# STATUS                CHANGE# TIME

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

         1 NOT ACTIVE             175887 12/09/23

         2 NOT ACTIVE             175909 12/09/23

         3 NOT ACTIVE             175923 12/09/23

         4 NOT ACTIVE             175961 12/09/23   <-- 백업이 완료 되었음.

         5 NOT ACTIVE             175940 12/09/23


백업은 완료가 되고, 해당 데이터 파일이 깨졌을 때의 상황을 만들자.


SQL> shutdown immediate;

데이터베이스가 닫혔습니다.

데이터베이스가 마운트 해제되었습니다.

ORACLE 인스턴스가 종료되었습니다.

SQL> $del D:\PROD\DATA2\ORADATA\USERS01.DBF


SQL> startup

ORACLE 인스턴스가 시작되었습니다.


Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             171969412 bytes

Database Buffers          432013312 bytes

Redo Buffers                7135232 bytes

데이터베이스가 마운트되었습니다.

ORA-01157: 데이터 4 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을 보십시오

ORA-01110: 4 데이터 파일: 'D:\PROD\DATA2\ORADATA\USERS01.DBF'


데이터 파일이 깨져 복구를 해야하는 단계이다.


SQL> alter database datafile 4 offline;


데이타베이스가 변경되었습니다.


SQL> alter database open;


데이타베이스가 변경되었습니다.


SQL> $copy d:\PROD\backup\users01.dbf d:\PROD\data2\oradata\users01.dbf  : hotbackup 한 파일로 복원하자.

        1개 파일이 복사되었습니다.


SQL> recover datafile 4

매체 복구가 완료되었습니다.    <-- 데이터가 적다보니 아카이브 파일을 만들어 지지 않아 필요가 없나보다. 바로 복구가 된다.

SQL> alter database datafile 4 online;


데이타베이스가 변경되었습니다.


SQL> conn scott/tiger

연결되었습니다.

SQL> select count(*), max(id) from temp_hot_table;


  COUNT(*)    MAX(ID)

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

    400000     400000


완전 복구가 되었다...훌륭하네!ㅎㅎ

반응형
반응형

몇 년전 오라클 교육을 받은 이후로 처음 윈도우에 오라클을 설치해보았다.

DB 설치 시 윈도우와 리눅스가 초기  설정이 다소 다르다는 것을 잠시 잊고 있었다.


윈도우에 생성 시 초기 해야할 작업.

1.  서비스 등록 (oradim)


D:\PROD\script>oradim -new -sid PROD -startmode A

인스턴스가 생성되었습니다.


D:\PROD\script>set oroacle_sid=PROD


D:\PROD\script>sqlplus "/as sysdba"


cf.

  oradim -new -sid PROD : 서비스 등록

  oradim -delete -sid PROD : 서비스 해제

  startmode A : 자동모드로 변환


2. shutdown 또는 startup 시 별도의 인증없이 DB 관리자 역할을 수행  (orapwd)

  orapwd file=%ORACLE_HOME%\database\PWD%ORACLE_SID%.ora password=1234


cf.

  pfile 또는 spfile등 리눅스에서는 $ORACLE_HOME/dbs에 종속시켜야 하지만,

  윈도우 에서는 %ORACLE_HOME%\database에 종속시켜야한다.


3. 만약 위 1번의 작업을 수행하지 않는다면 아래와 같은 에러가 나올 것이다.

  ERROR: ORA-12560: TNS:프로토콜 어댑터 오류



반응형

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

rowid의 변화  (0) 2013.01.17
기본적인 궁금증들(?)  (0) 2012.09.23
characterset 변환  (0) 2012.07.17
minus 에 대한 위험(?)  (0) 2012.06.21
Datafile resize에 대한 오해(?)  (0) 2012.01.20
반응형

크롬에서 토렌트 툴바가 보이기 시작하였다.

프로그램 삭제에서 해당 ask 툴바를 제거하였지만, 끝까지 보였다.


제거 방법을 찾다가찾다가 혹시나 하고 보니 역시나..ㅋㅋ


결론은

크롬에서 다운로드 확장프로그램으로 인식하고 있었던 것.

설정에서 왼쪽 상단에 확장 프로그램을 클릭하면 해당 프로그램을 삭제할 수 있다.

휴지통 버튼을 꾹 눌러주어라.


반응형

+ Recent posts