# 데이터베이스/오라클 27

[ORACLE] 21C XE 버전 OBJECT(테이블,인덱스 등.) UN SYNC 현상

[ORACLE] 21C XE 버전을 인스톨해서 실습을 진행하던 도중에 이상현상을 발견했다. 그것은 바로 쿼리툴에서 작성한 테이블이 SQL PLUS에서 찾지는 못하는 현상이였다. 분명 신규로 생성한 C##SQLP라는 동일 계정으로 접속을 했는데, 왜 이런 현상이 일어나는가? 해당 현상에 대해 원인을 알고난 지금에서는 나자신에게 참 부끄러울 수가 없다. 원인은 같은 계정이지만 서비스를 다르게 바라보기 때문이였다. 쿼리툴에서는 오라클 인스톨 당시 설정한 XEPDB1 이라는 서비스에 접속을 했었고, SQL PLUS에서는 기본 디폴드 서비스인 CDB$ROOT로 접속되어 있었다. 오늘도 하나 배워간다는 생각으로 부끄러움을 감춰본다. -- 1. SQL PLUS에서 접속한 서비스명 확인 show con_name; --..

[ORACLE] ORA-30009: CONNECT BY 작업에 대한 메모리가 부족합니다.

ORA-30009: CONNECT BY 작업에 대한 메모리가 부족합니다. Error code: 30009 SQL state: 99999 -- sort area size 확인 SELECT * FROM V$PGASTAT; aggregate PGA target parameter: 기본값은 SGA 크기의 20% 입니다. 이 파라미터를 0으로 설정하면 PGA 메모리의 자동 관리가 비활성화됨. -- sort area zie 변경 alter session set workarea_size_policy = manual; alter session set sort_area_size = 2147483647;

[ORACLE] 대용량 테이블 생성 (1,000만건)

create table 종목( 거래일시 varchar2(3), 종목코드 varchar2(4), 체결건수 number(3), 체결수량 number(4), 거래대금 number(6)); -- 아래 insert 문의 connect by시 메모리 오류를 방지하기 위해 sort_area_size 변경. alter session set sort_area_size = 1024000; insert into 종목 select round(dbms_random.value(100,999),0), dbms_random.string('L',4), round(dbms_random.value(1,999),0), round(dbms_random.value(1,9999),0), round(dbms_random.value(1,999999..

오라클 함수 작성, procedure 작성, 수정, 삭제, 연습문제

---------- 함수 작성 : 보통 값을 계산하고 결과를 반환 -------------- create [or replace] function 함수명 [(argument...)] return datatype is 변수선언 begin --pl/sql 블록에는 반드시 한개의 return 문 필요 end; ---tex(sawon_pay*0.1) 를 얻기 위한 함수 작성 연습-- create or replace function func1(no number) return number is pay number(9); begin pay := 0; select sawon_pay*0.1 into pay from sawon where sawon_no=no; -- no : 위에 아규먼트인 func1에 값을 입력받는다. r..

pl/sql, 수행 속도 향상, 모듈화, 자동화가 가능,

--PL/SQL : 수행 속도 향상, 모듈화, 자동화가 가능; create table aa(bun number, munja varchar2(10), su number); select * from aa; --변수 선언 declare no number:=0; -- 변수 만드는방법이다. (:= plsql의 치환 연산자) begin no := 500 + 400; insert into aa(bun) values(no); --이 줄은 결과확인용이라서 별로 중요하진않다. end; / select * from aa; --해당 테이블 형으로 변수 선언 declare v_a sawon%rowtype; -- v_a는 sawon타입이면서, rowtype(행을 담을 수있는 타입) 타입이다. begin select * into ..

synonym(동의어)

--동의어(synonym) : 객체에 대한 별명 동의어(Synonym)란? ------------------- Synonym(동의어) ------------------- A. 개념 - 동의어(Synonym)은 Table, View, SnapShot,Sequence,Procedure, Function, Package에 대한 별칭이다. - 공용 및 전용 동의어의 두가지 종류가 있다. 공용동의어는 public이라는 특정사용자 그룹에서 소유하며 DB의 모든 사용자가 사용할수 있다. 전용동의어는 다른 사용자에 대해 전용동의어의 가용성을 제어할수 있는 특정 사용자의 스키마에 들어있다. B. 생성 - 예를들어 scott의 Schema에 포함된 Emp Table에 대해 puiblic_emp라는 공용 Synonym생성 ..

오라클 계정 생성, 권한, 보안, 권한 관련,grant,revoke

--계정(사용자) 생성 및 권한, 보안 :DB서버를 사용하는 클라이언트들에 대해 별도의 계정을 주고, 각 계정으로만 자료를 사용할 수 있도록 한다. 이 때, 각 사용자들에 대해 sql 사용권한을 제한함으로 해서 클라이언트 자격에 맞는 권한을 행사할 수 있도록 할 수 있다. --계정 생성 create user 계정명 identified by 암호(암호명은 숫자로 시작하면 안됨) alter user 계정명 identified by 암호 drop user 계정명 --권한 관련 grant~ : 권한 부여 revoke~ : 권한 제서 cmd -> sqlplus system/oracle (시스템 계정 로그인) 오라클명령 : select * from all_users ---------------------------..

Deadlocks, 데드락 해결방안, VIEW 테이블, 수정, 삭제, 생성, 연습문제

--Deadlocks : 하나의 클라이언트가 작업을 마무리 못하고 있으면, 그 순간 다른 클라이언트는 작업 할 수 없는 상태에 빠지게된다. 즉, 두 개의 transaction이 서로의 진행을 막고 충동하는 상황 =데드락! -- 해결방안 : 클라이언트에서 rollback이나 commit으로 작업을 마무리 해주어야, 다른 클라이언트에서 작업을 진행 할 수있다. select * from sa1; update sa1 set sawon_name = '신선해' where sawon_no=7; --View 파일: 물리적인 테이블을 근거로 논리적인 가상의 테이블을 만들어 사용 : select문의 조건을 파일로 만들어 마치 실제 테이블린 것 처럼 사용. 사용 이유 : - 복잡한 query를 view로 단순화 가능 - 보..