ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다.

SQL/공부 2008. 10. 4. 21:14

객체를 생성할 수 있는 권한은 있는데.. 흐음~ ORA-30041: 테이블스페이스에 할당량을 부여할 수 없음 이런 에러도 함께 흐음~ 다시금 사용자를 수정했다. alter user testuser default tablespace users quota unlimited on users; 후후

ORA-01045

SQL/공부 2008. 10. 4. 21:10

ORA-01045: user TESTUSER lacks CREATE SESSION privilege; logon denied 사용자를 생성했는데 conn testuser/testpasswd 로 로그인하려고 하는데 위와같은 에러메시지가 떴다. 세션을 생성할 권한이 없다는 얘기.. 다시 sysdba 계정으로 로그인하여 conn /as sysdba testuser 에게 세션권한을 줬다. grant create session to testuser; grant create session, resource to testuser; resource 는 롤 권한을 준건데.. 사용자를 생성하고 아무일도 하지 않을건가? 테이블도 만들고 시퀀스도 만들고.. 여러 객체를 생성할텐데.. resource 는 이런것들을 할 수 있는..

ORA-28000: the account is locked

SQL/공부 2008. 10. 4. 20:57

사용자 계정이 잠겨있다는 에러코드다. sys 계정으로 로그인 한 후 해당 사용자의 잠금상태를 해제한다. alter user testuser account unlock;

유저 생성 (계정 생성)

SQL/공부 2008. 10. 4. 20:54

create user testuser identified by testpasswd account unlock; testuser 라는 아이디로 계정을 생성하는데 패스워드는 testpasswd 이고 바로 사용할수 있게 계정잠금상태를 풀어줬다.

ORA-01861: 리터럴이 형식 문자열과 일치하지 않음

SQL/공부 2008. 9. 8. 18:23

DATE 타입의 컬럼을 WHERE 문에서 BETWEEN 으로 검색하려하는데 날짜는 상관없는데 시분초까지 검색하려면 'ORA-01861: 리터럴이 형식 문자열과 일치하지 않음' 이 에러가 떴다. 구글검색결과 타입을 지정해줘야한다는 결론이 났다. 다음과 같이 하면 된다. WHERE SDATE BETWEEN TO_DATE('2008-09-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE('2008-09-08 23:59:59', 'yyyy-mm-dd hh24:mi:ss') 에공..

데이터베이스 상태 알아보기

SQL/공부 2008. 4. 17. 13:32

데이터베이스 상태 알아보기 SQL> SELECT STATUS FROM V$INSTANCE; STATUS 가 STARTED 이면 NOMOUNT 단계로 CONTROL FILE 의 문제가 있다. MOUNTED 이면 DATA FILE 이나 REDO LOG FILE 의 문제가 있다. OPEN 이면 정상으로 열림

오라클 STARTUP 단계

SQL/공부 2008. 4. 17. 13:17

STARTUP 단계 1. SHUTDOWN – 인스턴스가 닫힘 파라미터 파일이 있어야 NOMOUNT 단계로 갈 수 있다. 2. NOMOUNT – 인스턴스 시작 파라미터 파일을 읽고, SGA 를 할당하고, 백그라운드 프로세스가 시작되고, ALERT LOG 파일 및 추적파일을 연다. CONTROL FILE 이 있어야 MOUNT 단계로 갈 수 있다. 3. MOUNT – 데이터베이스의 모드를 변경하는 단계 DATAFILE 의 이름 바꾸기, ARCHIVELOG MODE 변경, DB 복구 DATA FILE, REDO LOG FILE 이 정상적으로 있어야 OPEN 단계로 갈 수 있다. 4. OPEN – 데이터베이스가 정상적으로 열린 상태 STARTUP 명령은 SHUTDOWN 단계에서만 사용할 수 있고 NOMOUNT 나..

SPFILE 생성하는 방법

SQL/공부 2008. 4. 17. 12:55

SPFILE 생성 SQL> CREATE SPFILE FROM PFILE; 일반적으로 PFILE 은 initSID.ora 라는 이름으로 되어있고, (SID 는 ORACLE_SID 로 오라클 인스턴스 명이다? ㅡ,.ㅡ;) SPFILE 은 spfileSID.ora 라는 이름으로 되어있다. 이 두가지는 초기화 매개변수로 인스턴스를 시작하기 위해 필요하다. pfile 은 텍스트 편집기에서 수정할 수 있으나 spfile 은 이진파일로 되어있어서 편집기에서는 수정할 수 없다. pfile 은 텍스트 편집기에서 수정후 인스턴스를 재시작해야 한다. spfile 은 현재 세션에서도 수정해서 적용할 수 있다.(물론 재시작후 적용되는 것도 있다.ㅡ.ㅡ) 반대로 SPFILE 에서 PFILE을 생성할 수 있다. CREATE PFI..

오라클 데이터베이스의 구조

SQL/공부 2008. 4. 17. 12:09

오라클 데이터베이스는 논리적구조와 물리적 구조로 나뉜다. 1) 논리적 구조 DataBase -> Tablespace -> Segment -> Extent -> Block(최소단위) 2) 물리적 구조 Data File, Control File, Redo Log File

오라클 서버의 구조

SQL/공부 2008. 4. 17. 11:39

공부하면서 짝대기 거가며 A4 용지에 끄적인걸 찍어서 보여주면 좋겠지만,, 일단은 그냥.. 후후^^; 오라클 서버는 일단 인스턴스와 데이터베이스로 구성되어지고 다시 인스턴스는 백그라운드 프로세스와 메모리 영역으로 나누어진다. 백그라운드 프로세스는 5개의 주요 프로세스와 기타프로세스로가 있고 메모리에는 SGA 와 PGA 가 있다. 데이터베이스는 데이터파일과 컨트롤파일, 리두로그 파일로 구성된다. 그래서 아래처럼 정리.. ^^; ORACLE SERVER 1. Instance (1) BackGround Porcess - PMON : 프로세스 모니터, 트랜잭션 롤백 - SMON : 시스템 모니터, 인스턴스 복구 - DBWR : 디비 라이터(쓰기) 체크포인트가 일어날 시, 더티버퍼 수가 한계값을 넘을시, 사용가능..

인덱스

SQL/공부 2008. 4. 15. 11:48

인덱스가 사용되지 않는 경우 - 인덱스 컬럼은 비교되기 전에 변형이 일어나면 인덱스를 사용할 수 없다. 인덱스는 가공되기 전에 값으로 생성되어 있지 가공된 후의 값을 가지고 있지않다. - 부정형으로 조건을 기술한 경우에도 인덱스를 사용하지 않는다. - 인덱스 컬럼이 null 로 비교되면 사용할 수 없다. 결합인덱스 - 첫번째 컬럼이 검색되지 않으면 소용없다. - 첫번째 컬럼이 '='으로 검색되어야 한다. between이나 like 로 검색되면 효율이 떨어진다. 개발시 인덱스 추출 요령 1. 반복 수행되는 액세스 형태를 찾는다. - 기본키, 외부키, 서브쿼리시 연결고리가 되는 컬럼 2. 분포도가 아주 양호한 컬럼들을 발췌하여 액세스 유형을 조사한다. 3. 자주 넓은 범위의 조건이 부여되는 경우를 찾는다. ..

테이블의 컬럼 갯수 알아보기

SQL/공부 2008. 4. 15. 10:50

SELECT COUNT(1) AS ColCnt FROM SYSCOLUMNS WHERE ID = ( SELECT ID FROM SYSOBJECTS WHERE NAME='Table_Name' ) 그냥 이렇게 하면 알수 있길래... ^^; 뭐 필요 없을 수도 ㅋㅋ

문자형 데이터에서 엔터값 찾기

SQL/공부 2008. 4. 15. 10:22

SELECT CHARINDEX(char(13), Title), Title FROM EnterTest 이렇게 하면 엔터가 들어간 부분에 인덱스를 구할 수 있다. 그래서 어떤 글을 썼는데, 처음 엔터까지 문장을 끊고 싶으면 substring 을 써서 처리할 수 있다. - substring(0, charindex(char(13), Title) ) 뭐 이런식으로 하면 되나?? 이건 쿼리로 한 건데 물론, 프로그램 소스에서도 처리할 수 있다. 알아서들 해보삼~ 후후후^^

메인쿼리-서브쿼리(Main Query - Sub Query)

SQL/공부 2007. 12. 7. 14:29

Main Query - Sub Query ? 사원테이블에서 최대월급을 받는 사람과 그 월급을 출력하려면.. select ename, max(sal) from emp where sal=max(sal); 이러면 되는 줄 알았건만.. ㅡ,.ㅡ;; '그룹 함수는 허가되지 않습니다' 이건 뭐여~~ 서브쿼리를 사용하자! select ename, sal from emp where sal=(select max(sal) from emp); ENAME SAL ---------- ---------- KING 5000 where 절에 있는 (select max(sal) from emp) 이 서브쿼리다. ? 여기서, JONES의 월급보다 많이 받는 사원들의 이름, 월급을 출력하려면.. select ename, sal from ..

SQL - 조인

SQL/공부 2007. 12. 7. 12:09

1. equi join - 두 테이블 사이에 서로 공통된 컬럼이 있을때 하는 조인 where 절에 증거를 줘야한다. 먼저, emp 테이블 말고 dept 테이블이 있는데 이를 확인하면.. select * from dept; DEPTNO DNAME LOC -------------------------------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 여기있는 deptno 가 emp 테이블과의 연결고리다. emp 테이블에도 deptno가 있는 것을 확인해보라. 그럼 여기서,, 각 사원들의 근무지를 보려면 select ename, loc from emp, dept where emp.deptno=d..

SQL 함수3

SQL/공부 2007. 11. 29. 17:46

max - 최대값을 출력하는 함수 다음과 같이 해보자. emp 테이블에서 월급이 제일 큰것을 출력하려면. select max(sal) from emp; MAX(SAL) --------- 5000 자, 다음은 직업이 SALESMAN 인 사원이 받는 월급 중 가장 많은 월급과 함께 직업을 같이 출력하려면.. select job, max(sal) from emp where job='SALESMAN'; -'단일 그룹의 그룹 함수가 아닙니다' 라는 메시지를 볼수 있다. 여기서 문제가 뭐냐하면, job이 SALESMAN 인 row 는 여러개니까 그것이 다 출력되려고 하고, max 값은 최대값으로 하나만 나오려고 하니까 둘이 다투다가 문제가 생기는 것이다. 따라서, 여기서 필요한 건 뭐?! group by 절이 필요..

SQL 함수2

SQL/공부 2007. 11. 29. 16:36

to_char - 말 그대로 char 로 바꿔주는 함수 바꿀 때 포맷도 줄 수 있느데, 몇개 예를 들어보면 day 는 요일을 반환하고, d 는 일수(?)를 반환한다. 뭐냐하면, 일요일부터 토요일까지 1~7까지의 숫자를 반환한다. 일요일은 1, 월요일은 2, 금요일은 6 이런식으로 반환한다 select hiredate, to_char(hiredate,'day'), to_char(hiredate,'d') from emp; HIREDATE TO_CHAR(HIREDATE,'DAY') TO_CHAR(HIREDATE,'D') --------------------------------------------------------------------- 1980-12-17 수요일 4 1981-02-20 금요일 6 198..

SQL - 함수

SQL/공부 2007. 11. 26. 14:27

upper - 대문자로 출력하는 함수 select upper('Never, give up!!') from dual; 결과 : NEVER, GIVE UP!! lower - 소문자로 출력하는 함수 select upper('Never, give up!!') from dual; 결과 : never, give up!! initcap - 앞글자만 대문자로 출력하는 함수 select upper('Never, give up!!') from dual; 결과 : Never, Give Up!! concat - 연결해서 출력 SQL> select concat(ename, sal) 2 from emp; CONCAT(ENAME,SAL) -------------------- SMITH800 ALLEN1600 WARD1250 .....

SQL 2강

SQL/공부 2007. 11. 23. 18:36

그냥 이어서... -- 연결연산자 || 연결연산자의 장점은 문자열로 표현할수 있다는 것이다. 다음을 입력해보자. select ename || ' 의 월급은 ' || sal from emp; ENAME||'의월급은'||SAL ----------------------- SMITH 의 월급은 800 ALLEN 의 월급은 1600 WARD 의 월급은 1250 -- where 절에 조건을 줘서 특정 데이터만 select -- 사원이름이 SCOTT 인 사원의 이름, 월급? select ename, sal from emp where ename = 'SCOTT'; ENAME SAL ---------- ---------- SCOTT 3000 이름을 줄때 소문자로 쓴다던지, ''(싱글쿼터) 로 감싸주지 않으면 원하는 결과..

SQL 1강

SQL/공부 2007. 11. 23. 17:52

그냥 처음 시작해서 1강임. 범위는 맘데로.. ㅡ,.ㅡ;;; 자~~ 시작!!! * SQL (Structure Query Language) 다음과 같이 5가지로 분류할 수 있다. 1. Query --> select 2. DML --> insert, update, delete 3. DDL --> create, alter, drop, truncate, rename 4. DCL --> grant, revoke 5. TCL --> commit, rollback, savepoint 이제부터는 오라클에서의 예제다. (오라클 설치는 잘 해보자!!) 오라클의 테스트 계정은 scott 이고 pw는 tiger이다. sqlplus을 실행시켜서 접속해보자. cmd창에서 sqlplus scott/tiger 를 입력하자. lock..