728x90
반응형
728x90
반응형

함수 호출 중에 해당 오류가 발생했습니다.

sql 로그를 찍지 않은 상황이라 문제를 찾느라 시간이 걸렸네요.

결국 서버에 로그를 찍어서 확인해본 결과 실행 함수에 데이터베이스명..함수명이 두 개로 실행되고 있엇네요.

데이터베이스명.함수명 으로 호출해야 값을 불러올 수 있는데 아주 간단한 문제였어요..

 

이것 말고도 select문에 콤마가 두개 들어가거나 하는 경우에 

ORA-01747: 열명을 올바르게 지정해 주십시오. 오류가 발생합니다.

 

SQL문을 작성할 때 콤마나 점을 누락하거나 쓰지 않도록 해야겠네요.

 

728x90
반응형
728x90
반응형

저는 오라클에서 where절에 in을 넣어서 조회를 자주 하는 편입니다.

문득 오라클 in 파라미터의 최대 몇개까지 조회가 되는지 궁금해 테스트를 해봤습니다.

 

결론부터 얘기하면 1000까지 값을 넣을 수 있습니다.

ORA-01795: maximum number of expressions in a list is 1000

또는 ORA-00939: too many arguments for function 메세지가 뜨네요.

1001개를 조회한 경우 : ORA-01795: maximum number of expressions in a list is 1000

1000개 이상을 조회한 경우 : ORA-00939: too many arguments for function 

 

추가로 저는 sql gate툴을 사용하고 있는데 select한 결과 값을 in으로 조회하고 싶은 경우가 있습니다.

값을 복사해서 엑셀로 넣어서 따옴표를 값으로 만들어 조회하거나 일일이 따옴표를 넣어서 조회를 했었습니다.

sql gate는 자동으로 in구문을 생성해주는 기능이 있습니다.

select한 값을 우클릭하면 IN 구문 생성이라는 기능이 있습니다.

클릭하면 자동으로 '','','',로 만들어준다는 사실 아주 편리한 기능이죠.

728x90
반응형
728x90
반응형

 

java.sql.SQLException: ORA-01400

오류에 대해 알아보겠습니다.

 

해당 오류는 테이블에 insert할 때 해당 컬럼에 not null 설정이 되어 있음에도 불구하고 null을 넣으려고 하기 때문에 발생한 오류입니다.

pk값에도 null을 넣으려고 한다면 해당 오류가 발생할 수 있겠죠.

 

에러 메세지 : ORA-01400: NULL을 ~~~~~ 안에 삽입할 수 없습니다.

 

개발 중에 ORA-01400 메세지를 발견하였다면 insert 쿼리를 로그로 찍어보면 금방 찾을 수 있습니다.

 

 

728x90
반응형
728x90
반응형

mssql 다국어 입력하는 법에 대해 알아보겠습니다.

일본어 데이터 입력중 メンバ (회원) 이라는 값을 입력해보니 メンバ? 물음표로 나타나였습니다.

 

1. 데이터 타입

 -기존 : char, varchar, text

 -변경 : Nchar, Nvarchar, Ntext

 

2. 쿼리 수정

 -기존 : update 테이블명 set 컬럼명='メンバー' 

 -변경 : update 테이블명 set 컬럼명=N'メンバー'

insert문 역시 동일하며 값을 입력할때 N을 붙여주면 됩니다.

대문자 N은 National을 의미합니다.

728x90
반응형
728x90
반응형

톰캣과 MySQL 연동중에 해당 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 오류가 나서 db연결이 안되었습니다. 

간단한 실수였음에도 하루 종일 찾았네요.. 

확인해보니 db접속 정보를 제대로 주지 않아서 발생한 오류였습니다.

자바와 연동하기 전에 mysql의 정보를 확인하여 툴로 먼저 접속을 합니다.

show database; 를 통해 존재하는 데이터베이스 목록을 확인합니다.

 

 

대부분 디비이름과 디비아이디는 일치한데 저같은 경우 디비이름과 디비아이디가 달라서 발생한 오류였습니다.

디비아이디 수정해주니 커넥션 정상적으로 이루어졌습니다.


<Resource name="jdbc/정해진 리소스  네임" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="디비아이디" password="디비패스워드" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://호스트주소:3306/디비이름"/> 


 - username: mysql 디비이름
 - password: mysql 디비 패스워드
 - url: 디비이름
 - maxActive: 최대 연결 가능한 Connection 수
 - maxIdle: Connection pool 유지를 위해 최대 대기 connection 수
 - maxWait: Connection 재사용을 위해 대기하는 최대 시간


728x90
반응형

'DB > MySQL' 카테고리의 다른 글

MySQL Workbench를 이용하여 테이블구조도 쉽게 만들기!!  (0) 2017.11.03
728x90
반응형

덤프파일을 임포트하는 중에 ORA-39083오류가 발생하였습니다.

먼저 임포트하기 전 덤프파일(.dmp)을 dbdump폴더에 넣어줍니다.

sqlplus에서 import 명령 도중에 아래와 같은 오류가 발생하여 임포트를 실패하였습니다. (ora-39083)

구글링 해보다가 exp받은 dmp파일과 imp한 계정의 정보가 일치하지 않아서 발생했던 것이었습니다.

예를 들어 a사용자로 exp받은 dmp파일을 b사용자가 imp한 것이었죠.

그래서 imp 명령어를 a사용자로 다시해보니 정상적으로 import되었습니다.

 

 

 

 

추가로 sqlplus에서 물리 경로 dba_directory 확인하는 방법입니다.

col DIRECTORY_NAME for a14
col OWNER for a10
col DIRECTORY_PATH for a60
set linesize 200
set pagesize 50

cmd창에서 먼저 정렬을 위해 셋팅해줍니다.


select OWNER, DIRECTORY_NAME, DIRECTORY_PATH from dba_directories;

 

728x90
반응형
728x90
반응형

sqlplus에서 테이블스페이스 생성 중에 SP2-0734 오류가 발생하였습니다.

구글링해보니 해당 오류는 개행문자가 2번 이상있을 경우 발생하는 오류라고 하네요.

해결 방법은 간단합니다 

SQL> set sqlblanklines on 

옵션을 추가해주면 됩니다.

 

만약 추가해도 안된다면 실행하려는 sql을 수정해주면 될 것 같습니다.

저는 minextents 2를 복붙하다보니 minextents2 실행되어 테이블스페이스가 생성이 안되었습니다.

상황에 맞게 처리해주면 될 것 같습니다.

728x90
반응형
728x90
반응형

오라클 테이블에 들어있는 데이터 용량에 대에 알아보겠습니다.

먼저 정확한 테이블 용량을 측정하기 위해 analyze문을 이용해 통계 정보를 작성합니다.

 

저는 삭제 전 데이터 용량과 삭제 후 데이터 용량이 필요했습니다.

삭제전 용량을 미리 측정합니다.

1) 테이블 용량 확인

select 
        table_name, 
        num_rows,
        num_rows * avg_row_len, 
        round((num_rows * avg_row_len/1024/1024),2) "SIZE(Mb)", 
        round((num_rows * avg_row_len/1024/1024/1024),2) "SIZE(Gb)",
        last_analyzed
from user_tables

where table_name='테이블명'

;
2) 데이터 삭제 후 analyze구문 이용
analyze table 테이블명 compute statistics;

3) 다시 테이블 용량 확인

select 
        table_name, 
        num_rows,
        num_rows * avg_row_len, 
        round((num_rows * avg_row_len/1024/1024),2) "SIZE(Mb)", 
        round((num_rows * avg_row_len/1024/1024/1024),2) "SIZE(Gb)",
        last_analyzed
from user_tables

where table_name='테이블명'

;

결과는 아래와 같습니다.

삭제 전 용량은 약 500MB 삭제 후 용량은 32MB로 용량이 확실히 줄어든 것을 확인할 수 있습니다.

 

 

 

728x90
반응형
728x90
반응형

+ Recent posts