SQL Developer에서 어느 순간부터 오라클 접속이 안되기 시작하면서, 제목과 같이 the password has expired라는 오류가 계속 뜨기 시작했다.

귀찮아서 계속 외면했으나 오라클 공부를 위해 해결법을 찾아보기로 했다.


1. Oracle sqlplus에서 문제점 해결

cmd에서 sql plus에 접속한다. 이 때, 접속하는 명령어는 다음과 같다.

 sqlplus "/as sysdba

 


접속 후, 아래의 명령어를 이용해 기간이 만료된 계정의 비밀번호를 변경한다.

 alter user (userName) identified by (password);

 

 

2. 접속 확인

다시 오라클 프로그램에 접속해 바꾼 비밀번호를 입력하고 해당 계정이 잘 접속되는지 확인한다.

1
2
3
4
5
6
<!-- 해당 달 날짜를 THIS_MONTH로 출력 -->
SELECT
  TRUNC (SYSDATE, 'MM'+ LEV - 1 AS THIS_MONTH
FROM (SELECT LEVEL AS LEV
      FROM DUAL
      CONNECT BY LEVEL <= TO_CHAR (LAST_DAY (SYSDATE), 'DD'));
cs






1. 24시간 조회

1
2
3
4
5
6
<!-- 24시간을 A_HOUR로 조회 -->
SELECT
  TO_CHAR(LEVEL, '00') AS A_HOUR
FROM
  DUAL
CONNECT BY LEVEL <= 24;
cs



2. 5분 단위의 분 조회 (00분 ~ 55분)

1
2
3
4
5
6
7
8
9
10
11
<!-- 5분 단위의 00분 ~ 55분을 A.MNT로 조회
    전체 범위를 0에서 55까지 구한 뒤, 5로 나눈 나머지가 0인 것들로만 받다 -->
SELECT
  A.MNT
FROM (SELECT
        TO_CHAR(LEVEL, '00') AS MNT
      FROM
        DUAL
      CONNECT BY LEVEL <= 55) A
WHERE
  MOD(A.MNT, 5= 0;
cs



1. 금주의 월~금요일과 월~금요일 날짜 조회

1
2
3
4
5
6
7
8
<!-- 금주 월 ~ 금요일을 컬럼 DAYDAY로, 금주 월 ~ 금 날짜를 WEEKLY_DT로 조회 -->
SELECT
  TO_CHAR(SYSDATE - 7 + LEVEL + (SELECT NEXT_DAY(SYSDATE, 1- SYSDATE
                                  FROM DUAL), 'DY''NLS_DATE_LANGUAGE=korean') AS DAYDAY,
  TO_CHAR(SYSDATE - 7 + LEVEL + (SELECT NEXT_DAY(SYSDATE, 1- SYSDATE
                                  FROM DUAL), 'MM/DD') AS WEEKLY_DT
FROM DUAL
CONNECT BY LEVEL <= 5;
cs




2. 금주 월~금요일 날짜 조회

1
2
3
4
5
6
<!-- 금주 월 ~ 금 날짜를 WEEKLY_DT로 조회 -->
SELECT
  TO_CHAR(SYSDATE - 7 + LEVEL + (SELECT NEXT_DAY(SYSDATE, 1- SYSDATE
                                  FROM DUAL), 'YYYY-MM-DD') AS WEEKLY_DT
FROM DUAL
CONNECT BY LEVEL <= 5;
cs


 

 

3. 해당 날짜에 맞는 요일 조회

1
2
3
4
5
SELECT
    TO_CHAR(TO_DATE('20170927''YYYYMMDD'+ LEVEL - 1'DY') DY
FROM
    DUAL
CONNECT BY LEVEL <= 1;
cs

\

 

MongoDB를 다루기 위하여 구글에 여러 관련 툴을 검색해 보았고 그 중 Robomongo를 많이 사용하는 것 같아 나도 Robomongo를 사용하기로 하였다.



1. 다운로드


https://robomongo.org/download

홈페이지에 접속하여 각자의 OS에 맞게 선택하여 다운로드 한다.



2. 파일 실행








3. DB 생성

생성되어 있는 DB가 없기 때문에 데이터를 저장할 DB를 생성한다.


DB명만 입력하고 Test 버튼을 누른다.


해당 문구가 나오면 연결에 성공한 것이다.

(MongoDB 연결이 되어 있어야 한다.)


만든 DB를 클릭하고 Connect 버튼을 클릭한다.



4. Collection 생성

컬렉션은 sql 용어로 변환하여 생각해보면 테이블 개념과 유사하다.



local > Collection > Create Collection



생성할 컬렉션명을 입력하고 Create 클릭.


이 글은 MongoDB를 설치했고 Node.js 패키지가 생성되었다는 가정 하에 시작한다.

 

 

1. mongoose 모듈 설치

Node.js 커맨드 창을 켠 뒤, 해당 Node.js 패키지 경로 내에서 mongoDB와 Node.js를 연결해주는 모듈인 mongoose를 설치한다.

 

npm install mongoose 

해당 명령어를 입력한 뒤 위와 같이 보인다면 모듈 설치에 성공했다는 것이다.

 

 

2.

1. DB 생성

mysql workbench에 들어가 관리자인 root로 접속

(관리자인 root 계정을 생성해놓은 상태라고 가정한다)

 

상단의 DB 생성 버튼을 누르고 DB 이름을 설정 > Collaction 설정 > Apply 클릭

(Collaction은 설정하지 않아도 됨)

 

데이터베이스 생성이 완료되었다.

 

 

2. 사용자 생성

좌측의 Users and Privileages > Add Account > Login

로그인시 사용할 Name, Password를 설정한다.

 

Limit to Hosts Matching : default는 %이다.

%는 어느 컴퓨터에서나 계정으로 접속 가능하게 한다는 뜻이다.

나는 해당 컴퓨터(IP)에서만 접속 가능하게 할 것이므로 localhost라고 적었다.

(화면에 localhost라고 적혀 있어야 하는데 local로 잘못 적음)

 

상단의 Schema Privileges > Add Entry 클릭

 

해당 계정에 권한을 부여한다.

 

Selected schema 옵션을 선택하고 방금 만들었던 DB를 선택 > OK를 클릭한다.

 

Schema 부분에 뜬 데이터베이스(스키마)를 클릭한 뒤 아래쪽에 있는 체크박스로 계정에 부여할 권한을 조정한다.

 

데이터베이스를 사용하게 될 사용자가 쿼리를 자칫 잘못 입력하여 데이터베이스 자체를 날려먹을 가능성이 있기 때문에

보통은 Object Right 부분만 권한을 모두 주고, 그 중에서도 DELETE 권한은 주지 않는 경우도 많다.

 

그러나 나는 내가 테스트용으로 사용할 것이기 때문에 DELETE 권한까지 사용할 수 있도록 부여했다.

 

또한 사용자에게 Other Rights의 권한을 부여하게 될 경우 자칫 root의 다른 데이터베이스들까지 보여질 수 있기 때문에

보안 차원의 문제도 발생할 수 있어 보통 Object Rights 부분만 체크한다.

 

부여할 권한을 모두 선택했다면 Apply를 클릭한다.

 

* 반드시 DB 생성 후 사용자 생성을 해야 함 (순서대로 안하면 MySQL이 가끔 꼬임)

 

 

3. DB와 계정 연결

workbench 초기 창에서 상단의 플러스 버튼을 클릭한다.

 

Connection Name은 본인이 잘 알아볼 수 있도록 임의로 설정하고,

Username과 Password는 상단에서 설정했던 사용자 계정을 입력하고 Default Schema는 생성했던 DB명을 입력한다

(스키마는 현재 창에서 바로 입력하지 않아도 되며 추후에 입력해도 상관 없다)

 

바로 OK를 버튼을 누르지 말고 그 전에 먼저 Test Connection 버튼을 눌러 반드시 연동이 잘 되는지 확인한 후 OK를 누른다.

 

정상적으로 연결됐을 때 뜨는 창

 

명령 프롬프트 창에서 계정이 잘 연동됐는지 확인해봤다

결과는 성공.

 

 

4. MySQL 재시작

DB와 계정까지 연결했다면 MySQL을 재시작 하고 다시 로그인해본다.

 1. mongoDB 홈페이지 접속

https://www.mongodb.com/download-center 홈페이지에 접속하여 각자에 맞는 OS를 선택하고 mongoDB를 다운로드 한다.



2. msi 파일 실행


다운로드 받은 경로로 들어가 파일을 실행한다.





파일이 저장되는 경로를 D드라이브에 저장하기 위해 Complete가 아닌 Custom을 클릭하여 경로를 지정해줬다.

(Complete로 지정할 경우 기본인 C드라이브에 저장됨)






3. DB가 저장될 폴더 생성


mongoDB를 처음 설치하면 기본으로 존재하는 폴더가 bin밖에 없기 때문에 DB가 저장될 data라는 폴더를 임의로 생성하고, (폴더명 상관 없음) data  폴더 안에 db / log 폴더를 추가로 생성한다.



4. 환경 변수 설정

제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 고급 > 환경 변수 > 시스템 변수 > Path 클릭 > 편집 > 변수 값에

mongoDB > bin 폴더가 있는 경로를 그대로 붙여넣기 해준다.



5. mongoDB 실행

cmd 프로그램을 열고 mongoDB가 있는 경로까지 이동한 뒤

d:\mongoDB\bin\mongod.exe --dbpath d:\mongoDB\data

라는 명령어를 이용하여 mongoDB를 실행한다.


이 때, cmd 프로그램은 반드시 관리자 모드에서 실행되어야 하며 위의 cmd 창과 같은 문구가 나오면 연결에 성공했다고 보면 된다. 액세스 허용 창이 뜨면 허용 버튼을 누른다.

그러면 mongoDB\data 폴더에 mongoDB DB 데이터 관련 파일들이 자동으로 설치된다.


ctrl + c 버튼을 누르면 연결 중인 mongoDB가 종료된다.



6. mongod.cfg 파일 작성

1
2
3
4
5
6
7
8
# 데이터베이스 폴더
dbpath = D:\mongoDB\data
# mongdb 포트
port = 27017
# 로그 파일
logpath = D:\mongoDB\data\log\mongo.log
# 웹 관리 사용
rest = true
cs

현재 mongoDB가 설치되어 있는 경로인 D:\mongoDB에 다음과 같은 내용의 mongod.cfg라는 파일을 생성한다.

데이터베이스 폴더와 로그 파일 주소는 각자 설치한 경로에 맞게 고쳐 작성한다.



7. 서비스 등록

mongoDB는 윈도우 서비스에 등록을 지원하기 때문에 서비스를 등록하고 사용하면 훨씬 편리하다.


cmd 프로그램을 관리자 모드로 실행한 후


d:\mongoDB\bin\mongod.exe -f d:\mongoDB\mongod.cfg -install

라는 명령어를 이용하여 서비스를 등록한다.


이 때, cmd 프로그램은 반드시 관리자 모드에서 실행되어야 하며 위의 cmd 창과 같은 문구가 나오면 연결에 성공했다고 보면 된다.


그럼 이제 서비스가 제대로 등록이 되었는지 확인해보자.

시작 > 이PC > 관리 클릭





서비스 및 프로그램 > 서비스 클릭

서비스 항목에서 MongoDB를 임의로 시작 / 중지할 수 있도록 생겼다.


d:\mongoDB\bin\mongod.exe -f d:\mongoDB\mongod.cfg -remove

서비스를 제거하고 싶은 경우에는 위의 명령어를 입력하여 제거하면 된다.



8. mongoDB 시작

위에서 설정한 대로 컴퓨터 관리 > 서비스로 들어가 수동으로 시작 / 중지시켜도 되고,



net start mongodb 

라는 명령어를 입력하고, 아래와 같은 문구가 나오면 시작되었다는 표시이다.


mongod.cfg 파일 내용으로 적었던 localhost 포트 번호 127.0.0.1:27017로 접속하면 현재 드라이버 포트에 접근중이라는 이러한 문구가 뜨고


그에 1000을 더한 28017로 접속하면 정상적으로 접속되었다는 문구가 뜨는데 그 이유는 아직 mongoDB에 대해 깊이 공부하지 않아 잘 모르겠다.

오라클에서는 mysql처럼 limit가 없기 때문에 Rownum을 사용해야 한다.

ex) mysql에서 20개 가져오기
SELECT * FROM 테이블 LIMIT 20;

ex) 오라클에서 20개 가져오기
SELECT * FROM 테이블 WHERE ROWNUM >= 1 AND ROWNUM <= 20;

ex) 오라클에서 시작과 끝사이의 검색된 결과 20개 가져오기
SELECT * FROM 테이블 WHERE ROWNUM >= 1 AND ROWNUM <= 20 AND 컬럼 BETWEEN 시작 AND 끝;

 

APMSETUP의 경우, phpMyAdmin에 접속할 때 기본으로 설정되어 있는 암호가 apmsetup 이다.

아이디 root, 비밀번호 apmsetup으로 접속하면 된다.

+ Recent posts