728x90
반응형

DB (데이터베이스)/Oracle (오라클) 56

[Oracle] oracle에서 lock object를 조회하는 방법

oracle에서 object가 lock이 걸렸을 떄 조회하는 sql문을 알아보자.우선 lock에 걸리는 이유에 대해 간단하게 알아보겠습니다. DB에 A라는 사용자가 연결되었고, 동시에 B라는 사용자도 연결했습니다. A라는 사용자는 'test_a' 라는 테이블에 데이터를 삭제하는 delete문을 삭제하고 commit을 하지 않았습니다. 즉 DB에 반영이 되지 않았죠 그 상태에서 B사용자가 'test_a'라는 테이블에 데이터를 update를 했을 경우 B사용자는 A사용자가 DB에 작업을 반영할 때 까지 기다리는 일이 발생합니다. 이때 A가 'test_a'라는 테이블의 row resource를 사용하기위해 row lock을 걸었습니다. 이것을 그림으로 보면 아래와 같습니다. 이것은 매우 간단한 경우고 수많은 ..

[Oracle] oracle datafile rename방법

Oracle database에서 테이블스페이스의 datafile이름을 변경하려면 데이터베이스가 '마운트'(mount) 상태 여야한다. 1. 데이터베이스 마운트 데이터베이스를 마운트 상태로 시작한다.데이터베이스가 이미 실행중이면 데이터베이스를 close하고 마운트 상태로 전환해야 한다. shutdown immediate;startup mount;2. 데이터파일 이름 변경파일시스템 레벨 즉 OS에서 데이터파일의 이름을 변경한다. ## 리눅스일경우mv /data/a.dbf /data/b.dbf## 윈도우일 경우파일명 변경3. 데이터파일 경로 업데이트데이터베이스에서 데이터파일의 새 경로를 알려준다.  아래 SQL문을 사용하여 데이터파일 경로를 업데이트 할 수 있다. alter database rename fil..

[Oracle] oracle 실행계획 조회방법

oracle의 실행계획을 보는 방법은 다양하지만 툴 상관없이 실행계획을 보는 방법에 대해 알아보자 실행계획을 수집할 때 사용하는 oracle 키워드는  'EXPLAIN PLAN FOR' 키워드이다 'EXPLAIN PLAN FOR'을 사용하면 실행계획을 수집할 수 있다. 이 후  SELECT *FROM TABLE(DBMS_XPLAN.DISPLAY);를 통해 수집한 실행계획을 볼 수 있다. 사용 예제를 보면 위와 같이 EXPLAIN PLAN FORDELETEFROM TEST_AWHERE NAME = 'aa';의 실행계획을 수집한다.delete문을 사용했다고 해서 실제로 delete가 되는 것은 아니니 안심해도 된다.  이런식으로 실행계획을 볼 수 있다. 실행계획은 SELECT 뿐만 아니라 INSERT, DE..

[Oracle] ORA-24247 네트워크 엑세스가 ACL(엑세스 제어 목록)에 의해 거부되었습니다.

라는 애러는 UTL_SMTP의 UTL_SMTP.OPEN_CONNECTION을 사용할 떄 애러메시지가 떨어진다. 이유는 외부 네티워크 서비스에 대한 엑세스가 허용되지 않았을 때 발생한다.이를 해결하려면 UTL_SMTP를 사용하는 유저가 네트워크 서비스에 엑세스할 수 있도록 데이터베이스 제어 목록(ACL)을 설정해야 한다. 1. ACL설정새로운 ACL을 설정하고 이를 유저에게 할당한다. BEGIN DBMS_NETWORK_ACL_ADMIN.create_acl( acl => 'smtp_permission.xml', descriptions => 'ACL for SMTP Access', principal => '데이터베이스 유저 명', is_grant => TRUE, privilege => 'connect..

[Oracle] Oracle UTL_SMTP페키지로 메일 전송하기

oracle에서는 UTL_SMTP 패키지에서 메일을 전송할 수 있는 기능을 제공한다. 샘플 procedure를 작성해보자 CREATE OR REPLACE PROCEDURE SP_SEND_MAIL_TESTIS -- 받는사람, 제목, 메시지 V_TO VARCHAR2(100) := '받는사람 이메일 주소'; V_SUBJECT VARCHAR2(100) := '제목 명'; V_MESSAGE VARCHAR2(100) := '메시지'; -- 연결변수, 메일서버 호스트명, 메일서버 포트번호, 보내는 사람 L_CONNECTION UTL_SMTP.CONNECTION; L_SMTP_HOSTNAME VARCHAR2(40) := '메일서버 호스트명'; L_SMTP_PORTNUM NUMBER := 25; L_FROM VAR..

[Oracle] oracle patition의 high_value기준으로 조회하기

DBA_TAB_PARTITIONS 뷰의 HIGH_VALUE는 LONG데이터 타입이기 때문에 ORACLE에서 WHERE절을 사용해 비교할 수 없다.아래 포스트는 HIGH_VALUE를 비교하기 위해 XML로 변환 후 다시 TABLE로 변환하여 비교하는 SQL문이다. DBMS_XMLGEN.GETXMLTYPE 은 조회결과를 XML파입으로 반환하는 함수이며 SELECT DBMS_XMLGEN.GETXMLTYPE( 'SELECT * FROM TEST) AS XFROM DUAL 의 형태로 쓸 수 있다. 아래의 with절을 xml형태로 조회한다면 TEST TEST .. .. .. .. .. .. .. ..  과 같은 형태를 띄고 있다. 그리고 XMLTABLE을 통해 XML데이터를 테이블 형..

[Oracle] oracle cold 백업 방법

백업 중에는 hot백업과 cold백업 두 가지가 있다. hot 백업이란 데이터베이스가 온라인 상태 즉 서버가 켜저 있는 상태에서 백업 받는 것을 hot backup이라고 한다. cold백업 이란 데이터베이스가 오프라인 상태여서 session이 데이터베이스에 엑세스 할 수 없고, 데이터베이스의 변경이 없어 데이터를 복사하기에 가장 안전한 방법이다. 하지만 백업중 데이터베이스에 엑세스 할 수 없기 때문에 다운타임을 수반한다. 이번 포스트에서는 oracle cold백업 과정에 대해 알아보자. 예제) ※ A라는 서버에 orcl과 orcldev라는 DB instance가 2개 기동되어 있다고 가정하자. 이때 orcl의 DB와 orcldev라는 DB를 동일하게 맞춰주기 위해 orcl의 DB를 cold백업 후 -> ..

[Oracle] 리눅스 awk와 grep으로 oracle의 alert log찾기

리눅스에서 awk와 grep으로 oracle의 alert log찾는 방법에 대해 알아보겠습니다. awk로는 특정 날짜 이후의 'ORA-'라고 뜨는 애러를 보고싶다면 아래와 같은 명령어를 작성한다. awk "/2024-03-19/, EOF" alert_orcl.log | grep -B1 -A3 'ORA-' 위 스크립트를 간단하게 설명한다면 1. awk * /2024-03-19/, EOF : 범위 패턴이며 awk에게 2024-03-19라는 텍스트가 나타나는 시점부터 파일의 끝(EOF)까지 선택하라고 지시한 것이고 * alert_orcl.log : 는 처리하려는 파일입니다. 2. grep * -B1 : 'ORA-' 라는 문자열을 찾은 후 직전의 1줄도 같이 포함시킵니다. * -A3 : 'ORA-' 라는 문자열..

[Oracle] oracle temp tablespace 변경

Oracle의 temp tablespace를 변경하는 방법에 대해서 알아보겠습니다. temp tablespace의 크기를 resize해서 늘릴 수 있지만 다시 줄이는 것은 불가능합니다. 따라서 새로 temp tablespace를 생성 후 기존 temp tablespace를 삭제하는 방법으로 temp tablespace 크기를 변경합니다. 1. 현재 default temp tablesapce확인 select * from sys.props$ where name = 'DEFAULT_TEMP_TABLESPACE'; 2. temp 파일 확인 select file_id, tablespace_name, file_name, bytes/1024/1024 as mb, autoextensible from dba_temp_f..

[Oracle] oracle 리스터 포트 변경방법

운영중인 DB에서 oracle 리스너 포트 변경하는 방법에 대해서 알아보자. 0. 작업을 하기전에는 항상 백업을 하도록 하자 0-1. 리스너파일 백업 %ORACLE_HOME%\network\admin\listener.ora 파일을 listener.ora_20240315 로 백업한다. 0-2. pfile(spfile)파일 백업 pfile일 경우 %ORACLE_HOME%\dbs\initORCL.ora 파일을 복사해서 백업한다. spfile일 경우 sqlplus "/as sysdba" SQL> create pfile from spfile 위와 같이 pfile로 백업을 해준다 (pfile의 경로를 지정해도됨) 1. 리스너 중지 (lsnrctl 명령어를 사용할 수 있는 계정에서 [oracle]) lsnrctl s..

728x90
반응형