728x90

분류 전체보기 35

ORA-12514 listener does not currently know of SID given in connect descriptor

최종 프로젝트가 끝난 후 데이터베이스 이관을 하는 과정에서 문제가 생겼다. 스프링에서 뿐만 아니라 디벨로퍼에서도 접속이 되지 않는다. 위의 문제는 SID를 찾지 못하거나 일치하지 않을 경우 발생한다. 그래서 SID정보를 확인하기위해 listener.ora 파일과 tnsnames.ora 파일을 확인했다. 이 두 파일은 아래의 경로에 있다. C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN 위의 컴퓨터이름인 host와 port를 확인해본결과 문제는 없었다. 여기서도 host와 port를 확인한 결과 문제가 없었다. 명령프롬프트를 켜 lsnrctl services 를 입력해보면, 현재 실행중인 리스너들이 보인다. 이건 본 컴퓨터에서 확인한 결과인데 여기서..

오류노트 2022.06.12

D - 46 servlet 시작

SERVLET 데이터베이스 sql이 끝나고 간만에 이클립스로 돌아왔다. servlet이란 간단히 말해 자바 기반의 웹 어플리케이션 기술이다. 그렇기에 작업을 eclipse에서 한다. 우선 survlet만을 위한 workspace를 먼저 새로 만들었다. file - switch workspace로 새로운 workspace를 만드는데 이때, copy settings에서 preferences를 체크하면, 현재 workspace에서 세팅해놓은 폰트, 인코딩타입, 외부브라우저세팅, css, html, jsp파일에 대한 인코딩타입 까지 모든 세팅이 똑같이 옮겨가니 꼭 체크하도록하자. 새로운 workspace에 dynamic web project를 만든다. 이름은 04로 했고 바로 finish를 누르지 않고 next..

D - 45 데이터베이스 무결성 제약조건, 인덱스, 뷰, 권한, 동의어, 계층적 질의문

데이터베이스 데이터 사전 사용자와 데이터베이스 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블의 집합이다. 수정은 오라클서버에서만 가능하고, 읽기 전용 뷰에 의해 데이터 사전의 내용을 조회만 가능하다. 접두어 USER_ : 객체의 소유자만 접근 가능한 데이터 사전 뷰 : 제일 많이 사용한다. ALL_ : 자기 소유 또는 권한을 부여받은 객체만 접근 가능한 데이터 사전 뷰 DBA_ : 데이터베이스 관리자만 접근 가능한 데이터 사전 뷰 데이터사전의 종류는 10가지가 넘을 정도로 다양하다. 이 모두를 외울 필요는 없다. 이중 DICTIONARY, DBA_TABLES, DBA_TAB_COLUMNS, DBA_CONSTRAINTS 가 중요하니 최소 이정도는 알아두어야한다. 뷰 : 가상 테이블을..

D - 44 데이터베이스 pivoting insert, 트랜잭션, 시퀀스

데이터베이스 INSERT 기본적인 구문복습을 하자면,, INSERT INTO (테이블이름) (칼럼이름) VALUES (값들); 이때, 칼럼 개수와 값의 개수가 일치해야한다. 만약 칼럼을 입력하지 않으면 해당 테이블의 모든 칼럼에 값들이 순차적으로 입력될 것이다. 개수가 맞지 않다면 남은 칼럼들은 NULL값이 입력될것이다. 이 때, 개수가 맞는것도 중요하지만 당연하게도 타입또한 중요하다. 이제까지의 INSERT는 단일행삽입이였다. 데이터를 관리하는 SQL에서는 당연히 다중행 삽입도 가능하다. 삽입할 행들을 기존 다른 테이블에서 가져오는것 또한 서브쿼리를 이용해 가능하다. 이를 실험하기 위해 TBL_BOARD라는 테이블을 만들었다.(게시판) 사전 데이터가 없기 때문에 직접 5개 행을 입력했고 사전 데이터 밑..

D - 43 데이터베이스 서브쿼리, 데이터 조작어(DML) 자바스크립트 프로토타입

데이터베이스 단일행 서브쿼리 서브쿼리에서 단 하나의 행만을 검색하여 메인쿼리에 반환하는 질의문을 뜻한다. WHERE절의 조건에 서브쿼리가 사용되었다. 기본키인 아이디를 비교대상으로 사용했기에 단일행의 결과가 나올 것이다. 원하는 데이터를 골라오기 위한 문장을 우선적으로 만들고, 그 문장의 결과로 나오는 데이터를 활용해 조건을 더욱 복잡하게 줄 수도 있게 된다. 쿼리의 계획설명에서.. 옵티마이저가 계산한 cost값이 가장 적은, 가독성은 좋은 쿼리가 데이터베이스에서는 가장 좋은 쿼리인 것 같다. 위의 예제에서는 서브쿼리를 두개 사용하였다. 이런식으로 쿼리를 작성하면 서브쿼리만 두개이기 때문에 cost가 높아질 수 밖에 없다. 또한 where절에서의 서브쿼리는 메인쿼리가 실행되기전에 한번씩 실행된다. 즉, ..

D - 42 데이터베이스 OUTER JOIN, SELF JOIN, SUBQUERY 자바스크립트 생성자함수, 함수객체의 프로퍼티들

데이터베이스 조인 및 그룹 이틀차 BIRTHDATE를 활용해 계절을 나타낼 수 있게 수식을 만들고, 그걸 기준으로 그룹화하고, 정렬했다. 출력시에 CASE구문을 활용해 분기가 아닌 계절이름으로 출력되게 했고 임시데이터로 추가했었던 NULL값을 제외시켰다. 같은 예제이지만, 서브쿼리로 해봤다. 학생테이블에서 BIRTHDATE칼럼만을 가져와 계절이름으로 바꾸고, 이 결과에서 계절로 그룹화 한 후 출력했다. 조인은 어려운 개념이니 연습을 많이 해봐야 한다. 데이터베이스 첫수업때 언급했던 말 처럼, 데이터베이스는 들인 시간에 비례해 실력이 향상된다. 위의 예제는 테이블 세개를 조인하여 원하는 데이터를 출력한것인데, 자유자재로 바꿀수 있어야 필요할 때 적절한 문법을 사용할 수 있다. 카티션 곱이란 두개 이상의 테..

D - 41 데이터베이스 그룹함수, JOIN, ANSI JOIN 자바스크립트 const키워드와 let키워드, 생성자함수에 의한 객체생성

데이터베이스 어제 배웠던 DECODE함수는 실제로는 많이 사용되지 않는다. 그 상위호환인 CASE문을 자주 사용하게 될 텐데, 이는 자바에서의 IF문과 비슷하다. CASE와 END로 크게 구성되어있고 CASE문 안에 WHEN에 조건, THEN에 해당 조건을 만족했을 때 수행할 내용을 명시한다. 어제는 DECODE로 했던 것을 CASE문으로 하면 훨씬 가독성이 좋아진다는 것을 알수 있다. 여기서 TO_CHAR(BIRTHDATE, 'MM')이 반복적으로 들어가는데, 이 수식이 길어질 경우 이또한 보기 안좋을 수 있다. 그럴 경우 아직 완충제로 조금씩 맛보기만 보고있는 서브쿼리를 통해 별칭만으로 정리해줄수 있다. 수식이 길어지면 위의 방법처럼 DEPTH하나를 더 들어가 가독성이 좋게 해줄수 있다. 그룹함수 데..

D - 40 데이터베이스 문자, 날짜, 일반함수 및 DECODE 자바스크립트 전역변수를 제어하는방법(즉시실행함수, 네임스페이스 객체, 모듈패턴)

데이터베이스 어제에 이어 단일행함수로 시작하였다. SQL에서는 카운트를 1부터 하기에 함수가 결과를 찾지 못하면 0을 반환한다. INSTR함수는 그 인자가 INSTR('대상문자열', '검색할문자', 검색시작인덱스, N번째) 와 같이 최대 네개까지 올 수 있어 헷갈릴수도 있지만 막상 사용해보면 매우 직관적이니 예제를 최대한 많이 해볼 것을 권한다. LPAD, RPAD함수는 문자열이 일정한 크기가 될수 있게 왼쪽 또는 오른쪽에 지정한 문자를 삽입하는 함수이다. HTML에서 패딩과 비슷하고 자바에서 우리가 포매터로 사용했던 convert메서드가 이와 비슷한 메커니즘이다. LTRIM과 RTRIM은 문자열에서 특정 문자를 삭제하는 함수이다. L은 왼쪽부터, R은 오른쪽의 맨 끝이 지정된 문자와 일치할 경우 지정된..

D - 39 데이터베이스 함수, 자바스크립트 스코프

데이터베이스 NULL 컬럼에 아무런 값이 없을 경우 컬럼은 NULL상태라고 한다. NULL은 어떠한 NOT NULL 혹은 Primary key 제약조건을 포함하지 않는 경우 모든 컬럼의 데이터타입에서도 나타날 수 있다. NULL은 값을 알 수 없거나 아무런 의미가 없을 경우 사용된다. 즉 0이 아님에 주의하자. NULL값과 다른 값과의 연산 결과는 NULL이다. 특정 컬럼의 값에 조건을 걸 때, NULL일 경우를 조건을 걸고 싶다면, = NULL 이 아니라 IS NULL로 확인해야한다. ORACLE DB에서는 ''(빈 문자열)을 NULL로 취급한다. 이부분은 ORACLE DB에만 해당되는 것이므로 주의할필요가있다. 다만 평균을 구하는 함수인 AVG()의 경우 NULL값을 제외하고 연산을 한다. 다른 함수..

D - 38 데이터베이스 기본키 개념, 자바스크립트 콜백함수

데이터베이스(SQL) 처음 학생 기초 데이터를 업로드할 때 맨 앞에 쓰였던 문장이 있다. 그 문장을 보면, NLS LANGUAGE를 AMERICAN으로 바꾼 부분이 있는데 이렇게 하면 시간 포매터가 바뀐다. 월이 영문식 표기로 바뀐다. 또한 만들어놓은 테이블의 ER Diagram을 확인 하게되면 각 테이블간의 연관성을 한눈에 확인이 가능하다. 위와 같은 루트로 들어가면 ER - diagram을 확인 할 수가 있다. 이렇게 하면 각 테이블이 서로 어떻게 얽혀있는지 한눈에 확인할 수가 있다. 각 테이블간의 연관이 어떤식으로 되어있는지 소위 닭발이라 부르는 화살표로 확인이 가능하다. 데이터의 값에 NULL을 허용하는지 여부에 따라 허용가능하면 점선으로, 허용 불가할시 실선으로 표기한다. 화살표의 시작점이 여러..

728x90