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
반응형

+ Recent posts