mysql_insert_id() 오류
mysql_insert_id()
로 실제로는 "select LAST_INSERT_ID()"와 같은 결과를 가져온다.
문제는 이 함수가 정상 작동하지 않는 경우가 있는 부분인데...
생각보다 빨리 원인을 찾았다.
"commit" 쿼리를 실행하는 경우 원하는 결과값을 가져 오지 못한다.
실제 mysql의 myisam에서는 commit가 의미가 없기 때문에 간단히 해결 가능하다.
commit 쿼리를 제거하면 원하는 결과를 가져올 수 있다.
함수에 대한 링크는 다음을 오른쪽 함수를 클릭하기 바란다. mysql_insert_id()
'프로그래밍??? > MYSQL' 카테고리의 다른 글
mysql DB 생성/삭제, 사용자 생성/삭제, 권한부여 (0) | 2015.07.03 |
---|---|
mysql_store_result를 사용할때 주의 사항(memory leak) (0) | 2012.07.11 |
mysqladmin status 및 mysql 퍼포먼스 요소 찾아내기 (0) | 2011.09.09 |
mysql 성능 개선 파라미터 (0) | 2011.09.09 |
MYSQL의 메모리 관련 설정 변수 (서버 및 세션 레벨) (0) | 2011.09.09 |
oracle client를 통한 접속
*** 개인적으로 테스트를 위해 윈도우에 오라클을 깔고 테스트를 했다.
*** 마지막 단계에서 막힌것은 방화벽...
*** 고급 설정에서 인바운드의 1521포트를 풀어주면서 해결...
1. Toad 툴을 이용한 접속
PC에 win32_11gR1_client 설치하시면 설치 디렉토리 아래 network/ADMIN이라는 폴더가 생깁니다.
그 아래 들어가면 SAMPLE 이라는 하위 폴더에 tnsnames.ora 라는 파일이 있고
해당화일을 문서편집기로 열어 해당부분을 확인 수정한 후 아래 내용을 추가합니다.
해당이름 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 해당아이피)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 해당sid)
)
)
위 내용을 저장후 내용이 추가된 tnsnames.ora 을 network/ADMIN 폴더를 이동 합니다.
그런 뒤 토드 실행하면 "해당이름"이 자동으로 잡힙니다.
이제 접속 ID,비번을 입력하면 해당 DB를 확인할 수 있습니다.
2. 오라클 Client를 설치 않고 오라클서버 접속
첫번째 방법은 Instant Client를 pc에 설치하고 명령프롬프트 창을 이용한다.
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
오라클 공식 홈페이지에서 다운을 받는다.
▒ Instant Client Package - Basic
▒ Instant Client Package - JDBC
▒ Instant Client Package - SQL*Plus
1.위의 세가지 압축파일을 다운후 폴더를 하나 만들고 같은 폴더에 압축해제한 파일을 모아둔다.
2.Basic을 압축해제하면 oci.dll 이나오는대 이것을 C:\WINNT\SYSTEM32 폴더안에 복사시킨다.
3.파일을 모아둔 디렉토리를 환경변수의 PATH에 등록시킨다.
ex)C:\Ora\instantclient_10_2 이경로를 path에 등록
4.세팅이 끝났으면 시작->실행->cmd로 들어가서 sqlplus를 타이핑해본다.
5.사용자 인증 문자열의 구성은 다음과 같다.
Dos 창에서 다음처럼 서버에 접속합니다. ip는 임의의 ip를 사용했습니다.
C:\sqlplus username/password@mymachine.mydomain:port/service_name
C:\sqlplus dj01/dj01@123.123.100.32:1521/testdb.world
SQL>conn system/manager@123.123.100.32:1521/testdb.world
리눅스에서는 먼저 SHELL 설정을 해주자.
# vi /etc/profile.d/oracle.sh
export ORACLE_HOME=/oracle
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/oracle
export TNS_ADMIN=/oracle
export PATH=$PATH:/oracle
이제 tnsnames.ora 파일을 oracle 디렉토리 안에 넣어주자.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
대부분 chcon.. 어쩌구로 해결가능.. 귀찮으면 아예 꺼버리고 작업해도 된다.
(추가 작업시에 SELINUX를 켜고 작업했을 때 sqlplus를 구동하기 위해서 했던 작업들)
[root@localhost ~]# chcon -t textrel_shlib_t '/oracle/libnnz11.so'
[root@localhost ~]# chcon -t textrel_shlib_t '/oracle/libnnz11.so'
[root@localhost ~]# chcon -t textrel_shlib_t '/oracle/libclntsh.so.11.1'
[root@localhost ~]# chcon -t textrel_shlib_t '/oracle/libsqlplus.so'
[root@localhost ~]# chcon -t textrel_shlib_t '/oracle/libsqlplusic.so'
# sqlplus scott/****@orcl
3. 웹 관리툴 이용한 접속
오라클 데이터베이스에 접속하는 방법(Oracle을 실행하는 방법)
방법1) sqlplus : Telnet 이용(즉, TCPIP, IPX/SPX, LU6.2, AppleTalk등)
방법2) isqlplus : 웹이용(즉, Internet Explorer, Netscape등)
【예제】사용자 oracle로 로그인하여 다음 명령을 실행시킨다.
이미 auto booting script로 isqlplus가 작동중이면 이 예제는 건너 뜀
$ cd bin
$ isqlplusctl start ☜ isqlplus를 시작할 경우
$ isqlplusctl stop ☜ isqlplus를 종료할 경우
$
【예제】
1) iSQLPlus URL
웹브라우저 위치 http://192.168.0.1:5560/isqlplus
2) iSQLPlus DBA URL
웹브라우저 위치
http://192.168.0.1:5560/isqlplus/dba
3) Enterprise manager 10g Database Control URL
웹브라우저 위치
http://192.168.0.1:5500/em
4) Ultra Search URL
웹브라우저 위치
http://192.168.0.1:5620/ultrasearch
5) Ultra Search Administration Tool URL
웹브라우저 위치
http://192.168.0.1:5620/ultrasearch/admin
--------------------------------------------------------------------------------
PORT 번호는 오라클을 설치할 때 결정되는데 이를 확인하려면, $HOME/install/portlist.ini에서 확인할 수 있다.
오라클 Client 설정 - 캐릭터셋 설정하기
regedit 에서...
HKEY_LOCAL_MACHINE/software/oracle/HOME0/ 의
NLS_LANG AMERICAN_AMERICA.US7ASCII
=> 이래야 한글이 안깨져보이네;;
'프로그래밍??? > 오라클' 카테고리의 다른 글
SQL%ROWCOUNT 편리함 ^^ (0) | 2012.04.04 |
---|---|
PLSQL문법 정리 (730) | 2012.04.04 |
SQLPLUS에서 외부 스크립트 실행하기 (0) | 2012.04.04 |
프로시저 내에서 트리거 생성 쿼리 (0) | 2012.02.27 |
instant client 설치하기 (0) | 2011.12.07 |
instant client 설치하기
참조글 : http://oradim.blogspot.com/2009/08/getting-started-with-occi-linux-version_16.html
OCCI(Oracle C++ Call Interface)를 사용하기 위해 오라클의 instance client를 깔고자 했다.
그러나... 말도 안되는 여러 삽질 끝에... 바다가 보내준 저 링크를 따라 했다.
아주 쉽게 되더라. ㅠ.ㅠ
특히, 인터넷에 많이 있는 occi.h는 어디에 있는가에 대한 질문의 답도 있다.
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm<= 여기 들어 있다.
일단 오라클 홈페이지로 가서 세가지를 다운 받는다.
oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm (꼭 받을 필요는 없다. 그러나 쓸만하다. ^^ )
rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm <= 이렇게 해주면 설치 된다.
그러나 여기에도 걸림돌이 하나 있었으니... libaio가 없다고 뜨는 것이었다.
먼지 모르겠는데... 뒤져보니 비동기 io 관련 라이브러리다.
yum install libaio-0.3.105-2.x86_64 <= 이것을 통해서 설치 완료
위의 인스턴스 rpm들을 모두 설치한 후에...
쉘에 몇가지 명령들을 설치한다.
-----------------------------------------------------------------------------------------------------
** vi .bash_profile **
#oracle occi
ORACLE_BASE=/usr/lib/oracle <== 오라클 베이스 디렉토리 설정
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/11.2/client64 <== 오라클 홈 설정
export ORACLE_HOME
export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network <== 개인적으로 만든 디렉토리 tnsnames.ora 파일 위치
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin <== path 추가
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/local/lib:$ORACLE_HOME/lib <= 라이브러리 링크 디렉토리
export LD_LIBRARY_PATH
-----------------------------------------------------------------------------------------------------
source .bash_profile <== 실행하여 적용 시킨다
바다가 알려준 부분인데 언어 설정부인듯 하다.
아직 정확히 이해하지는 못했다.
-----------------------------------------------------------------------------------------------------
*** vi /etc/profile.d/oracle_env.sh ***
#NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
NLS_LANG=KOREAN_KOREA.KO16MSWIN949
-----------------------------------------------------------------------------------------------------
이정도 해주면 기본적으로 occi를 사용할 기본 환경이 구축된다.
'프로그래밍??? > 오라클' 카테고리의 다른 글
SQL%ROWCOUNT 편리함 ^^ (0) | 2012.04.04 |
---|---|
PLSQL문법 정리 (730) | 2012.04.04 |
SQLPLUS에서 외부 스크립트 실행하기 (0) | 2012.04.04 |
프로시저 내에서 트리거 생성 쿼리 (0) | 2012.02.27 |
oracle client를 통한 접속 (0) | 2011.12.07 |
SSH ROOT 계정/IP 로그인 차단하기
출처 : http://anipage.tistory.com/766
출처 : http://rootrator.tistory.com/tag/ssh%EC%B0%A8%EB%8B%A8
ssh 로그인 할때 root 로 직접 로그인 하지 못하도록 막는 방법입니다.
#vi /etc/ssh/sshd_config
아래부분의 주석을 해제하고 no 로 수정
PermitRootLogin no
#/etc/rc.d/init.d/sshd restart 프로세스 재시작
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
간혹 특정 서버의 Sucure로그를 보면 해외IP로 무수히 많은 SSH접근을 시도한 흔적이 있었다.
그래서 특정 IP또는 특정 계정만 접속이 가능하도록 설정을 하였다.
먼저 특정 IP만 SSH가 가능하도록 설정을 하기 위해선
일단 SSH를 전부 차단하도록 하자.
[root@localhost ~]# vi /etc/hosts.deny
sshd : ALL
위 설정으로 모든 호스트(IP)는 ssh 사용이 불가능하다.
이후에
[root@localhost ~]# vi /etc/hosts.allow
sshd : xxx.xxx.xxx. : ALLOW (C클래스 단위 ssh접속 허용)
sshd : xxx.xxx.xxx.xxx : ALLOW (단일 호스트 ssh 접속허용)
hosts.deny와 hosts.allow는 deny가 먼저 적용 된 후에 allow가 적용이 된다.
이제 ssh서비스를 재시작하면 끝.
계정을 차단하기 위해선 pam을 이용해야 한다.
[root@localhost ~]# vi /etc/pam.d/sshd
account required pam_access.so
해당 줄을 추가 해준다음
[root@localhost ~]# vi /etc/security/access.conf
-:ALL EXCEPT 계정1, 계정2:ALL
위 내용추가한 후에는 access.conf에 정의해준 계정 이외엔 SSH접속이 불가능하다.
'프로그래밍??? > 리눅스 및 서버 기타' 카테고리의 다른 글
리눅스 shell script로 날짜별로 로그파일 지우기 (0) | 2012.04.04 |
---|---|
linux에서 한글 깨짐 현상 (0) | 2012.03.26 |
사용자 추가 (0) | 2012.03.24 |
[vsftp]500 OOPS:could not bind listening IPv4 socket ?? (0) | 2012.02.10 |
서버 관리 기본 명령 1 (0) | 2011.08.02 |