본문 바로가기

oracle

오라클 에러 정보 (ORA-28002) - the password will expire within sqlplus 로 로그인 할때, 아래와 같이 ORA-28002 에러가 발생하는 경우가 있습니다. Oracle 구버전의 DB에서는 잘 보이지 않던 에러인데, 패스워드 관련 보안이 강화되면서 자주 보입니다. 당연히 패스워드를 자주 바꿔주면 되겠지만... scott 같은 개발 DB유저를 매번 바꾸는 것도 매우 귀찮은 일이죠~ ㅎㅎ 아예 패스워드 관련 규칙(Rule)을 좀 느슨하게 해서 에러가 안나게 할 수도 있습니다. 위와같이 dba_profiles 딕셔너리를 조회해보면 default 프로파일에 password_life_time 이 180일, password_grace_time 이 7일로 되어 있습니다. password_life_time 은 패스워드가 만료되는 "수명" 을 말하는 것이고, password_gr.. 더보기
오라클 v$sql 에서 방금 실행한 SQL 확인하는 방법 Oracle DB 에서 실행한 SQL 내역을 조회하고자 할때 v$sql 딕셔너리뷰를 이용할 수 있습니다. v$sql 에는 이전에 실행한 SQL 문과 실행 시작시간, 종료시간, 경과시간 등의 정보가 들어있습니다. 아래는 'SCOTT' 유저에서 실행한 SQL 들에 대해서만 정보를 조회합니다. 코멘트(--)로 막아놓은 부분처럼 not in 을 써서 내부 SQL 들만 제외하고 전체를 조회할 수도 있습니다. SQL> set linesize 200 col first_load_time for a20 col last_load_time for a20 col elapsed_time for 999,999,999,999 col sql_text for a50 select sql_id, parsing_schema_name, fi.. 더보기
Oracle DB Startup nomount 안되는 경우, Hang - 버추얼박스(VirtualBox) 버츄얼박스에서 Linux OS 에 Oracle 12c DB를 설치해서 잘 사용하다가, 해당 VirtualBox 이미지를 다른 PC로 옮겨서 로딩했는데, 오라클 데이터베이스가 Startup 이 안되고 Hang 상태로 있는 경우를 경험했습니다. Startup 전체가 안되는 것뿐만 아니라, Startup 의 첫번째 단계인 Startup nomount 조차도 안되었습니다. 위 상태로 계속 행걸려서 넘어가지 않네요. 하루 종일 놔둬도 저 상태입니다. alert log 를 봐도 뭐 특별한 에러메시지가 없고 그냥 Hang ~ 찾아보니, 버츄얼박스에서 제공되는 "반가상화" 기능 때문이었습니다. 버츄얼박스를 영어 인터페이스로 사용하는 경우는 "Paravirtualization" 이라고 되어 있습니다. [설정] - [시스.. 더보기
오라클 Object 생성 SQL 보기, DDL 스크립트 추출 - 테이블, 인덱스, 뷰, 함수, 프로시져, 시퀀스 Oracle DB에서 Table, Index, Function, Procedure, View, Sequence 등의 Create SQL 문장을 확인하고자 할 때, 보통은 Orange, Toad, SQL Developer 같은 툴들을 이용하면 메뉴에 있는 기능으로 쉽게 Create DDL문을 추출할 수 있습니다. 하지만, 이런 툴이 없을 때 간단하게 SQL*Plus 상에서 이용할 수 있는 커맨드가 있습니다. dbms_metadata 패키지의 get_ddl( ) 함수를 이용하면 쉽게 오브젝트들의 생성 스크립트를 추출할 수 있습니다. 이 기능은 Oracle 9i 이상 지원됩니다. SQL> set pagesize 0 SQL> set long 40000 SQL> select dbms_metadata.get_ddl.. 더보기
오라클 파티션 인덱스 (Partition Index) 관련 팁, FAQ 정리 Oracle Partition Index 관련 제가 알고있는 수준의 정보들을 쉐어합니다. ㅎㅎ 어디까지나 제가 알고 있는 수준~~ 아주 미천하죠~ ㅋㅋ 가볍게 봐주세용. ♣ Local Index vs Global Index (로컬 인덱스 vs 글로벌 인덱스) 파티션 테이블(Partition Table)도 빠른 SQL처리를 위해서는 당연히 일반 테이블처럼 인덱스를 걸어야 합니다. 그런데, 파티션테이블의 경우 인덱스가 2종류가 있어서 헷갈리고 당황스럽죠~ 바로 Local Partitioned Index 와 Global Partitioned Index 입니다. 원래는 "파티션드(Partitioned)" 라는 말을 붙여야 하는데, 귀찮아서 그냥 제목처럼 로컬인덱스, 글로벌인덱스 라고 부르기도 합니다. 하지만, .. 더보기
오라클 해시파티션(Hash Partition)에서 Split 가능한가? 파티션 Split 이란, 하나의 파티션을 여러개로 쪼개는 것을 말합니다. 해시파티션은 해시 함수에 의해 데이터를 일정하게 분산시켜놓은 상태입니다. 이런 해시파티션에서 파티션 Split 을 생각하고 있다면, 그건 파티션 갯수를 늘리고 싶은 경우입니다. 파티션 갯수를 늘리고 싶으면 그냥 Partition Add 를 하면 됩니다. ^^ 참고 => Hash 파티션에서 Add / Drop 일반적으로 그냥 단일 Hash Partition 테이블을 Split 할 수는 없습니다. 하지만, 복합파티션(Composite Partition)의 경우는 가능합니다. 아래와 같이 Range-Hash 파티션이 있을 때, SQL> create table SALES ( sales_no number, sale_year number, s.. 더보기
오라클 Hash 파티션에서 Add / Drop / Truncate / Rename / Split / Merge 해시파티션(Hash Partition) 에서 Add / Drop 같은 게 가능할까요? 아니 필요할까요?? 뜬금없이 그런 생각이 들었는데, 얼핏 생각했을때는 당연히 필요없을 것으로 생각했었습니다. Range 파티션처럼 년도가 늘어나는 경우가 있는 것도 아니니 말입니다. 그런데, 4개로 해시파티션되어 있는 것을 5개, 6개... 로 늘릴 수도 있는거 아닐까요?? 이렇게 늘려주면 Disk I/O 분산도 더 좋아지고... 맞습니다..^^ 늘릴 수 있습니다. Add 커맨드 잘 동작합니다. SQL> create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), bi.. 더보기
Exadata SmartScan 확인 방법 - Realtime SQL Monitor 활용 오라클 "엑사데이터"에 대해 얘기할 때 가장 많이 듣는 것이 스마트스캔(Smart Scan) 이라는 기술입니다. 이 기술이 엄청난 성능 향상을 가져온다고 알려져 있죠~ 엑사데이터 머신(Exadata Machine)은 어플라이언스 머신, 일체형 장비라고 불립니다. 랙(Rack) 안에 여러대의 서버와 스토리지, 네트웍 장비들이 함께 구성되어 유기적으로 돌아가는 형태이고, 이게 사용자가 여러업체의 장비들을 사다가 구축하는 형태가 아니라, Oracle 사에서 이미 정해진 규격화된 제품들로 랙을 채워서 한꺼번에 공급하는 형태입니다. 어쨌든 랙안에 DB서버와 스토리지가 들어있는데, 이 스토리지가 CPU, Memory 가 탑재된 연산이 가능한 스토리지 장비 입니다. 이 연산이 가능한 스토리지 장비가 SQL의 일부연산.. 더보기