- 간단한 설치 및 제거 & 정보
-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-=-=-=-=-=-=
Oracle 10g (Express Edition ) License는 상업용 목적이나 교육기관용으로도 Free-pay 제품이다.
-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-=-=-=-=-=-=
★ 설치 디렉토리와 사용 Port No.
기본적으로 설치시 대상 폴더는 C:\oraclexe\ 이고, 'Oracle Database Listener'용 port No.는 1521을 사용한다. 또한 'Oracle Services for Microsoft Transaction Server'용 port No.는 2030 으로MS-SQL 과의 통신 Port를 의미한다. HTTP 리스너용 port는 8080 /* ISA에서 사용하는 PROXY PORT No와 충돌나므로 ISA에는 ORACLE을 설치하지 않는 것이 관례 */
- 설치된 ORACLE의 삭제
오라클 서버를 제거하기 위해서는 Service 에서 위 ORACLE 관련 실행 중인 Process 를 중지시켜주고, REGEDIT를 실행하여 HKLM- > SOFTWARE -> oracle 을 삭제하여 준다.
또한, HKLM->SYSTEM-> CurrentControlSet -> Service 와 …SYSTEM-> ControlSet001, ControlSet002 아래에 "Oracle…"항목들을 제거하여 준다.
(서비스에 잔재하는 정보들을 제거하는 것)
변경한 REGISTRY 값을 적용하기 위해 Rebooting 후, C:\ORACLEXE(기본값 폴더) 폴더도 제거하여 준다.
** [Standard/Enterprise] Version의 경우 C:\Program Files\Oracle… 폴더도 같이 제거하여 주어야 한다.
- 오라클 서버에 접속하는 방법
- ORA_DBA 그룹에 포함된 사용자로 접속하는 방법
ORACLE 설치 후, ORACLE 접속을 위해 생긴 Group | |||
CMD에서 편리한 사용을 위해 설정된 PATH값 확인 | |||
/nolog : SQL Prompt ">"만 출력(로그인 없이) |
/nolog : SQL Prompt ">"만 출력.
"show user" : 현 ORACLE 서버에 접속한 User 조회
- ORACLE DB 인증으로 접속하는 방법
관리자가 사용자 계정을 생성
SQL> create user seoyounghak identified by dba007$
2 default tablespace users
3 temporary tablespace temp;
SQL>conn dionysosjh /dba007$
- Listener & Tnsnames
C:\>tnsping <네트서비스명>
네트서비스명 : tnsnames,ora 파일을 편집해서 작성한다.
Listener 서비스의 작동 유무를 체크
C:\>lsnrctl [ statust | stop | start ]
<Listener 파일과 Tnsnames.ora 파일의 이해와 편집>
자신의 Listener 파일
Tnsnames.ora 파일에서 상대의 ip와 port no를 입력하여
Tnsping을 날려보고, 제대로 날라가면 된거~!
Tnsnames.ora |
oh = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) ) |
Standard or Enterprise Edition의 설치시 전역데이터베이스명( SID Name & Domain Name )을 입력하란 메뉴를 확인할 수 있다.
이 때 생성 제약 규칙 : 반드시 첫 글자는 영문자로 시작 & 최대글자 수는 영문자 8글자
Ex) edudb.or.kr
#자신이 현재 접속한 오라클 서버의 전역데이터베이스명을 조회하는 방법
SQL> select * from global_name; |
GLOBAL_NAME -------------------------------------------------------------------------------- XE |
로컬(A) | Remote(B) |
Conn dionysosjh/dba007$ | |
Conn ifaodifaid/sdijfod as sysdba | |
위와 같이 로컬과 리모트에서 이러한 과정을 거치게 되면, Remote에서는 (A)로 sysdba 권한으로 접속이 가능하다는 것을 확인할 수 있다. 이러한 이유는 두 A & B 의 "sysdba"의 PW가 같기 때문이다.
B가 A에 접속한 상태에서 shutdown immediate 를 실행하게 되면, A의 DB가 다운되면서 해당 접속이 끊어지게 된다. 이제 다시 A로 접속을 하게 되면, 휴지 계정이란 메시지가 출력되는데, 이를 다시 살리기 위해서는 "startup" 명령을 통해 다시 DB를 구동시킬 수 있다.
A와 B 시스템의 그룹(ORA_DBA)에 서로 같은 PW를 사용하는 계정이 존재하기 때문에 서로를 Authentication하는 데, 한번의 확인창도 나오지 않고, 바로 접속되는 것처럼 보이는 것이다.
만에 하나 ORA_DBA 그룹에 존재하는 "Administrator"이 A와 B 사이에 PW가 같을 수 있으므로 이를 방지하기 위해 ORA_DBA에서 "Administrator"를 삭제하여 주거나, ORACLE을 생성할 시에 만든 "SYS"나 "SYSTEM" 계정에 PW를 통한 접속을 허용하도록 설정을 변경하여 준다.
-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-==-=-=-=-==-=-
- ord 인증을 통한 SYSDBA, SYSOPER로 접속하는 방법
위의 문제점들로 인해 ORA_DBA 그룹에서 ADMINISTRATOR 그룹을 삭제하게 되면,
이제
SQL> conn /as sysdba ERROR: ORA-01031: insufficient privileges |
이와 같이 접속이 되지 않게 된다. 그러므로 이제 PASSWORD 인증을 통해 관리자계정으로 접속하는 방법을 살펴보면
SQL> conn sys/dba007$ as sysdba 연결되었습니다. SQL> show user USER은 "SYS"입니다 |
위와 같고 SYSTEM 계정을 위와 같이 접속해보면
SQL> conn system/dba007$ as sysdba ERROR: ORA-01031: insufficient privileges
경고: 이제는 ORACLE에 연결되어 있지 않습니다. |
위와 같이 접속이 이루어지지 않는 것을 확인할 수 있다. 즉 sys 계정만이 사용자가 관리자계정으로 접근이 가능하다는 것을 확인할 수 있다.
SQL> select * 2 from v$pwfile_users;
USERNAME SYSDBA SYSOPER SYS TRUE TRUE |
위 명령어를 통해 " /as sysdba" 로 접속이 가능한 사람이 sys 계정 밖에 없는 것을 확인할 수 있다.
이를 다시 확인하기 위해 사용자가 임의로 생성한 계정을 as sysdba로 접속해보면,
SQL> conn dionysosjh/dba007$ 연결되었습니다. SQL> show user USER은 "DIONYSOSJH"입니다 SQL> conn dionysosjh/dba007$ as sysdba ERROR: ORA-01031: insufficient privileges
경고: 이제는 ORACLE에 연결되어 있지 않습니다. |
위와 같이 접속이 되지 않는 것을 확인할 수 있다.
이제 사용자가 생성한 계정도 sysdba로 접속이 가능하게 하기 위해서는 아래의 상단 BOX와 같이 "Grant " 명령어로 dionysosjh에게 sysdba의 권한을 할당하여 준다.
SQL> conn sys/dba007$ as sysdba 연결되었습니다. SQL> grant sysdba to dionysosjh;
권한이 부여되었습니다. |
SQL> select * 2 from v$pwfile_users;
USERNAME SYSDBA SYSOPER ------------------------------------------------------------ SYS TRUE TRUE DIONYSOSJH TRUE FALSE |
SQL> conn dionysosjh/dba007$ 연결되었습니다. SQL> show user USER은 "DIONYSOSJH"입니다 SQL> conn dionysosjh/dba007$ as sysdba 연결되었습니다. SQL> show user USER은 "SYS"입니다 |
이제 할당해주었던 SYSDBA 권한을 해제하기 위해서는
SQL> revoke sysdba from dionysosjh; |
위와 같은 명령어 옵션으로 설정한다.
SQL> revoke sysdba from dionysosjh;
권한이 취소되었습니다.
SQL> conn dionysosjh/dba007$ as sysdba ERROR: ORA-01031: insufficient privileges
경고: 이제는 ORACLE에 연결되어 있지 않습니다. |
위와 같이 이제 dionysosjh 계정으로는 접속이 되지 않는 것을 확인할 수 있다.
- Password File
기본적으로
C:\oraclexe\app\oracle\product\10.2.0\server\database에 존재하며
PWD[SID_NAME].ora파일을 살펴보면,
위에서 쳤던 명령어 중 v$pwfile_users의 파일 내용이 위 그림과 같이 암호화(Encryption)혹은 Binary Type으로 저장된 PW정보를 확인할 수 있다.
이제 이 파일이 손상(삭제)되었을 때, 문제점과 복구법을 살펴보면, 문제점은 이제 sysdba로 접속이 되지 않는다는 것이다. 이에 대한 해결법은 %ORA_HOME%BIN\ 으로 이동하여 orapwd.exe 프로그램을 실행하여 PW 파일을 생성한다.
SQL> host orapwd file=C:\oraclexe\app\oracle\product\10.2.0\server\database\PWDXE.ora password=dba007$1 entries=5 |
Password= 새롭게 sysdba에게 할당할 PW
Entries = sysdba의 권한을 사용할 수 있는 사용자 계정의 숫자
이제 위의 입력이 완료된 후에 다시 접속을 시도해보면
SQL> conn sys/dba007$1 as sysdba 연결되었습니다. |
잘 접속이 되는 것을 확인할 수 있다.
'Database > Oracle 실습 정리(KH)' 카테고리의 다른 글
DB에 우편번호 넣기 (0) | 2010.08.11 |
---|---|
Day-2. 간단한 Query 날리기 (0) | 2009.05.29 |