728x90
반응형
728x90
반응형

오라클에서 실수로 삭제하거나 오데이터를 업데이트하고 commit하였을때 

복원을 시켜야하는 경우가 있었는데요.


이때 특정시간으로 되돌릴 수 있는 Oracle Flashback 기능이 있습니다.


이 플래시백 기능을 통해 삭제하거나 업데이트 전의 데이터를 조회하여 복구가 가능합니다.


SELECT  *  

FROM employee  AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)  

WHERE userid = 'aa'

;


다음과 같이 쿼리로 조회를 하면 10분 전 데이터가 조회됩니다.


단위는 SECOND, MINUTE, HOUR, DAY(초, 분, 시간, 일)로 바꿔서 조회가 가능합니다.


실수로 데이터를 업데이트하거나 삭제하신 경우 복구할 수 있도록 하세요~

728x90
반응형
728x90
반응형

테이블스페이스(tablespace)

 : 테이블 및 인덱스를 저장한 오라클의 논리적인 공간으로, 

  실제 물리적인 공간은 데이터파일(파일명.DBF)에 저장


테이블스페이스 생성 쿼리

create TABLESAPCE테이블스페이스명 DATAFILE

'저장될 디렉토리\파일명.dbf' size 100m // 100MB 크기의 파일이 생성됨

extent management local

segment space management auto;


테이블스페이스 사용하기

CREATE TABLE 테이블명(

 ID VARCHAR2(40 BYTE)       NOT NULL,

 NAME VARCHAR2(255 BYTE),

 ....

)tablespace 만든 테이블스페이스명;


 : 만든 테이블의 데이터는 만든 테이블스페이스에 저장됨


테이블 스페이스 관련 테이블

 - DBA_TABLESPACES : 테이블스페이스 목록

SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;



- DBA_DATA_FILES : 테이블스페이스 파일 목록

SELECT FILE_NAME, BYTES, STATUS FROM DBA_DATA_FILES;



- DBA_FREE_SPACE : 테이블스페이스 잔여 공간

SELECT TABLESPACE_NAME, BYTES, BLOCKS FROM DBA_FREE_SPACE;



테이블스페이스 용량 조회 쿼리

select   substr(a.tablespace_name,1,30) tablespace,

         round(sum(a.total1)/1024/1024,1) "TotalMB",

         round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "UsedMB",

         round(sum(a.sum1)/1024/1024,1) "FreeMB",

         round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "Used%"

   from

         (select   tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt

          from     dba_free_space

          group by tablespace_name

          union

          select   tablespace_name,sum(bytes) total1,0,0,0

          from     dba_data_files

          group by tablespace_name) a

   group by a.tablespace_name

   order by tablespace;


테이블스페이스 리사이즈

alter DATABASE datafile '/data/oracle/oradata/파일명.dbf' resize 20000M 

 -> 해당 디렉토리에 있는 파일명.dbf의 파일 크기를 20GB로 늘림

728x90
반응형
728x90
반응형

오라클에서 sys 계정의 암호를 잊어버린 경우 패스워드 변경하는 방법에 대해 알아보겠습니다.


1) 시작 + R 버튼을 누르고 cmd 창 실행

2) sqlplus /nolog 

 - 로그인하지 않고 sqlplus에 접속하는 방법

3) conn /as sysdba

 - OS인증을 이용해 로그인을 하는 법

4) alter user sys identifed by 변경할 암호 

5) conn sys / 변경한암호

6) show user; 

 - 정상적으로 로그인이 되었는 지 확인



728x90
반응형
728x90
반응형

오라클은 계정에 대해 패스워드 유효기간을 설정합니다.


패스워드 유효기간에 대한 기본설정은 180일로 되어있습니다.

기간 내에 암호를 변경하지 않으면 180일 이후에 로그인이 불가능합니다.

하지만 sys계정을 통해 패스워드 유효기간을 늘리거나 기간설정을 하지 않도록 할 수 있습니다.


select * from dba_profiles

where resource_type = 'PASSWORD'

;


FAILED_LOGIN_ATTEMPTS : 로그인 실패 가능 횟수

PASSWORD_LOCK_TIME : 암호가 사용기간 만료되어 계정이 잠겨진 채로 남아 있었던 일 수 (단위: 일)

PASSWORD_LIFE_TIME : 패스워드 만료 기간(단위: 일)

PASSWORD_GRACE_TIME : 패스워드 유예기간 (단위: 일)

PASSWORD_REUSE_TIME : 이전 패스워드 재사용 가능 기간 (단위: 일)

PASSWORD_REUSE_MAX : 이전 패스워드 재사용 가능 최대 횟수



CREATED : 계정 생성 날짜

1) 패스워드 유효기간 늘리기

유효기간 변경

alter user userid identified by password;  --userid : db접속아이디, password : db접속패스워드


유효기간 늘어났는 지 확인

select * from dba_users

where username = '' 

;

USERNAME : DB접속 ID, 

ACCOUNT_STATUS : 계정 상태, 

LOCK_DATE : 계정 잠긴 날짜

EXPIRY_DATE : 계정 유효 날짜

CREATED : 계정 생성 날짜


패스워드 만료시점 2018.12.04 

변경 후 2019.06.02


2) 패스워드 유효기간 무제한으로 설정


alter profile default limit password_life_time unlimited; 






728x90
반응형
728x90
반응형


웹에서 값을 넘겨 DB로 조회하려 하니 

ORA-01006 : bind variable does not exist 아래와 같이 해당 오류메세지가 뜨네요.




오류가 나는 이유는 

select * from 테이블명

where sabun = ? 


조회하는 쿼리에 값은 1개인데 1개 이상의 값을 넣었기 때문이었습니다.

반대로 조회하는 쿼리에 값은 2개인데 1개의 값만 set해주었을 경우도 해당 오류가 발생합니다.


즉, 쿼리 변수와 DAO에서 설정한 변수의 갯수가 일치하지 않아서 발생한 오류

728x90
반응형
728x90
반응형

오라클(Oracle) 최근 3개월 데이터 조회하는 조건 문입니다.


SELECT * 

FROM pro_interest

WHERE PROTHUMB_DATE (컬럼명) BETWEEN TRUNC(ADD_MONTHS(sysdate,-2)+1) - TO_CHAR(sysdate,'DD')

AND TRUNC(LAST_DAY(sysdate)) +0.99999421;


쿼리문을 실행하면 조건이 잘 적용되어있음을 알 수 있네요.



저는 테이블 조인이 필요하기에 테이블 조인후 다시 조회를 해보았습니다. 

무결성 제약조건을 제외하면 조건은 위의 조건과 동일합니다.

select  p.name, p.price, p.thumbnail_image, pi.prothumb_date, pi.code, pi.prothumb, pb.title, pb.viewcount

from pro p, pro_interest pi, pro_board pb

where p.code=pi.code and p.code=pb.code and pi.code=pb.code and pi.id=#{id} and prothumb='Y' and pi.prothumb_date(컬럼명) 

BETWEEN TRUNC(ADD_MONTHS(sysdate,-2)+1) - TO_CHAR(TO_DATE(sysdate),'DD') AND TRUNC(LAST_DAY(sysdate)) +0.99999421 

order by pi.prothumb_date desc


이상으로 포스팅 마칠게요!

728x90
반응형
728x90
반응형

오라클 sql파일 등록하는 법을 소개하려고 합니다.

얼마 전 프로젝트를 마무리 짓고 제 로컬DB로 옮기기 위해서 인데요



제가 추가해야할 DB들입니다.

먼저 DBA계정인 system계정으로 들어가 사용할 계정을 추가해줍니다.

그리고 나서 사용자 계정으로 로그인 합니다.



로그인하는 방법은 cmd창을 실행시킵니다.

1.     명령어로 sqlplus 사용자명 / 비밀번호 

저는 otphalgolocal / xxxxxxx

Connecnt to 라는 명령어가 나오면 연결이 잘 되었다는 뜻입니다.

2.     SQL파일을 실행합니다. (먼저 적당한 경로에 복사합니다)\

저는 @C:\Users\killersin\Desktop\OtphalgoLocalDB\테이블명.sql



엔터를 누르면



테이블이 잘 만들어져 있음을 확인할 수 있습니다.

Sqldeveloper로 확인을 해봅니다.



테이블이 잘 들어갔음을 확인할 수 있습니다.

이상으로 포스팅을 마치겠습니다.

감사합니다.

728x90
반응형
728x90
반응형

+ Recent posts