생계/Oracle2022. 8. 30. 14:40

트리거는 특정이벤트가 발생시 동작하는 object 이다.  

트랜잭션의 흐름에 대해서는 대부분 인지하고 있지만 트리거에 대해서는 따로 신경쓰지 않으면 인지하기 어려워 누락되기 쉽고 장애 또는 로직의 누수로 이어질수 있다. 

DBA 입장에서는 관리포인트가 증가하는 것도 달갑지 않다. 

비슷한 이유로 디비링크도 사용을 제한 할 것을 권고해왔는데 요즘은 서비스에서는 거의 사용 안하는 편이다.

EAI 를 통해서 조회를 하라고 권고한다. 

요즘은 프로시저나 함수도 다 걷어내고 AP에서 부하를 많이 가져가는게 베스트프랙티스로 알려져있다. 

결국 DB 는 단순하게 데이터를 담는 테이블, 조회를 도와주는 인덱스, 이 두가지만 사용하는 추세이다.  

 

 

 

 

반응형

'생계 > Oracle' 카테고리의 다른 글

계층형 쿼리 start with connect 실행 순서  (0) 2022.09.10
extended varchar 사용법  (0) 2022.09.01
dbms random  (0) 2022.08.24
[oracle] db접속 안될때  (0) 2022.08.15
[oracle] 아카이브모드 변경 no arch -> arch -> no arch  (0) 2022.08.14
Posted by 돌고래트레이너
생계/Oracle2022. 8. 24. 02:11

오라클에서는 DBMS_RANDOM 패키지를 통해서 랜덤한 숫자를 추출하는 기능을 제공해주고 있다.

https://docs.oracle.com/database/121/ARPLS/d_random.htm#ARPLS040

DBMS_RANDOM

VALUE Functions The basic function gets a random number, greater than or equal to 0 and less than 1, with 38 digits to the right of the decimal (38-digit precision). Alternatively, you can get a random Oracle number x, where x is greater than or equal to l

docs.oracle.com


해당패키지의 RANDOM 함수는 11G R1 부터 deprecated 되었다.
대신 VALUE 함수를 가공해서 원하는 결과가 나오게 수정하면된다.


Q) 총 100 건 데이터 중, 랜덤하게 10건 가져오기

랜덤숫자를 뽑고 그것으로 정렬한 10건을 가져오는 것으로 sql을 작성한다면..
중복 가능성이 있다.

SELECT *
FROM ( SELECT A, B, DBMS_RANDOM.VALUE(1,100) RN FROM EMP ORDER BY RN )
WHERE ROWNUM <= 10

레코드들 간 중복없는 랜덤정렬은
아래처럼 해야 한다

SELECT *
FROM ( SELECT A, B FROM EMP ORDER BY DBMS_RANDOM.VALUE )
WHERE ROWNUM <= 10



반응형
Posted by 돌고래트레이너
생계/OERR2022. 8. 17. 10:37

ora-14064 : Index with Unusable partition exists on unique/primary constraint key

파티션 인덱스가 unusuable 상태로 제약조건 추가할때 오류.

DBA_IND_PARTITIONS 뷰에서 인덱스 확인하고 REBUILD 해주자.

EX) alter index INDEX_NAME rebuild partition PARTITION_NAME;

 

반응형
Posted by 돌고래트레이너