레이블이 데이터베이스인 게시물을 표시합니다. 모든 게시물 표시
레이블이 데이터베이스인 게시물을 표시합니다. 모든 게시물 표시

2012-10-07

DBMS/오라클]_권한_부여_생성_sql스크립트


--// 특정 테이블만 제외하고 select 권한주기

select 'grant select  on '||table_name||' to 유저명;'
from ALL_TABLES /* select 권한만 */ .. 혹은
--from user_tables
where owner in ('유저01','유저02','유저03')  /* 원본 유저 리스트 */
AND table_name  NOT IN ('테이블1 ','테이블2'); /* 권한 제외할 테이블 리스트 */



--// billuser 에게 현재 로그인한 사용자의 모든 테이블에 대한 select 권한 주는쿼리문 생성
select 'grant select on ' || table_name || ' to billuser;' a
from user_tables
order by a
;

2012-10-06

DBMS/MySQL]권한설정

이글은 proftp DB생성과 유저등에 관한 것을 예로 설명하는 것입니다.

1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록
db 테이블 구조
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| User | char(16) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

user 테이블 구조
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | varchar(60) | | PRI | | |
| User | varchar(16) | | PRI | | |
| Password | varchar(41) | | | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Reload_priv | enum('N','Y') | | | N | |
| Shutdown_priv | enum('N','Y') | | | N | |
| Process_priv | enum('N','Y') | | | N | |
| File_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Show_db_priv | enum('N','Y') | | | N | |
| Super_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
| Execute_priv | enum('N','Y') | | | N | |
| Repl_slave_priv | enum('N','Y') | | | N | |
| Repl_client_priv | enum('N','Y') | | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | | | | |
| ssl_cipher | blob | | | | |
| x509_issuer | blob | | | | |
| x509_subject | blob | | | | |
| max_questions | int(11) unsigned | | | 0 | |
| max_updates | int(11) unsigned | | | 0 | |
| max_connections | int(11) unsigned | | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD(비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


host 테이블 구조

+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+


mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;

DBMS/MySQL]utf8_환경으로_자료_conversion_성공기(database.sarang.net)




utf8 환경으로 자료 conversion 성공기

http://database.sarang.net/?inc=read&aid=24971&criteria=mysql&subcrit=&id=&limit=20&keyword=unicode&page=1

DBMS/MySQL]mysql 사용자 추가 및 디비 생성



mysql > create database sms;

mysql > grant all on sms.* to smsuser@localhost identified by 'smspw' with grant option;

mysql > grant all on sms.* to smsuser identified by 'smspw' with grant option;

mysql > flush privileges;


===>사용자 추가 방법
mysql> grant all on aaa.* to abcd@localhost identified by 'abcd' with grant option;
                    ^^^^^    ^^^^^^^^^^^^^^               ^^^^^^
                     디비     계정                          비번
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)

====> 비밀번호 변경
# mysqladmin abcd 'abcd' 'abcde'


DBMS/MySQL]mysql_upgrade_설명_문서(4.0 ->4.1)



이 글은 database.sarang.net 에 있는 MySQL 섹션에 있는 글 입니다.

1. 준비작업
http://database.sarang.net/?inc=read&aid=24240&criteria=mysql&subcrit=&id=&limit=20&keyword=unicode&page=1

2. db 이전
http://database.sarang.net/?inc=read&aid=24241&criteria=mysql&subcrit=&id=&limit=20&keyword=unicode&page=1

3. 4.1  버전으로 이전.
http://database.sarang.net/?inc=read&aid=24242&criteria=mysql&subcrit=&id=&limit=20&keyword=unicode&page=1

DBMS/MySQL]mysql_gui_툴._sqlyog_사용법



최근에 우리는 XAMPP에 대해 당신이 당신의 databases. 을 관리하는 것을 이용할 수 있는 디폴트 데이터베이스 고객이 phpMyAdmin below: 의 screenshot을 보아서 당신이 아파치를 시작하는 방해와 PHP와 어느 mySQL.  XAMPP이 phpMyAdmin와 더불어 싸서 온다을 썼다.
이미지
더 많은 스텝에게 오퍼레이션에게 . 을 내리라고 요구한다 그리고 즉 기능적인 마우스 오르쪽 버튼 클릭 지름길이지 않은 phpMyAdmin이 많은 특징을 가지지만 그것이 웹에 기초를 둔 고객이기 때문에 당신이 그것의 인터페이스의 능력으로 제한된다.
SQLyog 일은 오라클 database. 을 위해 그것이 당신을 mySQL 데이터베이스 어떤 서버도 연결하게 하고 전통적인 그래픽 사용자 인터페이스를 잘 알고 있는 사용자가 쌓은 그래픽 사용자 인터페이스의 왼쪽 부분(위)에 데이터베이스 고객이 그럴 것이다 확실하게 디스플레이 데이터베이스가 objects 당신이 www.webyog.com으로부터 자유로운 버전을 얻을 수 있다 L SQL 개발자 appreciate.  나이 많은 MS SQL 기업 매니저와 P을 좋아한다.
이미지
보아라 클릭이 되 만들어 낸다 뛰어나고 미리이어라 정하고 있다 만들어 내 지고 나타나라 저축해라 편집해라 있다 두고 남겨지고 갈라져라 위에 언제 비슷하게 더 lower 또한 자동적으로 더 쉽게 hey as 그리고 또한 직관적으로 당신 예 그것 나 테이블 그것 뷰 권리(정의)사이드 window.  컬럼 가치관 변경 dropdown field.  위치 버튼 위 테이블 할 수 있다.
이미지
물건 탭을 찰깍 소리가 나는 것은 테이블 SQL을 만들고 똑바로이어라 팔 원하는 사람들을 위해 매우 편리하게 이것이 들어오는 컬럼 information.  뿐만 아니라 테이블을 만들어 내는 데 이용된 질문을 보여 줄 것이다:
이미지
테이블을 마우스 오른쪽 버튼으로 클릭하는 것은 Novice process.  SQL을 따르기 위해 쉽게 개발자가 확실하게 이들 지름길을 사랑할 것이다 이것이 일이 컬럼과 인덱스를 바꾸는 것을 좋아하게 하는 table. 을 위한 문맥 민감한 많은 오퍼레이션을 보여 줄 것이다.
이미지
그래픽 사용자 인터페이스에 기초를 둔 고객과 함께 SQLyog을 좋아해라,사용자는 테이블에(게)간단한 인덱스 command.  A 마우스 오르쪽 버튼 클릭을 만들면 찰깍 소리가 나는 것이 인덱스 의지 방해를 관리해라 드물게 사용된 queries.  창조적인 일을 하는 약간의 인덱스가 예를 들면 당신을 필요로 하지 않을 것이라는 것을 기억해서 당신이 즉시 인덱스를 만든다 이슈에(게)걱정해야 할 것이지 말아라:
이미지
질문 에디터 field. 에 의하여 창에서 위의 왼쪽 부분에(서)녹색 버튼이 런 역할을 하고 모든 버튼을 수행한다 당신의 자신의 SQL 명령을 수행하는 것을 지지한다.
이미지
기초적인 로그인 information. 을 꽉 채우는 as 쉽게 당신이 패스워드와 함께 커넥션을 구할 수 있다 그래서 당신이 next. 에 대한 1 커넥션으로부터 쉽게 바꿀 수 있다을 때와 경영하는 데이터베이스 커넥션은 또한 그대로이다.
이미지
가져라 있다 세워 지고 있다 할 수 있다 편집해라 할 수 있다 떨어져라 로그인해라 한다 부담을 주어라 취한다 평균 되고 같이이어라 안에 같이(위)에 같이 같이 강력하게 그렇지 않으면 또한 건방지게 또한 as 유일하게 about 나의 당신 mySQL 매니저 응용 SQLyog very much recommended.  1 일(물건)그것 이것 도구 그것 당신 얼룩 텍스트 그래픽 mode.  당신 과정 다른 사람(것)사용자 그것 당신 이것 privilege.  그것 원인 랩탑 그것 18MB 램 자원 질문 약간 100 완전히 바로 필요로 하지 않는다.

DBMS/MySQL]mysql_5.0.41_소스_컴파일_해서_설치하기



The basic commands that you must execute to install a MySQL source
distribution are:
     shell> groupadd mysql
     shell> useradd -g mysql mysql
     shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
     shell> cd mysql-VERSION
     To change both the character set and the collation, use both the
     `--with-charset' and `--with-collation' options. The collation
     must be a legal collation for the character set. (Use the `SHOW
     COLLATION' statement to determine which collations are available
     for each character set.)
     shell> ./configure --prefix=/usr/local/mysql --with-charset=utf8
     shell> make
     shell> make install
     shell> cp support-files/my-medium.cnf /etc/my.cnf
     shell> cd /usr/local/mysql
     shell> chown -R mysql .
     shell> chgrp -R mysql .
     shell> bin/mysql_install_db --user=mysql
     shell> chown -R root .
     shell> chown -R mysql var
     shell> bin/mysqld_safe --user=mysql &

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h test.nchannel.net password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com

[DBMS/MySQL]가입자에게_mysql을_사용할_수_있도록_path_설정하기


1. 가입자에게 mysql을 사용할 수 있도록 PATH설정하기

/etc/skel 의 .bash_profile에 mysql을 실행시킬수 있도록 다음과 같이 설정한다.

# .bash_profile

# Get the aliases and functions
# 사용자 정의 앨리어스와 함수 정의 포함
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs
# 사용자별 환경 변수, 시작 프로그램 설정

PATH1=$PATH:$HOME/bin <- 설정부분
PATH=$PATH1:/usr/local/mysql/bin <- 설정부분
BASH_ENV=$HOME/.bashrc
USERNAME=""

export USERNAME BASH_ENV PATH1 PATH <- 설정부분

[DBMS/MySQL]too_many_connections_에러_해결책


mysql을 설치하여 사용하다보면, 서버부하가 없음에도 불구하고 "Warning...too many connections...."라는 메시지와 함께 MySQL 이 뻗어버리는 경우가 있습니다.
원인은 Mysql의 실행환경변수 설정에 있다 .
우선 Mysql설치홈의 bin디렉토리에서 "./mysqladmin -u -p variables"라고 해보시면 다음과 유사한 결과를 얻으실수 있다.
http://tfile.nate.com/download.asp?FileID=5161247

위의 결과에서

max_connections            | 1000
wait_timeout               | 300  

와 같은 것을 볼수 있습니다 .

max_connections는 mysql에 connect할수 있는 최대 갯수를 지정해 둔것이다.
"too many connections"라는 메시지는 이 갯수를 초과해서 connect하려고 할때 발생하는 메시지이다.

결론부터 말씀드리자면 이 갯수를 적절히 조절해야한다고 말씀드릴수 있다.
하지만, max_connections 아래에 있는 wait_timeout이란 variable은 connect된 후에 몇초간 지속적으로 연결을 유지할 것인가를 지정해 둔 것이다.

이를 설명하기 위해서는 mysql_connect()와 mysql_pconnect의 차이점 그리고, mysql_close()함수에 대한 정확한 이해가 필요하다.

간단히 설명해 보자면, mysql_connect()함수로 DB connect를 했다면 해당스크립트가 종료됨과 동시에 mysql_close()함수를 호출하지않아도 자동으로 연결이 종료된다.

하지만, mysql_pconnect()함수는 해당스크립트가 종료된후 mysql_close()함수가 호출되었더라도 연결이 끊어지지않은채로 계속 연결을 유지하고 있다.

따라서, 얼핏보기에는 "too many connections"라는 에러메시지는 mysql_pconnect()라는 함수의 사용때문에 발생하는 것 같지만, 그런 이유도 있을수 있지만, 직접적인 이유는 그것이 아니라 MySQL의 메뉴얼을 보면 mysql_connect()함수를 사용하면 해당스크립트의 종료와 함께 연결이 종료된다고 되어있지만
./mysqladmin -u -p processlist"라는 명령어를 통해서 살펴보면 그대로 살아 있음을 알수 있다.

http://tfile.nate.com/download.asp?FileID=5161248

맨위에서 살펴보았던 "mysqladmin -u -p variables"의 결과로서 볼수 있는 여러가지 시작옵션들중 "wait_timeout"의 값만큼 서버에 그대로 연결을 유지한채로 남아 있는 것이다.

따라서, 이것이 "too many connections"의 직접적인 이유인 것이다.

그렇다면 문제의 해결은 간단하다.

실행옵션을 주어서 이들 값들을 자기가 운용하고 있는 서버의 성능과 용도에 알맞게 수정해 주면 되는 것이다.

MySQL실행시에 주는 실행옵션값은 다음과 같다.

./safe_mysqld -O max_connections=1000 -O table_cache=256 -O wait_timeout=300 &

일반적으로 실행시킬때에는 기본옵션을 그대로 사용하는 "./safe_mysqld"라는 옵션을 사용했다.

이렇게 실행하면 36개의 MySQL시작옵션중에서 위의 3가지 옵션들만 값들을 임의로 지정하여 실행시킨 것이다.
이렇게 실행시킨후에 다시 "mysqladmin -u -p variables"로 옵션들값을 확인해 보면 변경되어 있음을 알수 있을 것이다.

그리고, 참고로 리눅스 실행시에 mysql을 자동으로 시작하도록 설정해둔 /etc/rc.d/rc.local파일에도
위와 같이 옵션을 함께 주어서 실행하도록 설정하는 것을 잊지말기 바란다

[DBMS/MySQL]root_패스워드_잊어_버린_경우_새로_설정하는_방법


mysql을 오랫동안 사용하지 않았을 경우에 간혹 root패스워드가 기억나질않아서 당황할 때가 있습니다.
특히, 여러대의 시스템을 관리할 경우에는 시스템의 root패스워드와 일반계정 및 MySQL의 root계정과 일반계정등 기억해야할 암호가 수십개씩 되는 경우가 흔히 있습니다.
필자의 경우에도 관리하는 서버가 많은 편에 속하기 때문에 패스워드를 전혀 바꾸지 않을 수는 없고 해서 변경한 후에는 메모하여 잘 보지 못하는 곳에 블랙박스로 보관합니다.
시스템의 root암호를 잊어 버린 경우도 있었으며, MySQL의 root사용자의 암호를 잊어 버린 경험도 많이 있었습니다.
경험있는 시스템관리자라면 시스템의 root나 MySQL의 root의 암호를 잊어 버렸을 때를 대비해서 패스워드를 새로 설정하는 방법을 반드시 숙지하고 있어야 할 것입니다.





 

1. 실행중인 msyql 종료

[root@kebia_1 bin]# ps -ef | grep mysqld
root956710 Mar16 ?00:00:00 sh ./safe_mysqld
root957695670 Mar16 ?00:00:00 /usr/local/mysql/libexec/mysqld
root957895760 Mar16 ?00:00:00 /usr/local/mysql/libexec/mysqld
root957995780 Mar16 ?00:00:00 /usr/local/mysql/libexec/mysqld
[root@kebia_1 bin]#
[root@kebia_1 bin]# killall mysqld
[root@kebia_1 bin]#


 

2. grant-table 미사용모드로 mysql시작

[root@kebia_1 bin]# ./safe_mysqld --skip-grant-tables&
[1] 12084
[root@kebia_1 bin]# Starting mysqld daemon with databases from /usr/local/mysql/data

[root@kebia_1 bin]#
[root@kebia_1 bin]# ./mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.22.24

Type 'help' for help.

mysql>


 

3. update문으로 root사용자 패스워드 변경


mysql> update user set password=password('12345') where user = 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3Changed: 3Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye


 

4. 실행중인 mysql 다시 종료

[root@kebia_1 bin]# ps -ef | grep mysqld
root12084 115580 20:10 pts/200:00:00 sh ./safe_mysqld --skip-grant-ta
root12090 120840 20:10 pts/200:00:00 /usr/local/mysql/libexec/mysqld
root12092 120900 20:10 pts/200:00:00 /usr/local/mysql/libexec/mysqld
root12093 120920 20:10 pts/200:00:00 /usr/local/mysql/libexec/mysqld
[root@kebia_1 bin]#
[root@kebia_1 bin]# killall mysqld
mysqld daemon ended
[1]+Done./safe_mysqld --skip-grant-tables
[root@kebia_1 bin]#


 

5. 일반모드로 Mysql 재시작

[root@kebia_1 bin]# ./safe_mysqld&
[1] 12102
[root@kebia_1 bin]# Starting mysqld daemon with databases from /usr/local/mysql/data

[root@kebia_1 bin]#
[root@kebia_1 bin]# ps -ef | grep mysql
root12102 115580 20:13 pts/200:00:00 sh ./safe_mysqld
root12108 121020 20:13 pts/200:00:00 /usr/local/mysql/libexec/mysqld
root12110 121080 20:13 pts/200:00:00 /usr/local/mysql/libexec/mysqld
root12111 121100 20:13 pts/200:00:00 /usr/local/mysql/libexec/mysqld
[root@kebia_1 bin]#

DBMS/MYSQL]_하드디스크_이상으로_디비_용량이_초과_시



할당된 하드디스크 이상으로 디비 용량이 초과 되었을때 처치 방법.1. /usr/local/mysql/var 의 로그 파일로 용량을 줄일 수 있다.
- localhost-bin.index 파일을 보면 현재의 로그 파일에 대한 정보가 있다.
- 그 로그파일은 DB의 UPDATE 내역이 기록하는 파일이다. Replication(일종의 백업)을 위해 생성된다.
- localhost-bin.index 에서 확인한 파일을 제외하고 다른 파일은 지워도 된다.
- 한가지 더 확인하자면 marster-slave 에서 show slave status 인가하는 명령으로 현재의 master 의 로그파일을 확인할수 있으니 나머지는 지워도 된다.
- /etc/my.cnf 에서 log-bin 옵션을 주석처리 해주면 로그 파일이 생성되지 않는다.

2. 하드디스크를 설치 하는 방법으로 용량 충당
- MySQL은 데이터를 디렉토리에 보관한다. 다른 파티션으로 이동할 경우 데이타 디렉토리를 이동하면 된다.
1. 기존의 데이타 디렉토리로 이동한다.
$ cd /usr/local/mysql/var
2. 기존의 데이터 파일들을 묶어서 새로운 디렉토리로 옮긴다.
$ tar cvf /usr2/local/mysql/var/backup.tar * 3. 새로운 디렉토리로 이동한다.
$ cd /usr2/local/mysql/var
4. 새로운 디렉토리에 기존의 데이타들의 압축을 푼다.
$ tar xvf backup.tar
5. 새로운 디렉토리의 권한을 mysql 사용자만 접근할 수 있도록 해 주어야 한다.
$ chmod 700 /usr2/local/mysql/var
$ chown mysql.mysql /usr2/local/mysql/var

6. MySQL 데몬을 실행시키는데 이때 --datadir=/usr2/local/mysql/var 옵션을 주어 새로운 데이터 디렉토리를 지정해 주어야 합니다.
이와 같은 방법으로 MySQL의 데이터 디렉토리를 다른 곳으로 옮길 수 있다.

- 뭐 간단하게 말해서 기존에 데이터 있던 데이터들을 압축해서 다른곳에 옮겨놓고 그디렉토리는 새로운 하드로 마운트 시키시고 다시 풀어놓으시면 된다.

3. 하드용량 초과로 트렌젝션중 파일이 손상되었을때 치료- myisamchk --safe-recover 테이블명.myi

DBMS/MySql]_character_set_(encoding)_변경하기




디비 서버 기동시 character set 변경
./bin/mysqld_safe --user=mysql --default-character-set=원하는 언어 타입 &
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
                                               이부분을 변경하고자 하는 언어타입으로 설정
               Client characterset:    latin1   +
               Db     characterset:    latin1  ==> 이부분이 "원하는 언어 타입"으로 바뀝니다.


디비의 character set 변경
mysql> ALTER DATABASE DB명 DEFAULT CHARACTER SET 변경할 언어 타입;

연결시 character set 변경
mysql> SET character_set_connection = 언어 타입;
       Conn.  characterset:    euckr ==> 이부분이 설정한 "언어타입"으로 변합니다. (\s 명령으로 확인시)
Server characterset:    euckr
 변경하는 방법은 아직 찾지 못했음...

[DBMS/MySQL/FreeBSD]proftp와_mysql연동하기



이글은 www.godisgreen.com/wikix/index.php 에서 인용한 글을 기초로 작성된것입니다.



OS : FreeBSD 5.3R

System : intel P3-850 dual

Memory : 512M

HDD : Ultra SCSI 9G*2



FreeBSD(이 하 프비)5.3R의 설치가 되었다고 가정하고 시작합니다.

데몬이나 어플리케이션의 설치는 PORTS 설치를 기본으로 합니다.




Proftp설치



1.proftp를 설치합니다.

# cd /usr/ports/ftp/proftpd-mysql

=> 포트 디렉토리에 보면 proftp와 proftp-mysql이 있습니다. 저는 proftp-mysql을 기준으로 설명합니다.

# make install

(만 약 proftpd에서 설치시

make install clean WITH_MYSQL

과 같이 WITH_MYSQL 옵션을 줘야 한답니다.)


MYSQL설치



2. mysql을 설치합니다.

# cd /usr/ports/databases/mysql40-server

--> mysql 버전이 5.x 가 있지만 proftpd포트 설치시 mysql4.x 클라이언트

를 설치하므로 버전을 맞추기 위해 4.x 를 설치하기로 합니다.

# make install clean WITH_CHARSET=euc_kr BUILD_OPTIMIZED=yes

(

mysql41-server 의 경우 WITH_CHARSET옵션의 값이 euckr로 변경됨.

mysql 4.1버전의 경우

# make install clean WITH_CHARSET=euckr BUILD_OPTIMIZED=yes

)

# /usr/local/bin/mysql_install_db

==> 처음으로 mysql을 사용하기 전에 시스템 DB를 만들기 위한 스크립트를

실행합니다.

위 명령은 mysql을 설치한 후 반드시 한번만 하시기 바랍니다.



3. 설치 확인 작업

# /usr/local/bin : mysql바이너리 파일들이 있나 확인

# /usr/local/etc/rc.d/mysql-server.sh : mysql 기동 스크립트

# /var/db/mysql : mysql 데이터베이스 파일



4. 데몬 시작및 중지하기

4.1. 시작하기

# /usr/local/etc/rc.d/mysql-server.sh start 혹은

/usr/local/bin/mysqld_safe -user=mysql &



4.2 중지하기

# /usr/local/etc/rc.d/mysql-server.sh stop 혹은

/usr/local/bin/mysqladmin -u root shutdown



5. mysql 데이터베이스를 사용하기 전에

반드시 루트 암호를 생성하고 사용하시기 바랍니다.

#/usr/local/bin/mysqladmin -u root password '새로운 비밀번호'

#/usr/local/bin/mysqladmin -u root -h 호스트명 password '새로운 비밀번호'



6. 데이터베이스 사용하기

#/usr/local/bin/mysql -u root -p

password :




** 만약 위와같이 작업시 에러발생하는 경우


5번 작업시 에러발생시에는

1. 우선 mysql서버 데몬을 죽인다.

# kill mysql_pid 혹은

/usr/local/etc/rc.d/mysql-server.sh stop



2. /usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

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

편 집내용.

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean > /dev/null &

를 다음과 같이 수정합니다 .

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean --skip-grant > /dev/null &



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



3. mysql서버 데몬을 다시 시작한다.

# /usr/local/etc/rc.d/mysql-server.sh start



4. 위와같이 하면 권한 테이블을 사용하고 데몬을 띄우게 됩니다.

5. mysql에 접속하여

# /usr/local/bin/mysql -u root -p

6. root의 암호를 변경합니다.

mysql> use mysql;

mysql> select * from user where user = 'root';

mysql> update user SET password = PASSWORD('newpassword');

7. 권한 테이블을 다시 읽는다.

mysql> flush privileges;

8. mysql을 종료

mysql> \q



9. mysql 서버 데몬 죽입니다.

#/usr/local/etc/rc.d/mysql-server.sh stop



10./usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

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

편집내용.

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean --skip-grant > /dev/null &

를 다음과 같이 수정합니다 .

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean > /dev/null &



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

다 시 원상복귀 합니다.



11. mysql 서버를 다시 시작합니다.

#/usr/local/etc/rc.d/mysql-server.sh start



12. 정상적으로 mysql을 사용가능합니다.




proftpd 를 위한 mysql설정하기



1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');



mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;









2. DB생성 후에 테이블 구조를 해당 DB(proftp DB)에 만들어 줍니다.



##테이블 groups



##################
# 테이블 groups
##################


Create Table groups(
gname varchar(12) NOT NULL default ''
, gid int(10) unsigned default NULL
, members text
, primary key (gname)
) TYPE=MyISAM;



##################
# 테이블 users
##################


Create Table users(
userid varchar(12) NOT NULL default ''
, uid int(10) unsigned NOT NULL auto_increment
, gid int(10) unsigned default '1000'
, passwd varchar(63) default NULL
, shell varchar(255) default '/bin/sh'
, homedir varcahr(255) default '/home/data'
, count int(10) unsigned NOT NULL default '1'
, valid int(10) unsigned default '0'
, email varchar(50) default NULL
, name varchar(30) binary NOT NULL default ''
, reg_date datetime default NULL
, ip varchar(17) default NULL
, primary key(userid)
, key uid_primary(uid)
, key index_name(name)
) TYPE=MyISAM;






** mysql은 탭을 구분하지 못하므로 스페이스로 구분하여 입력하기 바랍니다.

[DBMS/MYSQL]_mysql_유지보수_MYD,MYI,FRM



[[[ SQL 자료의 이전과 dump ]]]
table dump (특정 테이블을 sql 문으로 저장하기)
./mysqldump -u ID -p DBname tablename > tablename.sql
-------------------------------------------------------------------------
특 정 table 깔기
./mysql -u ID -p DBname < table.sql
--------------------------------------------------------------------------
특 정 테이블 지우기
./mysql -u DBname -p
./use DB
./drop table tablename;
---------------------------------------------------------------------------
DB 을 모두 sql Dump 백업
./mysqldump -u ID -p DBname > ***.sql
./mysql -u ID -p DB < ***.sql
***********************************************************
 [[[[[[[[[[[ 테이블의 유지 보수 ]]]]]]]]]]]]]]]]]]]]]]
전원중단,비정상종료,frm화일 삭제수정등에 의한 DB 이상
mysql 의 테이블 검사 및 오류를 수정하는 유틸리티
* myisamchk 를 사용시 mysql를 종료한다.
* 테이블은 3개 화일 : frm, MYI, MYD 파일을 검사한다.
   frm(테이블구조기록), MYI(테이블인덱스화일), MYD (데이터화일)
------------------------------------------------------------------------
myisamchk table명 (table 조회 검색)
myisamchk --recover --quick table명 (빠른복구)
myisamchk --recover table명 (복구)
myisamchk --safe-recover table명 (재오류시)
-------------------------------------------------------------------------
복 구되지 않는 경우
-테이블구조가 기록된 frm 파일이 삭제 또는 손상
-테이블 인덱스 파일은 MYI 삭제 손상된 경우
-MYD 는 데이터 파일
---------------------------------------------------------------------------
myisamchk -r table명
(테이블 파일의 빈공간등을 없에 최적화 시킨다.)
-a : 흩어진 인덱스를 모아 속도 향상
-S : 인덱스트리 소팅 검색 속도 향상
-R : 인덱스 기준 레코드 정렬 속도 향상
      myisamchk -R1 tablename
      * 1번 인덱스 기준 레코드 정렬
-----------------------------------------------------------------
[[[[[[ EXCEL 에 있는 자료 mysql로 이전하기 ]]]]]]]
1. 엑셀의 화일을 파일형식-텍스트(탭으로분리)로 선택 저장
    * sample.txt
  ex) 허정수  A  경기도
        이효진  B  구리시
2. FTP 로 전송후 LOAD DATA INFILE 명령으로 테이블 입력
    * 미리 테이블이 생성되어 있어야 한다.
    * 해당 txt 에 맞게 테이블을 만들어 주세요!
3.LOAD DATA INFILE 'sample.txt'  INTO TABLE sample
   LINES  TERMINATED BY '\r\n' ;
   * '\r\n' 줄구분차이 도스 원도우
4. select * from sample;


----
복구하는 방법은 ...
mysql data 디렉토리에 그냥 같다가 놓는겁니다 ^^

.frm 파일은 테이블 구조가 저장되어 있는 파일입니다
.MYD 파일은 실제 데이터가 들어있는 파일입니다
.MYI 파일은 Index 정보가 들어가 있는 파일입니다
위 3개의 파일을 손상되지 않은 상태에서 가지고 계신다면
그냥 갖다가 놓는것 만으로 복구하실 수 있습니다
단, 퍼미션 조절은 해주셔야겠지요퍼 미션 조절 안하시면 나중에 DB 파일을 읽어오지 못합니다

그리고 저 파일들을 .sql 형태로 변환하는 방법은 없습니다
적 어도 제가 알기론요..
다만
백업받으실때 .sql 형태로 백업받을 수는 있습니다
mysqldump -A -u root -p > mysql_bakup_all.sql
이렇게 하시면 모든 데이터베이스를 .sql 형태로 백업받게 됩니다
특 정 DB 만, 혹은 특정 Table 만 백업받는 방법은
Mysql 메뉴얼을 참조하시구요..
더 자세한 답변은 여기 계신 고수분들께서 해주실겁니다
그리고
database.sarang.net 사이트로 한번 들려보세요

2012-09-16

DBMS/오라클]ora-09925 해결책(파일시스템 풀인 경우)


oracle의 admin/sid/pfile 에 보면 init 파일이 존재하는데 이곳에서 다음의 블록 부분을 확인한다.
사용자 삽입 이미지

그런다음 그 위치로 가서 디렉토리의 용량이 찼는지 확인한 다음, 만약 찼으면 파일들을 지워준다.
사용자 삽입 이미지
그러면 해결될 것이당~~^^)/

DBMS/오라클]프로시저 대신 패키지를 써야 하는 이유


출처 : http://mt1716.egloos.com/9176977


프로 시저 대신 패키지를 써야 하는 이유

오라클 패키지의 마법을 풀어봅시다 - 프로시저 대신 패키지를 써야 하는 이유

Advanced Oracle 2007/07/29 02:00
많은 오라클 전문가들이 프로시저대신 패키지를 사용할 것을 권장한다. 특히 패키지를 만든 오라클 사람들이...
하지만, 왜 그럴까? 많은 사람들이 이 사실을 모르고, 심지어 프로시저를 사용하면 되는데 패키지가 무슨 필요? 라며 잘못된 견해를 전파한다.
프로시저가 아닌패키지를 사용해야 하는 이유는, 결론부터 말하면 패키지의 향상된 의존성(Dependency)관리때문이다.
아래 간단한 패키지와 프로시저가 있다. 이 둘의 기능(하는 일)은 완전히 동일하다. 다만 하나는 패키지로 구현되어 있고, 다른 하나의 프로시저로 구현되어 있을 뿐이다.
-- 패키지
create or replace package pkgtest as
procedure pkgtest_proc(v_id int);
end pkgtest;
/
create or replace package body pkgtest as
procedure pkgtest_proc(v_id int)
is
v_name varchar2(1);
begin
select name into v_name from pkgtest_table;
end;
end pkgtest;
/
-- 프로시저
create or replace procedure nopkg_proc(v_id int)
is
v_name varchar2(1);
begin
select name into v_name from pkgtest_table;
end;
/
여기서 주목해야 할 것은 pkgtest 패키지와 nopkg_proc 프로시저가 모두 pkgtest_table에 대해 의존성(Dependency)를 가지고 있다는 사실이다. 여기에서 간혹 심각한 문제가 발생한다.
Pkgtest_table에 대해 DDL을 수행하게 되면 이 테이블을 참조하고 있는 모든 객체에 대해 무효화(Invalidation)가 수행된다.아래 스크립트를 보자
-- pkgtest_table에 대해 의존성을 가지는 패키지와 프로시저가 Valid 상태이다.
SQL> select object_name,object_type, status
from dba_objects where object_name in ('PKGTEST', 'NOPKG_PROC');

OBJECT_NAM OBJECT_TYPE STATUS
---------- -------------------- --------------
NOPKG_PROCPROCEDURE VALID
PKGTEST PACKAGE VALID
PKGTEST PACKAGE BODYVALID
-- Pkgtest_table에 대해 Alter를 수행하면?
SQL> alter table pkgtest_table add name2 varchar(1);

OBJECT_NAMOBJECT_TYPE STATUS
------------------------------ --------------
NOPKG_PROCPROCEDURE INVALID
PKGTEST PACKAGE VALID
PKGTESTPACKAGE BODYINVALID
위의 결과에서 다음과 같은 재밌는 사실을 발견할 수 있다.
  • NOPKG_PROC 프로시저는 기대했던 대로 INVALID 상태가 되었음을 알 수 있다.
  • PKGTEST 패키지는 좀 특이한다.
    • PKGTEST 패키지 바디(body)기대했던 대로 INVALID 상태가 되었음을 알 수 있다.
    • 반면 PKGTEST 패키지 자체는 놀랍게도 여전히 VALID 상태이다.
패 키지의 이러한 특징을 가리켜 흔히 "패키지는 의존성 체인을 깬다"라는 표현을 사용한다. 위의 예를 들면 pkgtest_table이 변경됨으로써 pkgtest 패키지가 무효화될 위기임에도 불구하고 중간에 패키지 바디라는 중간 객체만이 무효화되고 패키지 자체는 무효화되지 않는다.
이 패키지의 특정, 즉 의존성 체인을 깨는 특징이 왜 그렇게 중요할까? 그 이유는 하드 파싱과 관련이 있다.
만일 수십 개의 프로시저가 이 pkgtest_table에 대해 의존성을 가지는 상태에서 운영상의 이유로 pkgtest_table을 Alter했다고 가정해보자. 이 수십 개의 프로시저가 모두 INVALID 상태가 될 것이고, 따라서 이 프로시저들을 수행하는 모든 쿼리는 재컴파일이 이루어져 한다. 붐~! 아마 library cache pin이라는 이름의 대기 현상의 증가하면서 자칫 시스템 장애를 불러일으킬 수 있다.
하지만 프로시저가 아닌 패키지로 되어 있었다면? 다행히 패키지 자체는 여전히 VALID 상태이이 때문에 이 패키지들을 사용하는 모든 쿼리 또한 재사용이 가능하 다. 실행 시점에 패키지 바디만 리컴파일해주면 된다. 옙!! 여러분은 방금 시스템 장애로부터 사장님을 구한 셈이다.
이것을 증명하기 위해 pkgtest_table을 Alter한 후, 다음과 같이 패키지와 프로시저의 수행 결과를 SQL Trace를 이용해 분석해보자.
-- 패키지를 참고하는 쿼리 문장은 하드 파싱을 수행하지 않는다.(즉, Library cache Miss가 발생하지 않으며 리컴파일또한 수행하지 않는다)
BEGIN pkgtest.pkgtest_proc(1); END;

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.01 0.01 0 0 1 1
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.01 0.01 0 0 1 1
Misses in library cache during parse: 0 <-- 여기를 주목하세요!!Optimizer mode: ALL_ROWS
Parsing user id: 55
-- 하지만 프리시저를 사용하는 하드파싱을 수행한다.(즉, Library cache miss가 발생하고 리컴파일을 수행한다)
BEGIN nopkg_proc(1); END;

call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.01 0 0 1 0
Execute 1 0.00 0.00 0 0 0 1
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 2 0.01 0.01 0 0 1 1
Misses in library cache during parse: 1 <-- 여기를 주목. 모든 악의 근원!!!Optimizer mode: ALL_ROWS
Parsing user id: 55
왜 오라클이 굳이 패키지라는 복잡한 개념을 구현했는지 이해가 되는가? 프로그래밍의 간편함과 더불어 쿼리 재사용성 증가라는 탁월한 효과를 얻을 수 있기 때문이다.
이제 입질이 슬슬 오는가...?
PS)
SQL Server 2005 에서는 Statement Level의 Recompile을 지원함으로써 오라클의 패키지와 동일한 효과를 제공한다. 자세한 내용은 나중에...
하드파싱(리컴파일)에 의한 library cache pin 대기 현상에 대해서는 아래 필자의 책 참고~~

2012-09-14

Linix] centos45_oracle10gr2설치하기


이 문서는 http://supike.spaces.live.com/blog/cns!502FB505094D1443!377.entry http://tykim.wordpress.com/2007/04/11/red-hat-rhel4에-oralcle-10g-r2-설치-intsall-howto 사이트를 참조하여 재구성 하였으며, 전체적으로는 http://tykim.wordpress.com/2007/04/11/red-hat-rhel4에-oralcle-10g-r2-설치-intsall-howto를 기반으로 하였 고, 단지 1가지 측면의 설치 방법을 다루고 있다. 
================================================================================================
CentOS 4.5 에 Oralcle 10g R2 설치, Intsall HOWTO
Filed under: Syste m Guru — Peter Kim @ 수정 : journae
CentOS4.5(RedHat REHL4 clone) 에서 10g를 설치 가이드 자료가 많지 않아 기록차원으로 남긴다. 
0.개요
   1) 시스템 요구 사항 검증
   2) 디렉토리 생성
   3) 오라클 그룹 및 사용자 계정 생성
   4) Linux 커널 매개변수 설정
   5) Oracle계정 Shell Limit 설정
   6) Oracle 계정 환경 변수
   7) Oracle 설치   

Oracle 사용 
0. 전제 조건 OS 는 쉽게 구할 수 있는 Centos 4.5 를 사용했다. 처음에 Centos 5.0 으로 설치를 시도 했으나 gcc, glibc 등의 버전이 맞지 않아 4.5로 downgrade 한 후 다시 설치를 진행했다.
참고로, centos 설치도 GUI를 지원하는 관계로 설치가 예전보다 훨씬 편하다. 아직 윈도우 보다는 불편(?)하지만 …^^ 

1. 시스템 요구사항 검증1) Kernel 버전 확인 하여 Kernel버전 및 Architecture(i386, x86_64등)을 확인
    # uname -a

2) 설치 필요 패키지를 확인
    * gcc-3.4.3-9.EL4
    * make-3.80-5
    * binutils- 2.15.92.0.2-10.EL4
    * openmotif-2.1.30-11
    * setarch-1.6-1
    * compat-db-4.1.25-9
    - # rpm -q <패키지명> (ex:rpm -q binutils)으로 설치 여부 및 버전확인하여 최근 상위 본으로 설치한다. 특히 binutils는 최신본으로 설치할 것 (binutils를 상기 버전으로하면 중간에 skip가능한 오류가 하나 나옴)
    - 패키지의 설치는 RHN의 up2date 혹은 CentOS의 yum을 통해서 update하거나,      RPM repository 서비스 site를 이용하여 해당 RPM을 받아 직접 설치한다.
    - ex) yum install gcc … (package name)
    - 참고로 yum을 사용해 본 결과 상당히 편함을 느꼈다. 

2. 오라클 그룹 및 사용자 계정 생성Oralce의 운영을 위해 필요한 계정/그룹을 설치한다. —————————————————————————————-
# /usr/sbi n/groupadd oracle
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oracle -G dba oracle
# passwd oracle
—————————————————————————————-

3. 디렉토리 생성Oracle 10g (10.2.0.1.0) 설치에 필요한 디렉토리 및 권한을 설정한다. ————————————————————————————— 
# mkdir -p /u 01/app/oracle   (Oralce 프로그램 설치 폴더)
# mkdir -p / u02/ oradata      (Oracle 데이터 설치 폴더)
# chown -R oracle:oracle / u01/app/oracle / u02 /oradata# chmod -R 775 / u01/app/oracle / u02 /oradata
—————————————————————————————-

4. Linux 커널 매개변수 설정Oracle 운영에 필요한 커널 매개변수를 아래와 같이 설정한다.—————————————————————————————-
# cat >> /etc/sysctl.conf <  > kernel.shmall = 2097152  > kernel.shmmax = 2147483648  > kernel.shmmni = 4096  > kernel.sem = 250 32000 100 128  > fs.file-max = 65536  > net.ipv4.ip_local_port_range = 1024 65000  > EOF
# /sbin/sysctl -p
—————————————————————————————-
아래와 같이 상기 커널 파라메터가 적용되었는지 확인 한다. 
—————————————————————————————-
# /sbin/sysctl -a | grep shmkernel.shmmni = 4096kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shm-use-bigpages = 0
# /sbi n/sysctl -a | grep semkernel.sem = 250        32000   100     128
# /sbin/sysctl -a | grep file-maxfs.file-max = 65536
# /sbin/sysctl -a | grep ip_local_port_rangenet.ipv4.ip_local_port_range = 1024     65000—————————————————————————————-

5. Oracle계정 Shell Limit 설정Oracle 계정의 shell limit을 아래와 같이 설정한다.
—————————————————————————————-
cat >> /etc/security/limits.conf
cat >> /etc/pam.d/login

6. Oracle 계정 환경 변수Bourn/Korn 쉘의 경우 ~oracle/.bash_profile 파일에 대해서 아래 내용을 추가 하도록 한다.
—————————————————————————————-
export ORACLE_BASE=/disk01/app/oracle                              
export ORACLE_SID=                     
* Note : SID를 orcl로 미리 설정하였음.
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1.0/db_1   
* Note : 설치 폴더를 미리 설정하였음.
export PATH=$PATH:$ORACLE_HOME/binexport LD_LIBRARY_PATH=$ORACLE_HOME/lib
—————————————————————————————-

7. 시스템 Rebooting & Check Version 시스템을 Reboot 한다.
# vi etc/redhat-release 
(파일의 내용을 redhat-4 확인 / CentOS일 경우 인식못함으로 변경) 위의 파일의 내용을 아래와 같이 변경하여 사용한다.
Red Hat Enterprise Linux As release 3 (Taroon) ”

8. Oracle 설치1) Oracle 해당 버전 download     
a. “http://otn.oracle.com/software/products/database/oracle10g/index.html” 에서         RHEL 4AS 64bit를 위해 x86-64bit인 “Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86-64″를 다운로드 받는다.        (받는 위치는 / u01/app/oracle 에 저장한다.)     
b. “unzip -d 10201_database_linux_x86_64.cpio.gz”하여 unzip을 해주고     
c. “cpio -idmv < 10201_database_linux_x86_64.cpio”를 통해서 묶음을 풀어준다.       (이러면 압축은 /u01/app/oracle/database 에 풀린다)

** 실제 파일은 10201_database_linux32.zip 파일이 다운된다. 이 파일을 푸는 방법은 unzip 10201_database_linux32.zip 하면 현재 폴더에 database 밑에 쭈~욱 풀리게 된다.

2) oracle 계정으로 login 및 설치 명령
————————————————————————————— -
$ cd /u 01/app/oracle/database
$ ./runInstaller
이때부터는 GUI 형태이므로 설명 생략 설치폴더는 / u01/app/oracle/product/10.2.0.1.0/db_1 으로 기재 
—————————————————————————————-
(RHEL4 운영체제에서 binutils, gcc, openmotif에대한 점검작업이 실패한 경우에는 경고 메시지를 무시하고 다음 단계로 진행할 것. )

9. Oracle 사용 확인 
1) Oracle Enterprise Manager 10g Database Control    설치 후 안내화면에 데이터베이스 컨트롤 URL이 나오면 기록해 놓았다가 접속    
- User Name: SYS    
- Password: <설치과정에서 입력한 패스워드>    
- Connect As: SYSDBA

2) 데이터베이스 시작 및 중단
—————————————————————————————-
$ sqlplusSQL> shutdown immediate * Oracle instance 종료 
SQL> startup                           
* Oracle instance 시작 
—————————————————————————————-