반응형

1. SQLPLUS 원격 DB Export(exp) 하기

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=whily312&logNo=100051197693



2. 심화 학습 1 <Clob data export /import 수행>

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sanai0419&logNo=90133733714


3. DBLINK시 LOB CLOB 데이터 이관 방법

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=javasniper&logNo=130115803500

 

반응형
반응형
 
 안녕하세요...  하이라이터입니다. 요즘 글을 올린지도 약간 오래되었습니다. 오늘은 지금까지 제가 읽었던 책들과 어제(?) 구입한 책들, 그리고 앞으로 읽으면 괜찮을 책들을 정리해 보겠습니다. 

 오늘 제가 정리할 책들은 IT분야에서도 Oracle DB 관련 책들입니다.

 우선 제가 한 번씩 읽었던 책들은 아래와 같습니다.

 1. 오라클 10g + PL/SQL 입문
  1)출판사: 대림
  2)성윤정, 이은정 공저
  3)가격: \20,000
  4)하이라이터의 의견: 입문서로 설명이 쉽게 잘되어 있습니다.

 2. 오라클 ACE가 해설하는 ORACLE Backup & Recovery
  1)출판사: 이한
  2)주종면 저
  3)가격: \23,000
  4)하이라이터의 의견: 내용이 알차지만, 중간 중간 오타가 있어서... ^^,

 3. 오라클 New 대용량 데이터베이스 성능 튜닝
  1)출판사: 도서출판 DB
  2)주종면 저
  3)가격: \29,000
  4)하이라이터의 의견: DB 튜닝 입문서(SQL분야가 아닌)로 괜찮은 것 같습니다. 다만, 역시 중간 중간 오타가 있어서... ^^,

 다음은 제가 읽어 보아야 할 책들입니다.

4. THE LOGICAL OPTIMIZER
  1)출판사: Open made CONSULTING
  2)오동규 저
  3)가격: \39,000
  4)하이라이터의 의견: 아직 읽어 보지는 못 했지만, 약간 내용이 난해합니다. 다른 서적들을 읽은 다음에 읽어 볼 예정입니다.

 그리고 어제 구입한 책들입니다.

5. 오라클 ACE와 함께 하는 오라클 성능 Q&A (시즌1 2009.5~2010.5)
  1)출판사: (주)엑셈
  2)조동욱 저
  3)가격: \25,000

6. 오라클 성능 트러블슈팅의 기초
  1)출판사: (주)엑셈
  2)조동욱 저
  3)가격: \35,000

7. 오라클 AWR을 이용한 고성능 데이터베이스 튜닝
  1)출판사: 비팬북스
  2)김지한, 황오현, 장효성 저
  3)가격: \34,000

 앞으로 구입해야 할 책

8. 전문가를 위한 오라클 데이터베이스 아키텍처(제2판)
  1)출판사: 제이펍
  2)토마스 카이트 저
  3)가격: \45,000

9. SQL 전문가 가이드
  1)출판사: 한국데이터베이스진흥원
  2)한국데이터베이스진흥원 저
  3)가격: \50,000
  4)URL: http://www.dbguide.net/da.db?cmd=snb11_info
  5)내용 : 데이터 모델링의 이해, SQL 기본 및 활용, SQL 고급 활용 및 튜닝 

기타 등등 구입하고 싶은 책들은 많지만 올해는 여기까지만 구입하려 합니다. 제 나이 올해로 서른살입니다. 10년 뒤, 마흔살에는 조금 더 전문가적인 모습이 되어있지 않을 까 생각해 봅니다. ^^

 저는 일 할 때는 열심히, 놀 때도 열심히 놀고 싶어 하는 사람입니다. 그저 의미 없이 보내는 것을 싫어 하는 사람입니다. 그래서 읽으면 괜찮은 책들 찾아서 구입하고 언제가 됐든 읽는 것 같습니다.

 저는 외국계 보험회사 IT에서 근무하고 있습니다. 작년에 CKLU라는 시험을 보고 합격했습니다. 비록 IT지만 업무에 대해서 알고 싶었기 때문입니다. 이제는 업무 공부는 조금 줄이고 IT 본업에 충실하려 합니다.

 IT도 분야가 매우 많습니다. 저는 우선 DB를 하려 합니다. 현재하고 있는 업무도 그렇고 앞으로도 괜찮을 것 같습니다. 현재 LANGUAGE는 GRAPHTALK이라는 것을 사용하고 있습니다. 비록 전문가 수준은 아니지만 C++와 JAVA를 조금(?) 할 줄 압니다. 언어는 거기서 거기인 것 같습니다. EFFECTIVE C++ 등 여러가지 좋은 서적들이 많이 나와 있고, 몇 가지 패턴들이 정해져 있기 때문입니다. 실무에서 적용해 가면서 배운다면 금방 배울 수 있는 것 같습니다. 다만, 같은 부서원들의 OPEN MIND가 필수적일 것입니다. 

 장기적으로는 DB 모델링 및 튜닝 분야로 나야 갈 것입니다. 지금 하고 있는 업무도 DB 모델링 분야와 약간(?) 관계가 있는 것 같습니다. 업무팀의 요청서를 기준으로 분석하고 처리하고, 사전, 사후 데이타 이미지를 관리하기하기 때문입니다.

 DB분야를 시작한지는 6개월도 되지 않았습니다. 하지만, 기간이 중요한 것 같지는 않습니다. 투자한 기간 대비 시간이 중요한 것 같습니다. 예를 들면 아마추어와 프로의 마인드는 다름니다. 그리고 투자하는 시간과 노력도 확연히 차이나는 것이 사실입니다. 저는 앞으로 프로가 되기 위해 1만 시간 이상을 투자할 생각을 갖고 있습니다. 그리고 장기적인 계획을 갖고 있습니다. 

 삶을 즐기면서 조금씩 노력하는 것이 저의 삶의 목표(?)입니다. 너무 빨리가거나, 너무 과하게 하면 지치기 때문입니다. ^^

반응형
반응형


1. 아카이브 모드 설정

SQL> select * from v$log;
SQL> archive log list
SQL> shutdown immediate
SQL> exit
[C:\] edit  c:\oracle\product\10.2.0\oradata\orcl\INITorcl.ORA

 (추가)
  log_archive_dest = 'c:\oracle\product\10.2.0.\db_1\database\archive'
  log_archive_format = '%t_%r_%s.arc'

[C:\] sqlplus /nolog

SQL> conn sys/oracle as sysdba;
SQL> startup mount
SQL> alter database archivelog;
SQL> archive log list
SQL> alter database open;

위의 경우는 spfile이 없는 경우 적용이 가능하다.
만약 spfile이 있다면 그 전 spfile을 적용하여 나타난다. 변경한 pfile으로 spfile을 새로 만들어 주어야 한다.

사용자 삽입 이미지



왜냐하면 10g는 spfile을 먼저 찾아 적용한다.

적용하는 순서는 다음과 같다.

그래서 기존 SPFILEORCL은 SPFILE_old로 변경한다.
그리고 create spfile from pfile을 적용하면 SPFILEORCL이 생성된다.

그 다음 DB를 startup해주면 올바르게 아카이브 모드가 적용된다.

P.S.) 9i부터 초기화 파라미터를 아래의 순서대로 찾아서 DB가 startup된다.

1. SPFILE$SID.ORA
2. SPFILE.ORA
3. INIT$SID.ORA
4. INIT.ORA

  select value from v$parameter where name='spfile';

사용자 삽입 이미지



----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

2. 아카이브 모드 확인 하기

SQL> ARCHIVE LOG LIST
SQL> SET LINESIZE 1200
SQL> SELECT GROUP#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;
SQL> SELECT ARCHIVER FROM V$INSTANCE;

SQL> ALTER SYSTEM SWITCH LOGFILE;

----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

 

3. 기타 등등
SQL> select spid, name from v$process, v$bgprocess where paddr(+)=addr;

SQL> create temporary tablespace temp2
tempfile 'C:\oracle\product\10.2.0\oradata\orcl\temp02.dbf' size 3m;

SQL> select tablespace_name, file_name from dba_temp_files;

SQL> select * from dba_tablespaces;


----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

 

4. 관련 URL

http://ttend.tistory.com/717

http://www.gurubee.net/lecture/1873

http://oracle-childschool.tistory.com/20

 

 

반응형
반응형

아래의 내용은 일반적으로 Oralce을 공부할 때 사용하는 기초적인 테이블들입니다.

많은 기본 교육에서 아래의 환경에서 수업 진행을 합니다.

첨부파일
다운로드


 오라클을 설치하면 해당 컴퓨터 어디에 Demobld.sql을 비롯하여 예제 테이블들이 위치할 것입니다. 그런데, 그 위치가 약간씩 상이한 것 같습니다. 그래서, 아래의 자료를 Upload하였습니다. 아래의 자료들은 제가 나중에 또 참고하게 될지 모르기 때문에 올린 자료입니다. 감사합니다. ^^

오라클 12c 이상의 버전에서 DB를 멀티테넌트 유형으로 생성한 경우에는 컨테이너 DB(CDB)와 플러거블DB(PDB)라는 구분이 있는데, CDB에 CONNECT하여 예제를 실행하면 'ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.' 라는 에러가 발생한다. 이를 피하려면 CDB가 아닌 PDB에 접속하여 사용해야 한다.

create user scott identified by tiger;
alter user scott DEFAULT TABLESPACE USERS;
alter user scott QUOTA UNLIMITED ON USERS;
GRANT RESOURCE, CONNECT TO scott;


DROP TABLE EMP;
DROP TABLE DEPT;
DROP TABLE BONUS;
DROP TABLE SALGRADE;
DROP TABLE DUMMY;

CREATE TABLE EMP
       (EMPNO NUMBER(4) NOT NULL,
        ENAME VARCHAR2(10),
        JOB VARCHAR2(9),
        MGR NUMBER(4),
        HIREDATE DATE,
        SAL NUMBER(7, 2),
        COMM NUMBER(7, 2),
        DEPTNO NUMBER(2));

INSERT INTO EMP VALUES
        (7369, 'SMITH',  'CLERK',     7902,
        TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, 20);
INSERT INTO EMP VALUES
        (7499, 'ALLEN',  'SALESMAN',  7698,
        TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600,  300, 30);
INSERT INTO EMP VALUES
        (7521, 'WARD',   'SALESMAN',  7698,
        TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250,  500, 30);
INSERT INTO EMP VALUES
        (7566, 'JONES',  'MANAGER',   7839,
        TO_DATE('2-APR-1981', 'DD-MON-YYYY'),  2975, NULL, 20);
INSERT INTO EMP VALUES
        (7654, 'MARTIN', 'SALESMAN',  7698,
        TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30);
INSERT INTO EMP VALUES
        (7698, 'BLAKE',  'MANAGER',   7839,
        TO_DATE('1-MAY-1981', 'DD-MON-YYYY'),  2850, NULL, 30);
INSERT INTO EMP VALUES
        (7782, 'CLARK',  'MANAGER',   7839,
        TO_DATE('9-JUN-1981', 'DD-MON-YYYY'),  2450, NULL, 10);
INSERT INTO EMP VALUES
        (7788, 'SCOTT',  'ANALYST',   7566,
        TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20);
INSERT INTO EMP VALUES
        (7839, 'KING',   'PRESIDENT', NULL,
        TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10);
INSERT INTO EMP VALUES
        (7844, 'TURNER', 'SALESMAN',  7698,
        TO_DATE('8-SEP-1981', 'DD-MON-YYYY'),  1500,    0, 30);
INSERT INTO EMP VALUES
        (7876, 'ADAMS',  'CLERK',     7788,
        TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20);
INSERT INTO EMP VALUES
        (7900, 'JAMES',  'CLERK',     7698,
        TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),   950, NULL, 30);
INSERT INTO EMP VALUES
        (7902, 'FORD',   'ANALYST',   7566,
        TO_DATE('3-DEC-1981', 'DD-MON-YYYY'),  3000, NULL, 20);
INSERT INTO EMP VALUES
        (7934, 'MILLER', 'CLERK',     7782,
        TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

오류 시에 아래와 같이 진행하면 됩니다.

INSERT INTO EMP VALUES
        (7369, 'SMITH',  'CLERK',     7902,
        DATE'1980-12-17',  800, NULL, 20);
INSERT INTO EMP VALUES
        (7499, 'ALLEN',  'SALESMAN',  7698,
        DATE'1981-02-20', 1600,  300, 30);
INSERT INTO EMP VALUES
        (7521, 'WARD',   'SALESMAN',  7698,
        DATE'1981-02-22', 1250,  500, 30);
INSERT INTO EMP VALUES
        (7566, 'JONES',  'MANAGER',   7839,
        DATE'1981-04-02',  2975, NULL, 20);
INSERT INTO EMP VALUES
        (7654, 'MARTIN', 'SALESMAN',  7698,
        DATE'1981-09-28', 1250, 1400, 30);
INSERT INTO EMP VALUES
        (7698, 'BLAKE',  'MANAGER',   7839,
        DATE'1981-05-01',  2850, NULL, 30);
INSERT INTO EMP VALUES
        (7782, 'CLARK',  'MANAGER',   7839,
        DATE'1981-06-09',  2450, NULL, 10);
INSERT INTO EMP VALUES
        (7788, 'SCOTT',  'ANALYST',   7566,
        DATE'1987-04-19', 3000, NULL, 20);
INSERT INTO EMP VALUES
        (7839, 'KING',   'PRESIDENT', NULL,
        DATE'1981-11-17', 5000, NULL, 10);
INSERT INTO EMP VALUES
        (7844, 'TURNER', 'SALESMAN',  7698,
        DATE'1981-09-08',  1500,    0, 30);
INSERT INTO EMP VALUES
        (7876, 'ADAMS',  'CLERK',     7788,
        DATE'1987-05-23', 1100, NULL, 20);
INSERT INTO EMP VALUES
        (7900, 'JAMES',  'CLERK',     7698,
        DATE'1981-12-03',   950, NULL, 30);
INSERT INTO EMP VALUES
        (7902, 'FORD',   'ANALYST',   7566,
        DATE'1981-12-03',  3000, NULL, 20);
INSERT INTO EMP VALUES
        (7934, 'MILLER', 'CLERK',     7782,
        DATE'1982-01-23', 1300, NULL, 10);

CREATE TABLE DEPT
       (DEPTNO NUMBER(2),
        DNAME VARCHAR2(14),
        LOC VARCHAR2(13) );

INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE BONUS
        (ENAME VARCHAR2(10),
         JOB   VARCHAR2(9),
         SAL   NUMBER,
         COMM  NUMBER);

CREATE TABLE SALGRADE
        (GRADE NUMBER,
         LOSAL NUMBER,
         HISAL NUMBER);

INSERT INTO SALGRADE VALUES (1,  700, 1200);
INSERT INTO SALGRADE VALUES (2, 1201, 1400);
INSERT INTO SALGRADE VALUES (3, 1401, 2000);
INSERT INTO SALGRADE VALUES (4, 2001, 3000);
INSERT INTO SALGRADE VALUES (5, 3001, 9999);

CREATE TABLE DUMMY
        (DUMMY NUMBER);

INSERT INTO DUMMY VALUES (0);

COMMIT;

CREATE UNIQUE INDEX dept_pk ON dept(deptno);
ALTER TABLE dept ADD CONSTRAINT dept_pk PRIMARY KEY(deptno);
CREATE UNIQUE INDEX emp_pk ON emp(empno);
ALTER TABLE emp ADD CONSTRAINT emp_pk PRIMARY KEY(empno);
CREATE UNIQUE INDEX emp_ename_uk ON emp(ename);
ALTER TABLE emp ADD CONSTRAINT emp_ename_uk UNIQUE(ename);
CREATE UNIQUE INDEX bonus_pk ON bonus(ename);
ALTER TABLE bonus ADD CONSTRAINT bonus_pk PRIMARY KEY(ename);
CREATE UNIQUE INDEX salgrade_pk ON salgrade(grade);
ALTER TABLE salgrade ADD CONSTRAINT salgrade_pk PRIMARY KEY(grade);

반응형
반응형

1. Oracle Server
오라클 서버는 information management에 종합적인 접근이 가능하도록 해주는 database 관리 시스템이다.
오라클 서버는 Oracle instance와 Oracle database로 구성된다.

2. Oracle Instance
오라클 인스턴스는 오라클 데이타 베이스에 접근하는 한 수단이다.
항상 오직 한 데이터 베이스에만 열려 있고 사용이 가능하다.
오라클 인스턴스는 메모리와 background process structure들로 구성된다.

3. Oracle Database
오라클 데이타베이스는 unit으로 다루어 지는 데이타들의 집합이다.
오라클 데이타베이스는 3가지 파일 타입으로 구성된다. 
오라클 데이타베이스는 아래와 같이 3가지 타입을 가진다.
1) Data files
2) Control files
3) Redo Log files 

4. Physical Structure
Physical structure는 아래와 같이 3가지 파일 타입을 가진다.
1) Data files
데이타 파일은 database 내에서 실제적인 data를 가지고 있다.
2) Control files
컨트롤파일은 database integrity를 검증하고 유지하는데 필요로하는 정보를 가지고 있다.
예를 들면, Database name, Time stampe of database creation, names and locations of data files and
online redo log files 등 기타 등등 여러가지를 가지고 있다.
3) Online redo log files
오라인 리두 로그 파일은
failure의 경우에 data의 복구가 가능하도록 database에 change가 가능한 record를 가지고 있다.

5. Memory Structure
오라클의 memory structure는 아래와 같은 두 가지 memory area로 구성된다.
1) System Global Area(SGA)
It is allocated at instance start up. And it is a fundamental component of an Oracle instance.
2) Program Global Area(PGA)
It is allocated when the server process is started.(It is equal to 'when a session is created)

반응형
반응형


 Oracle 홈페이지에서 Oracle 10g를 다운로드 받아 설치하였다면 다음은 Database Configuration Assistant를 실행해야 한다.


Database 객체를 만들어야 한다.

 그 다음에는 예제 소스를 실행해야 한다. 예제 소스의 실행 방법은 다음과 같다.
@ C:\oracle\product\10.2.0\db_1\odp.net\samples\DataSet\RelationalData\setup\Demobld.sql

예제 테이블을 만들고 그것을 가지고 공부를 할 수 있다. 대부분 예제 테이블을 기준으로 교재들이 구성되었기 때문에 예제 테이블을 만들고 공부를 해야 한다. 위는 @ 에 Demobld.sql 경로를 추가해 준 것이다. 위의 '@ 경로'를 sqlplus에 접속하여 실행하면 예제 테이블이 만들어 진다.

 처음 Database Configuration Assistant를 실행하고 sql*plus 로 접속하여 DML을 하면 잘 작동한다. 그러나 컴퓨터를 다시 부팅하면 실행이 안된다. 그것은 DB가 shutdown 된 상태이기 때문이다.


ORA-01034: ORACLE not available
ORA-27101: shared memory realm deos not exist

 DB를 startup 시켜 주어야 한다.

cmd 창에서 sqlplus /nolong 혹은 sqlplus "/as sysdba"로 접속을 한다.
 그 뒤에 SQL> startup 한 뒤에 다시 원하는 user로 접속을 시도한다.
SQL> connect scott/tiger

 

한 가지 문제점이 발생할 수도 있다.
select * from emp; 를 했는데, 아무 값이 나오지 않을 수도 있다.

그것은 현재 윈도우의 날짜가 한글 형식으로 되어 있기 때문이다. 그래서 오라클 10g도 날짜가 한글형식으로 되어 있기 때문에, 만약,

INSERT INTO EMP VALUES
        (7369, 'SMITH',  'CLERK',     7902,
        TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),  800, NULL, 20);

를 한다면 Error가 발생할 수도 있다. 이것은 3가지 방법으로 해결할 수 있다.

1. NLS_DATE_FORMAT 변경
SQL> select sysdate from dual;
SQL> alter session set nls_date_format ='DD-MON-YY';
SQL> select sysdate from dual;

2. 시스템 언어 변경
SQL> alter session set nls_language = 'AMERICAN';
SQL> select sysdate from dual;

3. 아예 입력 구문을 바꾸기
SQL> alter session set nls_date_format = 'DD-MON-YY';
SQL> INSERT INTO EMP VALUES
        (7369, 'SMITH',  'CLERK',     7902,
        '17-12월-80',  800, NULL, 20);

오늘 처음으로 혼자 공부를 해보았는데, 하루에 1시간 아니 30분씩이라도 꾸준히 공부해야 할 것 같다.

퇴근 하고 나서 앞으로 DB 공부를 해야 할 것 같다.

반응형