검색결과 리스트
먹고살기에 해당되는 글 54건
- 2011.04.05 오라클 강좌
- 2011.04.05 ORACLE DATE (날짜 다루기)
- 2011.04.05 Database Link사용법
- 2011.04.05 사용자 세션의 강제 종료
- 2011.04.05 oracle JOIN
글
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 관리자 계정 (0) | 2011.04.05 |
---|---|
REDO LOG FILE에 대해서 (0) | 2011.04.05 |
ORACLE DATE (날짜 다루기) (0) | 2011.04.05 |
Database Link사용법 (0) | 2011.04.05 |
사용자 세션의 강제 종료 (0) | 2011.04.05 |
설정
트랙백
댓글
글
1) 현재의 날짜와 시간
SYSDATE을 사용합니다. 요번에 마친 프로젝트가 있는데, 파워빌더로 ORACLE DB연결해서 사용했거든요. 현재 날짜를 얻기 위해 다음과 같이 사용했어요.
SELECT SYSDATE
INTO :lsToday
FROM DUAL ;
그리고 날짜의 포맷은 파워빌더에서 지원해주는 것으로 사용했죠.
2) 날짜 포맷 요소
포 맷 |
설 명 |
범 위 |
포 맷 |
설 명 |
범 위 |
SS |
초 |
0 ~ 59 |
MON |
월 (약자) |
JAN ~ DEC |
SSSSS |
자정 이후의 초 |
0 ~ 86399 |
MONTH |
월 (영문) |
JANUARY ~ |
MI |
분 |
0 ~ 59 |
YY |
연도 끝 자리 |
예) 98 |
HH |
시 |
0 ~ 12 |
YYYY |
연도 (네자리) |
예) 1998 |
HH24 |
시 |
0 ~ 24 |
YEAR |
철자화된 연도 |
|
DD |
월간 일자 |
1 ~ 31 |
CC |
세기 |
예) 19 |
DAY |
요일 |
SUNDAY ~ |
Q |
분기 |
1 ~ 4 |
D |
요일 |
1 ~ 7 |
J |
율리우스력 일자 |
예) 2448000 |
DDD |
년간 일자 |
1 ~ 366 |
W |
월간 주 |
1 ~ 5 |
MM |
월 |
1 ~ 12 |
WW |
연간 주 |
1 ~ 52 |
3) 날짜를 문자열로 변환하기
- 형식 : TO_CHAR( date_column_name, format )
- FORMAT은 단일 인용부호로 둘러쌓여야 합니다.
- 예) SELECT ename, TO_CHAR( birthday, 'YYYY/MM/DD' )
FROM std_db
ORDER BY birthday ;
--> 생년월일 순으로 Sort되며 "1971/12/01"과 같은 Format으로 Display됩니다. - TO_CHAR 함수를 이용하여 문자열로 변환되면, SUBSTR과 같은 다른 문자열 함수내에서 인수로 사용할 수 있습니다.
- 예) SELECT ename, SUBSTR( TO_CHAR( birthday, 'YYYY/MM/DD' ), 1, 4 )
FROM std_db
ORDER BY birthday ;
--> 생년월일에서 연도만 Return합니다. - 년월일을 한글로 나타나게 하려면 다음과 같이 표현하면 됩니다.
- 예) SELECT ename, TO_CHAR( birthday, 'YYYY"년"MM"월"DD"일"' )
FROM std_db
ORDER BY birthday ;
4) 문자열을 날짜로 변환하기
- 형식 : TO_DATE( string_column_name, format )
- 사용법은 TO_CHAR와 비슷합니다.
5) 시분초의 표현
- 예) SELECT TO_CHAR( birthday, 'HH:MI:SS' )
FROM std_db ;
--> 태어난 시간을 "09:33:21"과 같은 형태로 Display합니다.
SELECT TO_CHAR( birthday, 'HH24:MI' )
FROM std_db ;
--> 태어난 시간을 "23:21"과 같은 형태로 시와 분을 Display합니다. - 시간을 24시간 형태로 표현하지 않고 AM, PM형태로 표현하려면
예) SELECT TO_CHAR( birthday, 'HH:MI:SS PM' )
FROM std_db ;
--> 현재 시간이 오전인지 오후인지에 상관없이 PM을 Format에 추가하면 됩니다.
6) 날짜의 더하기와 빼기
ORACLE에서는 기존의 한 날짜로부터 다른 날짜를 계산하기 위해 더하기나 빼기를 할 수 있어요~! 오늘 딸기아빠가 된 우성이가 딸기의 백일을 알고 싶으면 다음과 같이 조회하면 되죠~!
SELECT SYSDATE + 100 FROM DUAL ;
물론 두 날짜 사이의 더하기와 빼기도 가능하지요~!
[출처] ORACLE DATE (날짜 다루기) |작성자 빠드루가
'먹고살기 > Oracle' 카테고리의 다른 글
REDO LOG FILE에 대해서 (0) | 2011.04.05 |
---|---|
오라클 강좌 (0) | 2011.04.05 |
Database Link사용법 (0) | 2011.04.05 |
사용자 세션의 강제 종료 (0) | 2011.04.05 |
oracle JOIN (0) | 2011.04.05 |
설정
트랙백
댓글
글
동일하도록 요구한다.
global_names = true [ or false ]
이 설정은 다음과 같이 해서 알 수 있다.
SQL> select name, value from v$parameter where name='global_names';
NAME VALUE
-------------------- ------
global_names FALSE
현재 데이터베이스의 이름은 global_names에 질의함으로써 알 수 있다.
SQL> connect kang/xxxxxx@piruks;
연결되었습니다.
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------
PIRUKS.KANG.COM
local db에 kang이라는 사용자로 접속한다.
SQL> connect kang/xxxxxx
연결되었습니다.
이제 원격지(piruks.kang.com)의 DB에 kang이라는 사용자로 연결되는 Database link를 생성한다.
여기서 piruks.kang.com은 원격지의 [Database name].[Domain name]이다.
보통 [Database name].[Domain name]는 Service Name이라 불리운다.
하지만 위와 같이 해서 제대로 않되는 경우가 있다.
이럴때는 global_name에 있는 이름을 dblink이름으로 정하면 해결된다.
piruks는 database connect string이다.
SQL> create database link piruks.kang.com
2 connect to kang identified by xxxxxx
3 using 'piruks';
데이타베이스 링크가 생성되었습니다.
사용법은 다음과 같다.
보통의 DML문장에 '@piruks.kang.com'을 추가한다.
SQL> select * from tab@piruks.kang.com;
TNAME TABTYPE CLUSTERID
------------------------------------------------------------ -------------- ----------
TEST TABLE
SQL> select * from test@piruks.kang.com;
NAME AGE
-------------------- ----------
강명규 27
SQL> insert into test@piruks.kang.com values('홍길동', 30);
1 개의 행이 만들어졌습니다.
SQL> update test@piruks.kang.com set age=31 where age=30;
1 행이 갱신되었습니다.
SQL> select * from test@piruks.kang.com;
NAME AGE
-------------------- ----------
강명규 27
홍길동 31
SQL> delete from test@piruks.kang.com where age=31;
1 행이 삭제되었습니다.
데이터베이스링크에서 DDL문장은 적용되지 않는다.
SQL> drop table test@piruks.kang.com;
drop table test@piruks.kang.com
*
1행에 오류:
ORA-02021: 원격 데이터베이스에 DDL 조작들이 허용되지 않습니다
SQL> drop database link piruks.kang.com;
데이타베이스 링크가 삭제되었습니다.
SQL>
[2003-07-30 추가]
public DB링크와 동의어의 사용
이제껏 설명한 private DB링크와는 달리, public DB링크는 DB내의 모든 사용자가 사용할 수 있다.
이는 일반계정에서는 사용하지 못하므로 system사용자에서 생성해야 한다.
일반계정에서 public DB링크를 생성하려면, 다음의 권한이 필요하다.
DROP PUBLIC DATABASE LINK
CREATE PUBLIC DATABASE LINK
system계정에서 다음의 명령으로 kang계정에 이 권한을 줄 수 있다.
SQL> grant CREATE PUBLIC DATABASE LINK, DROP PUBLIC DATABASE LINK to kang;
권한이 부여되었습니다.
SQL> connect system/xxxxxx
연결되었습니다.
SQL> create public database link db.world
2 connect to kang identified by xxxxxx
3 using 'linuxdb';
데이타베이스 링크가 생성되었습니다.
SQL> conn scott/tiger
연결되었습니다.
SQL> select * from v_emp@db.world;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7900 JAMES CLERK 7698 81/12/03 950 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
이하생략
12 개의 행이 선택되었습니다.
SQL> conn kang/xxxxxx
연결되었습니다.
SQL> select * from v_emp@db.world;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7900 JAMES CLERK 7698 81/12/03 950 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
이하생략
12 개의 행이 선택되었습니다.
이와 같이 매번 골뱅이와 DB링크명(@db.world)를 붙이면 불편하므로, 동의어를 사용하여 투명하게 사용할 수도
있을 것이다. 모든 사용자에게 적용하려면 마찬가지로 system계정에서 public동의어를 생성하면 된다.
SQL> conn kang/xxxxxx
연결되었습니다.
SQL> create synonym v_emp for v_emp@db.world;
동의어가 생성되었습니다.
SQL> select * from v_emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7900 JAMES CLERK 7698 81/12/03 950 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
이하생략
12 개의 행이 선택되었습니다.
SQL>
[2003-07-30 추가]
하나의 SQL명령에서 사용할 수 있는 DB링크수는 초기화 패러미터 open_links에 따라 정해진다.
디폴트는 4개다.
SQL> show parameter open_links
NAME TYPE VALUE
------------------------------------ ------- ------------------------------
open_links integer 4
open_links_per_instance integer 4
[2003-07-30 추가]
본문에서 잠깐 언급했지만, DB링크가 제대로 생성되었으나 실제 질의시 실패하는 경우가 있다.
이 경우에는, 연결DB의 global_name에 지정된 문자열을 사용하면 해결된다.
원래 초기화패러미터 gloabl_names가 true일 경우에만, 이것을 강제하게 되어 있으나,
이상한 것은 false일 경우에도 발생했다. 예제를 보면 쉽게 알 수 있을 것이다.
[문제**********]
DB링크는 에러없이 생성되나, 실제 질의가 실패함.
SQL> conn kang/xxxxxx
연결되었습니다.
SQL> create database link linuxdb_link
2 connect to kang identified by xxxxxx
3 using 'linuxdb';
데이타베이스 링크가 생성되었습니다.
SQL> select * from tab@linuxdb_link;
select * from tab@linuxdb_link;
*
1행에 오류:
ORA-02085: 데이터베이스 링크 LINUXDB_LINK.WORLD가 DB.WORLD에 연결됩니다
SQL> drop database link linuxdb_link;
데이타베이스 링크가 삭제되었습니다.
[해결책********]
원격DB서버의 global_name값을 확인
SQL> connect system/xxxxxx@linuxdb
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ------- ------------------------------
global_names boolean FALSE
연결되었습니다.
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
DB.WORLD
다시 돌아와, DB링크생성시 이름을 위에서 확인한 global_names로 한다.
SQL> conn kang/xxxxxx
연결되었습니다.
SQL> create database link db.world
2 connect to kang identified by xxxxxx
3 using 'linuxdb';
데이타베이스 링크가 생성되었습니다.
SQL> select * from tab@db.world;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
A TABLE
AA TABLE
BONUS TABLE
CUSTOMER TABLE
DEPT TABLE
EMP TABLE
FAMILY TABLE
HITEL TABLE
ILSAN014 TABLE
INTERIOR TABLE
MEMBER TABLE
MEMBER_DETAIL TABLE
PLAN_TABLE TABLE
SALGRADE TABLE
SAMWOO TABLE
SERVER TABLE
TEST TABLE
TM_YH TABLE
V_EMP VIEW
19 개의 행이 선택되었습니다.
[출처] Database Link사용법|작성자 빠드루가
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 강좌 (0) | 2011.04.05 |
---|---|
ORACLE DATE (날짜 다루기) (0) | 2011.04.05 |
사용자 세션의 강제 종료 (0) | 2011.04.05 |
oracle JOIN (0) | 2011.04.05 |
oracle exp/imp (0) | 2011.04.05 |
설정
트랙백
댓글
글
ALTER SYSTEM문을 KILL SESSION 연산자와 함께 사용하면 됩니다.
⊙ 사용자의 SESSION KILL은 ALTER SYSTEM 권한이 있어야 합니다.
⊙ ALTER SYSTEM KILL SESSION 명령어가 수행하는 작업
- 사용자의 현재 트랜잭션을 롤백 합니다.
- 현재 사용중인 모든 테이블 또는 행의 LOCK을 풀어 줍니다.
- 사용자에 의해 예약 되었던 시스템 자원을 풀어 줍니다.
세션ID와 시리얼번호를 확인하기 위해서는 V$SESSION 뷰를 조회 해야 합니다.
SQLPLUS system/manager
SQL> SELECT sid, serial#, username
FROM V$SESSION;
SID SERIAL# USERNAME
------- ---------- ------------
8 8589 HBC
17 7243 CMS
18 25707 CMS
...
세션 정보가 화면에 출력 됩니다.
HBC유저의 세션을 KILL하기 위해서는
SQL>ALTER SYSTEM KILL SESSION ’8,8589’;
위의 명령어 수행으로 HBC사용자를 강제 종료 시킵니다.
[출처] 사용자 세션의 강제 종료|작성자 빠드루가
'먹고살기 > Oracle' 카테고리의 다른 글
ORACLE DATE (날짜 다루기) (0) | 2011.04.05 |
---|---|
Database Link사용법 (0) | 2011.04.05 |
oracle JOIN (0) | 2011.04.05 |
oracle exp/imp (0) | 2011.04.05 |
Tablespace (0) | 2011.03.30 |
설정
트랙백
댓글
글
JOIN
JOIN 이란?
하나 이상의 테이블로부터 Data를 질의하기 위해서 사용됩니다.
Join조건은 WHERE절에서 기술합니다사용 형식 :
SQL> SELECT table1.column, table2.column ….
2> FROM table1, table2,….
3> WHERE join조건문;
종류
Equijoin Join하고자 하는 두개의 테이블에 같은 컬럼이 있을 때 사용 P.K.와 F.K.와의 관계에서 얻어짐
Non-Equijoin Join하고자 하는 테이블이 직접적 관계가 없는 경우 WHERE절에서 ‘=’가 아닌 다른 연산자를 통해서 얻어짐
Outer join 관계가 있는 테이블을 질의할 경우 결과에 나타나지 않는 행들까지 얻고자 할 때
Self join 테이블 자체내에서 조인할 경우
-
Equijoin
보통 P.K.와 F.K. 관계가 있는 테이블에서 ‘=’ 연산자를 통해서 서로 다른 두개의 테이블을 조인합니다.
SQL> SELECT table1.column, table2.column ….
2> FROM table1, table2,….
3> WHERE table1.column= table2.column ;
SQL> select dept.deptno, emp.empno
2> from dept, emp
3> where dept.deptno=emp.deptno
4> order by 1;
-
Column과 Table에서의 Alias
SQL> select d.deptno, e.empno
2> from dept d, emp e
3> where d.deptno=e.deptno;
- WHERE절에서의 추가조건
WHERE절에서의 조건문은 하나 이상 기술할 수 있습니다.
SQL> SELECT table1.column, table2.column , tacle3.column….
2> FROM table1, table2, table3….
3> WHERE table1.column= table2.column
4> AND table2.column=table3.column
5> OR …………………………………..;
-
Non-Equijoin
조인하고자 하는 테이블에 직접적인 관계가 없는 상황일 때 WHERE절에서 ‘=’가 아닌 다른 연산자를 통해서 검색을 하는 경우.
SQL> SELECT e.empno, e.ename, e.sal, g.grade
2> FROM emp e, salgrade g
3> WHERE e.sal BETWEEN g.losal AND g.hisal;
-
Outer Join
Equijoin과 비슷하나 결과는 만족하는 행뿐만 아니라 만족하지 않은 행까지도 보기 위해서 사용하는
조인방법을 말합니다.
SQL> select e.deptno, e.ename, d.dname
2> from emp e, dept d
3> where e.deptno(+)=d.deptno;
-
Self Join
Equijoin과 비슷하나 F.K.가 참조하는 P.K.가 같은 테이블에 있을 때 사용하는 방법입니다
SQL> select DISTINCT m.mgr, e.ename
2> fro emp e, emp m
3> where e.empno=m.mgr;
[출처] oracle JOIN|작성자 빠드루가
'먹고살기 > Oracle' 카테고리의 다른 글
Database Link사용법 (0) | 2011.04.05 |
---|---|
사용자 세션의 강제 종료 (0) | 2011.04.05 |
oracle exp/imp (0) | 2011.04.05 |
Tablespace (0) | 2011.03.30 |
OCP (0) | 2011.03.18 |
RECENT COMMENT