검색결과 리스트
분류 전체보기에 해당되는 글 94건
- 2011.04.05 오라클 관리자 계정
- 2011.04.05 REDO LOG FILE에 대해서
- 2011.04.05 오라클 강좌
- 2011.04.05 ORACLE DATE (날짜 다루기)
- 2011.04.05 Database Link사용법
글
오라클 데이터베이스를 관리할 수 있는 사용자는 DBA 권한을 가지고 있어야 한다.
기본적으로 오라클은 시스템 관리를 위한 SYSTEM 및 SYS 사용자 계정을 가지고 있으며
오라클ㅇ 데이터베이스 관리자는 이들 계정을 이용하여 데이터베이스에 접속한 뒤에
관리 업무를 수행할 수 있다. 하지만 SYSTEM 및 SYS 사용자가 아니라 할지라도
DBA 권한을 부여 받은 사용자라면 오라클 데이터베이스 시스템을 관리할 수 있는
권한이 주어진다.
SYS와 SYSTEM 사용자의 특징
SYS
1. 데이터사전뷰의 오너.
2. SYS 스키마에는 어떠한 테이블도 생성할 수 없다.
3. 시스템 객체를 변경 삭제 불가.
SYSTEM
1. 실질적인 오라클 시스템 관리를 위해 사용
2. dba권한을 기본적으로 가지고 있다.
3. 관리 목적을 가진 테이블을 생성, 수정, 삭제 할 수 있다.
[출처] [본문스크랩] 오라클 관리자 계정 |작성자 빠드루가
'먹고살기 > Oracle' 카테고리의 다른 글
Oracle 데이터 삽입,삭제,변경 (0) | 2011.04.05 |
---|---|
오라클 알아둬야할것 (0) | 2011.04.05 |
REDO LOG FILE에 대해서 (0) | 2011.04.05 |
오라클 강좌 (0) | 2011.04.05 |
ORACLE DATE (날짜 다루기) (0) | 2011.04.05 |
설정
트랙백
댓글
글
1.Using Online Redo Log Files
데이타의 모든 변경사항이 기록된다.
복구 메카니즘이다.
그룹으로 관리 되어진다.
적어도 2개이상의 그룹이 필요하다.
*NOLOGGING (막바로 복구작업을 시행하지만 실패하면 데이타가 날라간다.)
2.Structre of Online Redo Log FIle

Online Redo Log File Groups
- Redo Log file은 그룹으로 관리 되어 진다.
- logwrite(LGWR)은 Redo log File과 같은 정보를 가지고 있다.
- 오라클 서버는 최소 2개 이상의 Redo log file 그룹을 가지고 있다.
Online Redo log file Members
- redo log file 그룹 안에 있는 개체가 맴버이다.
- 각 맴버는 식별시퀀스 번호를 가지고, 이정보는 컨트롤 파일에 저장되어 지고
데이타 파일의 헤드 부분에 저장된다.
3. How Online Redo Log Files Work
온라인 REDO 로그 파일은 로그가 꽉 차게 되면 다음 로그로 이동하게 된다.
이것을 LOG SWITCHES라고 하며, 이렇게 넘어가면 로그시퀀스와 그룹번호도 새로 부여되며
체크포인터도 지정되게 된다.
- 로그스위치로 불리운다.
- 컨트롤파일에 정보가 저장된다.
- 체크포인트도 자동으로 생성된다.
* 복구된 시간 정보를 가지고 있는 파라메탈
Fast_start_mttr_targer (show parametal fast_start_mttr_target) 으로 확인 가능하다.
mttr-장애가 발생하고 복구된 시간
* alter tablespace [offline nomal|read only|begin backup]으로
체크포인터가 지정된다.
4. Forcing Log Switches and Checkpoints
로그스위치를 실행
alter system switch logfile;
로그 그룹에 있는 내용이 강제로 다음 그룹으로 넘어감
Fast_start_mttr_target =600
복구된 시간을 지정하고 넘어가는 경우에 checkpoint를 발생시키는 명령어. 위의 예에서는 600
alter system checkpoint
수동으로 checkpoint 발생
- 강제적으로 체크포인터를 발생시킬 때..
fast_start_io_target : 복구할 때까지 읽는 블럭의 수
log_checkpoint_timeout : 체크포인터가 발생하는 시간
5. Adding Online Redo Log file Groups
Alter database add logfile group 3
('d:\oracle\oradata\dba20\log3a.rdo', d:\oracle\oradata\dba21\log3a.rdo)
SIZE 1M;
Redo log 파일의 그룹 3을 추가할 때...
그룹을 추가할 때는 반드시 파일도 같이 추가해줘야 함.
6. Adding Online Redo Log File Members
Alter Database Add Logfile Member
'd:\oracle/oradata/u01/log1c.rdo' to group 1,
'd:\oracle/oradata/u01/log2c.rdo' to group 2,
'd:\oracle/oradata/u01/log3c.rdo' to group 3;
맴버 파일을 추가할 때...
7. Dropping Online Redo Log File Groups
Alter database drop logfile group 3;
Redo Log File 그룹 3을 삭제할 때...
- redo log files의 그룹은 최소한 두개 이상이어야 한다.
- 활성화되어 있는 그룹은 드롭할 수 없다.
8. Dropping Online Redo Log File Members
alter database drop logfile member
'd:\oracle\oradata\u04\log3c.rdo';
제약
- 만약 멤버를 드롭시킬 떄 마지막 값이 그룹의 맴버이면 맴버를 삭제할 수 없다.
- 만약 그룹이 current 상태일 때는 반드시 로그파일 스위치로 강제 실행시키고,
그 전에는 멤버를 삭제할 수 없다.
- 만약 데이타베이스가 ARCHIVELOG모드 일 때는 로그 파일 그룹은 활동되어지지 않고,
멤버도 지워지지 않는다.
- 온라인 redolog 파일맴버가 드랍될 때, OS파일은 실제로 지워지지 않고,
단지 OMF에서 사용할 수 없을 뿐이다.
9. Relocating or Renaming Onlne Redo Log Files
Redo log files의 위치를 변경하고 이름을 바꾸는 것.
Alter database rename file 명령어
- 데이타베이스를 셧다운 시킬 때.
- redo log files를 새로운 장소에 복사할 때..
- 데이타 베이스가 마운트 모드일 때
- 데이타 베이스를 노말로 오플 할 때.
새로운 맴버를 추가하고 오래된 맴버를 지울 때..
10. Clearing Online redo Log files
redo log 파일을 초기화 시킬 때..
alter database clear logfile group 2;
11. Online redo Log 파일 설정
- 파일의 크기와 갯수가 같아야 하고, 아카이브 파일은 아카이브 파일대로 데이타는
데이타 파일대로 각각 보관해야 된다..
12. OMF에서 REdo Log file을 관리하는 방법..
1) 파라메타는 DB_CREATE_ONLINE_LOG_DEST_n 에 정의된다.
DB_CREATE_ONLINE_LOG_DEST_1
DB_CREATE_ONLINE_LOG_DEST_2
2) 그룹은 자동으로 생성하는 명령어
Alter database add logfile;
3) 그룹을 삭제
Alter database drop logfile group 3;
13. 그룹에서 맴버의 정보를 조회하는 뷰...
v$log, v$logfile
STAUS상태 설명
unused : 로그 파일이 추가 됬지만 한번도 사용되지 않았을 때..
current : 현재 기록하고 있는 로그 파일..
ACTIVE : 사용은 되지만 현재 쓰여지지 않는 파일
14. 아카이브 리두로그파일...
로그파일을 덮어쓰기 전에 복사를 함..
(그래서 그 로그파일이 잘못 되었을 때는 복사본으로 복구하는 파일)
온라인으로 백업이 가능.
[출처] [본문스크랩] REDO LOG FILE에 대해서|작성자 빠드루가
'먹고살기 > Oracle' 카테고리의 다른 글
오라클 알아둬야할것 (0) | 2011.04.05 |
---|---|
오라클 관리자 계정 (0) | 2011.04.05 |
오라클 강좌 (0) | 2011.04.05 |
ORACLE DATE (날짜 다루기) (0) | 2011.04.05 |
Database Link사용법 (0) | 2011.04.05 |
설정
트랙백
댓글
글
'먹고살기 > 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 |
RECENT COMMENT