여느 때와 같이~ oracle db에 접속 중에

갑자기 ORA-28002: 7일 안에 비밀번호가 만기될 것 입니다.

라는 에러 메시지가 떴다...

찾아보니, 오라클에서 암호 사용기간을 저장하여 사용하는데 암호기간이 만료되어 이렇게 메시지가 뜨는 것이라고 한다..!

해결 방법은 아래와 같다!

SELECT RESOURCE_NAME, LIMIT
FROM DBA_PROFILES
WHERE PROFILE = 'DEFAULT'
AND RESOURCE_TYPE = 'PASSWORD';

위 쿼리를 날리면 PASSWORD_LIFE_TIME의 default가 180일인 것을 확인할 수 있다..!

이걸 앞으로 제한 없이 사용할 수 있도록 바꿀 것이다!

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

위 쿼리를 날려서 아래 이미지와 같이 UNLIMITED로 바꿔주면, 앞으로 이런 에러 메시지가 출력되지 않을 것이드악!!

 

끗!

반응형

테이블 생성하고 값을 넣으며 테스트를 하면서 발견한 오류!!

 

읽기만 가능하고 값이 수정되지 않는다..

원인은 다양하겠지만, DB 검증/재연결하거나 DBeaver 재접속을 하면 된다고 한다!

나는 재연결하였으나 되지 않아서 재접속하였더니 아무 일도 없었던 것 마냥 해결되었다!

반응형


다른 DB만 쓰다가 MSSQL을 처음 써보게 되면서 마주한 nvarchar.. 

이 친구는 또 뭘까..?

 

varchar

흔히 우리가 알고 있는 varchar는 가변 문자열이자 byte수를 기준으로 하여

영문이나 숫자, 특수문자는 1byte로 처리되며 한글이나 중국어는 2byte로 처리되는 것!

nvarchar

이에 반해 nvarchar는 유니코드 지원 가변 문자열로 글자수를 기준으로 하여

영문, 숫자 등 할 것 없이 모든 문자열을 무조건 2byte로 처리한다고 한다..!

따라서, 다국어를 지원할 일이 있으면 nvarchar를 사용하는게 좋다고 한다..^^

반응형

노트북을 새로 받아서 잡다한 작업이 늘어나게 됐다..

오라클도 새로 설치하고.. 계정도 새로 파고.. 작업하다가 그러다가 한번 재부팅 하는 순간..!

이런 오류가 뜨길래 ODBC 데이터 원본 관리자를 들어가는 순간...

ORA-12541 : TNS:리스너가 없습니다 오류 출력...

보통 Listener가 없는게 아니라 기능 실행의 문제거나.. path의 문제라고 보면 된다..

먼저 '서비스'창을 들어가서

이렇게 Listener가 정상적으로 실행되어있는지 확인하자..!

내 경우엔 Listener를 찾을 수 없다고 뜨면서 실행이 안됐는데!

처음 컴퓨터를 새로 설치했을 때, 기본 계정명으로 listener가 설치됐나보다..

오라클 폴더에서 listener.ora와 tnsnames.ora 파일을 찾고

그 안에 있는 listener.ora 파일에서

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

그리고 tnsnames.ora 파일에서는

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

호스트명을 본인의 User명에 맞게끔 바꿔주면 된다..!

그리고 서비스에서 Listener 실행!!

하면 끝 ^_^

 

반응형


Oracle 12c부터는 멀티테넌트(MutilTenant)라는 기능이 도입되었다고 한다!

말 그대로 다중의 세입자라는 뜻으로 하나의 DB 안에  여러개의 DB가 포함되어 있는 구조라고 보면 된다

이전 11g까지만 해도 비CDB 방식으로 하나의 인스턴스에 하나의 DB로 되어있었는데

컨테이너 역할을 하는 CDB(Container DB)가 있고

그 안에 들어가서 넣었다 뺄 수 있는 PDB(Pluggable DB)가 있어서

CPU와 메모리, DB 통합 등 성능적인 부분에서 높은 효율을 갖는다고  한다!

좌: 멀티테넌트DB // 우: 싱글DB

 

더 알고싶다면 구체적이고 쉽게 정리해놓은 블로그
https://jack-of-all-trades.tistory.com/286를 참고하자!

반응형

오라클 11g, 12c, 19g랑 심지어 8까지 사용하면서 이런 저런 오류를 많이 겪게 되었다..^^

그러다 갑자기 처음 보는 오류

ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.

을 맞이하게 되었는데!!

오라클 12c부터는 CDB와 PDB이라는 개념이 생기면서 공통계정 앞에는 C##을 붙이도록 바뀌었다고 한다...!


CDB, PDB에 대해서는 아래를 참조!
https://eastcold.tistory.com/24

 

[Oracle] 멀티테넌트 DB, CDB, FDB란?

Oracle 12c부터는 멀티테넌트(MutilTenant)라는 기능이 도입되었다고 한다! 말 그대로 다중의 세입자라는 뜻으로 하나의 DB 안에 여러개의 DB가 포함되어 있는 구조라고 보면 된다 이전 11g까지만 해도

eastcold.tistory.com

 

그래서 좌측 하단 이미지의 SP DB의 이름을 SP로 만들지 않고 C##을 붙여

C##SP DB로 생성하였다!!

좌측:멀티테넌트DB // 우측: 싱글DB

 

반응형

'[ 개발 ] > DB' 카테고리의 다른 글

[MSSQL] varchar와 nvarchar  (0) 2022.09.01
[Oracle] ORA-12541, ORA-12514  (0) 2022.07.14
[Oracle] 멀티테넌트 DB, CDB, FDB란?  (0) 2022.06.28
[DB] DDL, DML, DCL, TCL 정리표  (0) 2021.05.20
[DB] view에서 사용하는 with check option  (0) 2021.04.21

 


비전공자라 정처기를 하면서 처음 공부하게 됐는데..

SQLD를 취득할 때도 요긴하게 썼다..!


암기 TIP
에 써놓은 것처럼


조금은 억지스러워도 나만의 암기 방식을 만들어놓으면 잊어버리질 않더라구~

명령어 종류 명령어 설명 암기 TIP
DDL
(데이터 정의어 /

Data Definition Language)
CREATE

ALTER

RENAME

DROP

TRUNCATE
테이블과 같은 데이터 구조를 정의하는데
사용되는 명령어
(생성, 변경, 삭제, 이름변경) 데이터 구조와 관련됨
정의로운 CARD T
DML
(데이터 조작어 /
Data Manipulation Language)


SELECT
(=RETRIEVE)
DB에 들어 있는 데이터를
조회하거나 검색하기 위한 명령어
조작하는 SIDU
INSERT

UPDATE

DELETE 
DB 테이블에 들어 있는 데이터에 변형을
가하는 종류(데이터 삽입, 갱신, 삭제)의 명령어

DCL
(데이터 제어어 /
Data Control Language)

GRANT

REVOKE 
DB에 접근하고
객체들을 사용하도록 권한을 주고 회수하는
명령어
CL은 GRCR
TCL
(트랜잭션 제어어 /
Transaction Control Language)
COMMIT

ROLLBACK

SAVEPOINT 
논리적인 작업의 단위를 묶어서
DML에의해 조작된 결과를
작업단위(트랜잭션) 별로 제어하는 명령어

DCL에서 트랜잭션을 제어하는 명령인
COMMIT과 ROLLBACK 만을 따로 분리함

 

 

반응형

 

 

Q.

학생 테이블에서 성별이 '여'인 학생들의 이름과 성별을 '여학생'이라는 뷰로 정의하는 SQL문을 작성하시오.

(단, 뷰에 대한 수정, 삽입 연산이 실행될 경우 WHERE 절 조건에위배될 경우는 실행을 거부한다.)

 

A. 

CREATE VIEW 여학생(이름, 성별)

AS

SELECT 이름, 성별 FROM 학생 WHERE 성별='여'

WITH CHECK OPTION;

 

 

여기서 WITH CHECK OPTION은 

해당 제약조건 안에서만 insert, delete, update가 가능하다는 것인데

 

즉,

INSERT INTO 여학생 VALUES('김여자', '남'); 와 같이 

위의 view에 수정, 삽입 등의 연산이 실행될 경우 WITH CHECK OPTION의 조건에 어긋나

오류가 나며 실행이 되지 않는다.

반응형

+ Recent posts