오늘은 금요일, 생각보다 많은 사람들이 보이지는 않았지만, 강의는 계속되었습니다.

 

외근을 갔다 오느라 저녁을 삼각김밥 하나로 때우고, 에너지를 위해 오늘도 핫식스와 함께 수강 시작합니다.

 

 

 

 

========================================  1  ========================================

[ 19 : 00~ 19 : 48 ] 

 

DB가 안되는 경우에는 이야기를 하면 도와주시겠다고 하셨습니다.

 

 

Undo의 용도에 대해서 강의자료를 가지고 수업을 진행 해 주셨습니다.

 

VirtualBox를 켜서 리눅스를 어제 상태저장했던 값으로 돌리려고 했지만 아예 개작살...(???)이 나서 LG G4처럼 무한부팅이 일어나고 있습니다.

 

;;;;;

 

 

table space를 읽기전용으로 만드는 경우는 다음과 같습니다.

 

11g버전의 경우  table을 읽기전용으로 설정할 수 있는데 , 그러한 기능이 없는 이전의 버전에서는 테이블 스페이스를 읽기전용으로 바꾸어 그렇게 처리를 하는 경우가 있습니다.

 

그 외에 table의 내용이 바뀔 일이 없는 경우에는 backup을 한번만 해도 되고 읽기전용의 table은 backup도 훨씬 쉽다고 하셨습니다.

 

 

 

3. 테이블스페이스의 상태를 변경한다.

1) 읽기 전용(Read Only) 테이블스페이스로 변경한다.

- EXAMPLE 테이블스페이스를 읽기 전용으로 변경한다.
SQL> ALTER TABLESPACE EXAMPLE READ ONLY;

- hr.employees 테이블을 update 한다.
SQL> update hr.employees set salary=8888;

<사진 1>





 

ERROR at line 1:
ORA-00372: file 5 cannot be modified at this time
ORA-01110: data file 5: '/u01/app/oracle/oradata/orcl/example01.dbf'
읽기 전용 테이블스페이스의 테이블은 변경할 수 없다.

 

tablespace offline

DLL뿐만 아니라 select도 안되며 DB 복구할 때 사용을 합니다.

 

 

 

 

4. Tablespace 크기를 조정한다.

1) Datafile의 자동 확장을 활성화한다.

- USERS 테이블스페이스 데이터 파일의 자동 확장을 비활성화한다.
SQL> ALTER DATABASE DATAFILE
    '/u01/app/oracle/oradata/orcl/users01.dbf' AUTOEXTEND OFF;

- USERS 테이블스페이스 데이터 파일의 자동 확장을 활성화한다.
SQL> ALTER DATABASE DATAFILE
     '/u01/app/oracle/oradata/orcl/users01.dbf' AUTOEXTEND ON
     NEXT 10M MAXSIZE UNLIMITED;

 <사진2>

 

 2) 수동으로 Datafile의 크기를 조정한다.

- USERS 테이블스페이스 데이터 파일의 크기를 500M로 조정한다.
 SQL> ALTER DATABASE DATAFILE
      '/u01/app/oracle/oradata/orcl/users01.dbf' RESIZE 500M;

- USERS 테이블스페이스 데이터 파일의 크기를 100M로 조정한다.
SQL> ALTER DATABASE DATAFILE
    '/u01/app/oracle/oradata/orcl/users01.dbf' RESIZE 100M;

- USERS 테이블스페이스 데이터 파일의 크기를 3M로 조정한다.
SQL> ALTER DATABASE DATAFILE
     '/u01/app/oracle/oradata/orcl/users01.dbf' RESIZE 3M;

ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
사용 중인 데이터 범위 아래로 줄일 수 없다.

 

 

5. 테이블스페이스를 삭제한다.

1) 테이블스페이스 test1, test2, test3을 생성한다.

SQL> CREATE TABLESPACE test1 DATAFILE
     '/u01/app/oracle/oradata/orcl/test1.dbf' SIZE 10M;

SQL> CREATE TABLESPACE test2 DATAFILE
     '/u01/app/oracle/oradata/orcl/test2.dbf' SIZE 10M;

SQL> CREATE TABLESPACE test3 DATAFILE
     '/u01/app/oracle/oradata/orcl/test3.dbf' SIZE 10M;

<사진 3>

 

Tablespace를 Drop하지않고 파일을 지우면 DB가 깨진다는 Tip을 아래의 실습을 하기 전에 유의하라고 설명 해 주셨습니다.

 

 

2) 생성된 테이블스페이스를 조회한다.

SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

<사진 4>

 

 

3) TEST1 테이블스페이스를 삭제한다.

- TEST1 테이블스페이스를 삭제한다.
SQL> drop tablespace test1;

- TEST1 테이블스페이스의 데이터 파일을 확인한다.
SQL> host ls /u01/app/oracle/oradata/orcl/test1.dbf

- TEST1 테이블스페이스의 데이터 파일을 삭제한다.
SQL> host rm /u01/app/oracle/oradata/orcl/test1.dbf

4) TEST2 테이블스페이스를 삭제한다.

- TEST2 테이블스페이스에 emp 테이블을 생성한다.
SQL> create table emp (id number)
     tablespace test2;

- TEST2 테이블스페이스를 삭제한다.
SQL> drop tablespace test2;

ERROR at line 1:
ORA-01549: tablespace not empty, use INCLUDING CONTENTS option
객체가 존재하는 테이블스페이스는 삭제할 수 없다.

SQL> drop tablespace test2 INCLUDING CONTENTS;

- TEST2 테이블스페이스의 데이터 파일을 확인한다.
SQL> host ls /u01/app/oracle/oradata/orcl/test2.dbf

- TEST2 테이블스페이스의 데이터 파일을 삭제한다.
SQL> host rm /u01/app/oracle/oradata/orcl/test2.dbf

5) TEST3 테이블스페이스를 데이터 파일과 함께 삭제한다.

SQL> drop tablespace test3 INCLUDING CONTENTS and datafiles;


6. OMF(Oracle Managed Files) 방식으로 테이블스페이스를 관리한다.

1) DB_CREATE_FILE_DEST 파라미터를 설정한다.

SQL> show parameter DB_CREATE_FILE_DEST

SQL> alter system set DB_CREATE_FILE_DEST='/u01/app/oracle';

SQL> show parameter DB_CREATE_FILE_DEST

 

아까 첫시간에 저는 OS부팅이 되지 않아서 그 부분을 확인하기 위해서 강사님께 질문을 해 보았지만 OS가 깨지는 경우는 VM을 쓰면서 한번도 겪어보지 못했다고 하셨습니다.

 

VM Ware롸 VirtualBox를 비교 하시면서 VMWare가 기능은 조금 더 많고 VirtualBox의 경우는 훨씬 더 가볍다고 하셨습니다.

 

 



========================================  2  ========================================

[ 20 : 05 ~ 20 : 55 ] 

 

 

 

6. OMF(Oracle Managed Files) 방식으로 테이블스페이스를 관리한다.

1) DB_CREATE_FILE_DEST 파라미터를 설정한다.

SQL> show parameter DB_CREATE_FILE_DEST

<사진1>


 


SQL> alter system set DB_CREATE_FILE_DEST='/u01/app/oracle';

SQL> show parameter DB_CREATE_FILE_DEST

<사진2>

 

 

2) 테이블스페이스를 생성 및 삭제한다.

SQL> create tablespace test4;

<사진3>

 

SQL> drop tablespace test4;

<사진4>

 

SQL> create tablespace test4 datafile size 200M;

SQL> alter tablespace test4 add datafile;

SQL> drop tablespace test4;

<사진5>

 

 

Controlfile에 대해 이론수업을 이어가셨습니다.

 

SQL> select name from v$controlfile;

 

 

<사진 6>

 

 

로그 조회

 

<사진7>

 

강제적으로 로그 스위치 후 다시 조회

 

<사진 8>

 

 

만약 정전으로 DB가 죽는 경우, 예전에는 이런 일이 종종 있었다고 하셨습니다.

그러한 경우 다시 시작을 시키는데, DB가 올라오지 않을 때가 있습니다. 그 이유는 인스턴스 복구가 끝나야 하기 때문입니다. DB는 내부적으로 인스턴스 복구를 하게됩니다.

 

예전 버전의 경우 open을 하기 전에 내부작업 (롤 포워드, 롤 백)을 모두 끝내야 DB가 올라온다고 하셨습니다.

 

 

checkpoint는 시간이 지나면 자동으로 일어나지만 강제로 일이킬 수도 있다고 하셨습니다.

 

그룹을 날리는 작업 등을 할 경우는 inactive상태에서만 가능한데, active DB를 inactive로 바꿀 때 chechpoint를 일으키는 방법이 있습니다.

 

SQL> alter system checkpoint;

 

SQL> select * from v$log;

 

<사진 9>

 

 

강의자료로 수업을 계속 하셨습니다.

 

온라인 리두로그 파일 그룹 삭제, 온라인 리두 로그 파일 멤버 삭제

 

 

<사진 10>

current의 경우나 active인 경우에 삭제가 되지 않습니다.

 

<사진 11>

 

 

SQL> archive log list

<사진 12>

 

 

리두 로그 파일을 겹쳐쓰기 위해서면 몇가지 조건이 있습니다. inactive상태여야 하며, 아카이브를 사용하는 경우 아카이브 되있어야 한다고 합니다.

 

아카이브는 깨졌을 때 복구하는 것이 목적인데, 클리어를 해야만 DB가 유지 가능한 경우가 있다고 하셨습니다.

 

 

 

 

 

마지막으로 네트워크 관련 해서 수업하시겠다고 하셨습니다.

 

 

========================================  3  ========================================

[ 21 : 10~ 21 : 59 ] 

 

 

각 수강생들의 업무를 간단히 확인하시면서 이야기를 하셨습니다.

 

갑은 아무리 잘해줘도 부담스럽다고 이야기를 하셨습니다.

 

 

 

네트워크 관리

 

 

데이터베이스의 원격접속과 관련된 내용을 수업한다고 하셨습니다.

 

프티 터미널창을 2개 사용하도록 하겠습니다.

 

<사진 1>

 





리눅스 내부에서 네트워크 메니져를 사용해 보겠습니다.

<사진 2>

 


 

<사진 3~7>

 


변경하여 orcl으로 입력한 것이 인스턴스 네임입니다.


사진 7에서 scott계정으로 Test가 실패하면 다른 계정으로 Test를 하면 됩니다.

 

 

 

네트워크 연결 설정을 만드는 3가지 방법을 실습 해 보았습니다.


<사진 8 ~ 22>

 

아래의 화면과 같이 반드시 설정을 저장을 해 주어야 합니다.


파일 브라우져를 실행합니다.


아래의 화면과 같은 경로로 이동을 합니다.


아래 화면에 보이는 경로로 이동을 하였다면, 그 경로에 있는 tnsnames.ora 파일을 열어봅니다.



위에 AAA라는 내용을 복사 후 붙여넣기 해서도 보다 더 쉽게 만들 수 있습니다.


 

 

리스너 확인을 해 보고 그 Address가 갖는 의미를 설명 해 주셨습니다.

<사진23>

 

 

리스너를 스탑 해 보겠습니다.

<사진 24>

 

 

리스너 중 기본 리스너의 이름이 listener입니다.

<사진 25>

 

 

리스너 다중화시 이름과 포트번호가 달라야합니다.

 

 

 

 

 

 

 

 

 

간단한 연결 (Easy Connect)

 

 

4) EZCONNECT 방식으로 접속한다.

SQL> conn hr/hr@ocpdba:1521/orcl

<사진 26>

 

 

 

<사진 27>

 

sqlnet.ora파일이 없어도 기본 설정일 경우 문제가 없지만 변경이 있는 경우에는 해당 파일이 생깁니다.

 

<사진 28>

 

 

디비를 올리고 리스너를 올리는 것과 리스너를 올리고 디비를 올리는 것의 초기접속 시간 차이를 보여주셨습니다.

 

 

<사진 29~31>

정적구성을 하면 초기접속이 빠릅니다.

 

 

 

<사진 32>

tnsping -> 디비 연결확인

 

 

 

 

 

5. 서비스 이름을 확인하고 설정한다.

1) DB 이름, 인스턴스 이름, 서비스 이름을 확인한다.

SQL> conn /  as sysdba

SQL> show parameter db_name  -- 데이터베이스 이름

SQL> show parameter instance_name  -- 인스턴스 이름

SQL> show parameter service_names  -- 인스턴스 서비스 이름
<사진 33>

 


서비스 이름이 기본 2개 있는데 100개까지, 즉 98개를 추가로 등록할 수 있습니다.

 

초기화 파라미터에 등록하면 됩니다.

 

서비스를 추가해보겠습니다.

 

2) 서비스 이름을 설정한다.

SQL> conn /  as sysdba

- service_names 파라미터를 조회한다.
SQL> show parameter service_names;

- service_names를 orcl,erp로 변경한다.
SQL> alter system set service_names= 'orcl,erp';

<사진 34>

 

 

SID => 인스턴스이름 옛날 접근 방식

 

 

 

 

 

" 이렇게 해서 마쳤습니다."  라고 끝인사를 시작하셨습니다.

 

공유서버도 만들어 두셨다고 하셨습니다.


'강의노트' 카테고리의 다른 글

[Cloud] Docker 컨테이너 3일차  (0) 2017.10.25
[Cloud] Docker 컨테이너 2일차  (0) 2017.10.24
[DB] DB관리 초급 4일차  (0) 2017.10.19
[DB] DB관리 초급 3일차  (0) 2017.10.18
[DB] DB관리 초급 2일차  (0) 2017.10.17

+ Recent posts