토마토쥬스 한잔과 오늘도 강의 수강을 시작합니다.

 

 

 

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

[ 19 : 00~ 19 : 59 ] 

 

강사님께서 혹시 환경에 문제가 있으면 바로 말을 해 달라고 하셨습니다. 수업을 따라가야 수업을 듣는 재미가 있으며, 이 컴퓨터를 다른 강의시간에도 사용을 하므로, 다른사람들을 위해서도 환경 구축이 원활하게 되어있는 것이 좋다고 하셨습니다.

 

 2. 데이터베이스를 단계별로 시작하고 상태를 조회한다.

1) 데이터베이스를 Nomount하고 상태를 조회한다.

SQL> shutdown immediate

<사진 1>

SQL> startup nomount;

<사진 2>

nomount의 경우는 상태 정보가 Started라고 나옵니다.

 

일반사용자로 접근을 시도하면, 접근이 되지 않습니다.

<사진 4>

 

SQL> select instance_name, status from v$instance;

<사진3>
 

 

 

- 다음과 같은 뷰를 조회하여 결과를 확인한다.
SQL> select name from v$datafile; -- Mount 이상에서만 조회할 수 있다.
<사진 5>

 

 

SQL> select member from v$logfile; -- Mount 이상에서만 조회할 수 있다.
SQL> select username from scott.dept; -- Open 상태에서만 조회할 수 있다.

 

 

v$datafile, v$logfile 은 Controlfile에서 읽어오기 때문에 아직 조회가 되지 않았다고 하셨습니다. Data파일은 Start되야 읽을 수 있다고 하셨습니다. 하지만 어떤 경우(수동으로 DB를 만드는 경우, Controlfile 재 생성)에는 Nomount 단계에서 작업을 해야 한다고 하셨습니다.

 

2) 데이터베이스를 Mount하고, 상태를 조회한다.

SQL> alter database mount;

<사진 6>

Controlfile을 읽어오는 것을 마운트라고 합니다.

 

 

 

SQL> show parameter control_files

<사진7>

 

SQL> select instance_name, status from v$instance;

<사진8>

 

 

위에서 조회하지 못한 것들을 조회해보겠습니다.

SQL> select name from v$datafile; -- Mount 이상에서만 조회할 수 있다.

<사진 9>


 

SQL> select member from v$logfile; -- Mount 이상에서만 조회할 수 있다.
SQL> select username from scott.dept; -- Open 상태에서만 조회할 수 있다.

 

 

아래의 내용은 설명만 하고 넘어가셨습니다.

(참고) Renaming or Relocating data files & redo logfiles
eg. /u01/system01.dbf -> /u02/system01.dbf
1) os file copy
cp /u01/system01.dbf  /u02/system01.dbf
2) controlfile 내용 변경
SQL> alter database rename file 'old name' to 'new name';
SQL> alter database rename file '/u01/system01.dbf' to '/u02/system01.dbf';

위의 명령어는 DB 관리하는 입장에서 자주 사용하는 명령어입니다.


3) os file 삭제
rm /u01/system01.dbf

 

3) 데이터베이스를 Open하고, 상태를 조회한다.

SQL> alter database open;

SQL> select instance_name, status from v$instance;

<사진 10>

 

 

SQL> select * from scott.dept; (o)

<사진 11>

 

select * from scott.dept;

 

 

 

 

DB의 종료에 대해 강의자료로 설명을 해주셨습니다.

 

엔터프라이즈 메니져를 한번 써보자고 하셨습니다.

 

3) EM(Enterprise Manager)으로 접속한다.

 

$ lsnrctl start

$ emctl start dbconsole

 

<크롬에서 다음으로 접속>
https://192.168.56.200:1158/em

<사진 12, 13>

 


사용자 이름 : sys
비밀번호 : oracle
다음으로 접속 : SYSDBA

<사진 14>

EM 비밀번호가 틀려버려서 로그인 한 화면은 보지 못했습니다.

 

 

 


3. 여러가지 모드로 데이터베이스를 종료한다.

- 실습을 위해 EM을 중지한다.
SQL> ! emctl stop dbconsole
사진15>

 

 

HR계정으로 접속할 프티 터미널을 하나 더 열어줍니다.

<사진16>

 

- putty를 사용하여 두 개의 SQL*Plus 창을 연다.
  한 개는 sys로, 다른 한 개는 hr로 접속한다.

 

 

 

1) Shutdown Normal 모드로 데이터베이스를 종료한다.

- hr로 접속한다.
SQL> conn hr/hr

- 다른 창에서 sys로 접속하고, Shutdown Nomal로 데이터베이스를 종료한다.
SQL> conn / as sysdba
SQL> shutdown normal; -- 접속중인 세션이 있으므로 종료가 진행되지 않는다.

- hr 세션을 종료하고, sys 세션에서 데이터베이스가 종료되는지 확인한다.
SQL> disconn

-다음 실습을 위해 sys 창에서 데이터베이스를 시작한다.
SQL> startup

2) Shutdown Transactional 모드로 데이터베이스를 종료한다.

- hr로 접속하고, employees 테이블을 update 한다.
SQL> conn hr/hr
SQL> update employees set salary=1234;

- 다른 창에서 sys로 접속하고, Shutdown transactional로 데이터베이스를 종료한다.
SQL> conn / as sysdba
SQL> shutdown transactional; -- 완료되지 않은 트랜잭션이 있으므로 종료가 진행되지 않는다.

- hr 세션에서 트랜잭션을 종료하고, sys 세션에서 데이터베이스가 종료되는지 확인한다.
SQL> rollback;

- 다음 실습을 위해 sys 창에서 데이터베이스를 시작한다.
SQL> startup

강의자료의 Shutdown 옵션 부분에 대해 설명을 해 주셨습니다.

 

 

 

 

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

 

[ 20 : 10 ~ 20 : 59 ] 

 

 

야간 교육과정에 대한 우려와 주말강의 등에 대한 이야기를 해 주셨습니다.

 

알파고와 머신러닝, 딥러닝에 대해 이야기를 하셨습니다

돈이 되는 IT를 하라는 이야기를 농담 반 진담 반으로 최신 트랜드를 쫒아가라고 하셨습니다.

 

it직종의 경우에는 한곳에 머무르면 고인 물과 같아진다는 이야기를 하셨습니다. 도퇴되지 않기 위해서 항상 새로운 것을 해 나가야 한다고 하셨습니다.

 

 

 

 

(참고) Restrict Database & Kill Session
데이터베이스 작업을 위하여 아래와 같이 접속을 제한할 수 있다.

 

창 두개를 이용한 실습을 계속 한다고 하셨습니다.

 

 

(참고) Restrict Database & Kill Session
데이터베이스 작업을 위하여 아래와 같이 접속을 제한할 수 있다.

<SYS>
SQL> shutdown immediate
SQL> startup restrict

 

<사진 1>

 

 

 

<사용자 계정이 없어서 이하 실습을 진행하지 못하였습니다.>

 

 

<HR>
$ sqlplus /nolog
SQL> conn hr/hr

 

 

<SYS>
SQL> alter system disable restricted session;

 

 

 

<HR>
SQL> conn hr/hr

<SYS>
SQL> alter system enable restricted session;

 

 

 

 

Alert Log File에 대한 이론수업을 강의자료를 통해 진행 해 주셨습니다.

 

 

 

 

4. Alert Log File의 내용을 확인한다.

SQL> show parameter diagnostic_dest

<사진 2>

 

diag라는 디렉토리의 경로를 알려줍니다.

rdbms : 디비쪽의 로그가 남음

tnslsnr : 리스너쪽의 로그가 남음

 

 

 

DB이름과 인스턴스 이름은 다를 수 있습니다.

 

<무음 사진 1>

 

 

SQL> exit

$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/

$ ls

<사진 3>

 

 

 

$ vi alert_orcl.log

<사진 4>

tip : Shift + G 키를 누르면 커서가 가장 아래쪽으로 이동합니다.

 

 

내용을 살펴보면 DB를 사용한 기록이 남아있습니다.

<사진 5>

 

 

alert_orcl.log은 너무 커지지 않게 관리를 해 주셔야 한다고 했습니다. 이 파일이 너무 커지면 VI편집기로도 열리지 않을 수 있으며, 하나의 파일이 커질 때 관리가 불편할 수 있다고 하셨습니다.

 

 

 

강의자료에 있는 Data Dictionary 에 대해 이론수업을 해 주셨습니다.

 

 

Base table  :

View         : 

 

 

5. Base Table 및 Data Dictionary View를 조회한다.

 

1) Base Table을 조회한다.

SQL> conn / as sysdba
SQL> select table_name from user_tables;

<사진 6>

 

 

SQL>desc tab$

<사진 7>

 

 

<문제 해결>

create user hr identified by hr; (계정 생성)

GRANT create session, restricted session, connect TO hr; (권한 부여)

 

 

2) Data Dictionary View를 조회한다.

SQL> conn hr/hr
SQL> desc user_tables

<사진 8>

 

SQL>select owner, table_name from all_tables;

<사진 9>

 

 


SQL> desc all_tables
SQL> desc dba_tables -- DBA만 조회할 수 있다.

 

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

[ 21 : 06 ~ 21 : 55 ] 

 

 

우리나라는 무엇이 부족해서 알파고와 같은 것을 못 만들까? 왜 뛰어나고 잘 하는것이 많은데 그런 것의 큰 결과물이 보이지 않을까? 라는 고민을 한다고 하셨습니다. 예를 들면 노벨상이나...

 

 

 

 

SQL> desc user_objects

<사진 1>

 

 

 

 


SQL> select OBJECT_NAME, OBJECT_TYPE, STATUS from user_objects;

 

상태가 심각 해 보입니다.

 

SQL> col OBJECT_NAME for a30
SQL> select OBJECT_NAME, OBJECT_TYPE, STATUS from user_objects;
<사진 2>

 

 

 

 

SQL> col column_name for a15
SQL> col DATA_TYPE for a15
SQL> SELECT column_name, data_type, data_length,
     data_precision, data_scale, nullable
     FROM user_tab_columns
     WHERE  table_name = 'EMPLOYEES';

<사진3. 의미있는 사진 을 넣으려고 했지만 Table 안에 내용이 없어서 열이 조회되지 않습니다.>

 

SQL> desc USER_CONSTRAINTS

SQL> desc USER_CONS_COLUMNS

<사진 4>

 

SQL> col search_condition for a10
SQL> col constraint_name for a15
SQL> col r_constraint_name for a15

SQL> SELECT constraint_name, constraint_type, search_condition,
     r_constraint_name,delete_rule, status
     FROM user_constraints
     WHERE table_name = 'EMPLOYEES';


SQL> col COLUMN_NAME for a20
SQL> select TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
     from USER_CONS_COLUMNS;

<사진 5>

 

강의 자료 저장 영역 관리 에 대해 설명을 하기 전

 

DB 백업을 한다고 하셨습니다.

 

####################################
#    4. 저장 영역 관리
####################################

1. 데이터베이스를 백업한다.

SQL> shutdown immediate

SQL> exit

$ cd /u01/app/oracle/oradata/

$ ls

$ mkdir coldbackup

$ cp orcl/* coldbackup/

<사진 6>

작업이 시간이 꽤 오래 걸려 위의 작업을 걸어두고 이론 수업을 진행하였습니다.

 

 

 

 

$ sqlplus / as sysdba

SQL> startup

 

 

2. 여러 유형의 테이블스페이스를 생성한다.

1) Tablespace 유형을 조회한다.

SQL> SELECT tablespace_name, contents FROM dba_tablespaces;

<사진 7>

 

필수 Table space인 system이나 sysaux에도 table을 만들 수 있지만 권장하지 않습니다. 마치 윈도우에서 Windows 폴더, system32와 같은 폴더에 Data를 복사하는 것 같다는 예를 들어주셨습니다.

undo table space는 기본적으로 용도에 맞게 사용되며 테이블을 생성할 수 없습니다.

temp의 경우 sort와 같은 작업을 하다가 양이 많은 경우 TEMP table space에 만들고 작업을 한다고 하셨으며 위의 undo table space와 같이 table을 생성할 수 없습니다.

 

아래 과정의 실습은 내일 진행하며, 오늘은 설명을 해 주겠다고 하셨습니다.

 

2) PERMANENT SMALLFILE 테이블스페이스를 생성한다.

 

SQL> CREATE TABLESPACE test_ts DATAFILE          
'/u01/app/oracle/oradata/orcl/test_ts01.dbf' SIZE 10M;
=
SQL> CREATE SMALLFILE TABLESPACE test_ts DATAFILE
     '/u01/app/oracle/oradata/orcl/test_ts01.dbf' SIZE 10M
     LOGGING AUTOALLOCATE
     EXTENT MANAGEMENT LOCAL
     SEGMENT SPACE MANAGEMENT AUTO;

스몰

빅??

 

스몰파일 테이블 스페이스와 빅 파일 테이블 스페이스

빅 파일 테이블 스페이스는 테이블 스페이스에 데이터파일 1개만 가집니다. 사용 할 일은 거의 없다고 하셨습니다. 테이블 스페이스에 데이터파일이 많은 경우 관리가 너무 어렵다는 문제가 있습니다. 요즘의 경우 디스크를 구성할 때 예전처럼 부하분산을 위해 파일을 나눠 관리 할 필요가 없으며 그렇게 파일을 나눌 필요가 없도록 만들어 진 것이 빅 파일 테이블 스페이스입니다.

스몰파일 테이블 스페이스가 기본값으로 테이블 스페이스를 만들 때 따로 지정하지 않으면 스몰파일 테이블 스페이스를 생성합니다.

 

loging  : redo정보가 생김

nologing : redo정보가 생기지 않아 관리가 용이하지 않고

Loging이 기본값임

 

AUTOALLOCATE / UNIFORM SIZE 1M

AUTOALLOCATE : 기본값

 UNIFORM SIZE 1M : 지정한 크기로 균등하게 만들어줌

 

SEGMENT SPACE MANAGEMENT

AUTO / MANAUL

자동으로 설정 / 수동으로 설정

헤더는 둘 다 있지만 자동인 경우와 수동인 경우가 다릅니다.

수동의 경우 Free List로 관리 ( 첫 익스텐트에 프리 리스트로 모든 익스텐트 관리)

자동의 경우 BMB로 관리.  (자기 익스텐트를 각 익스텐트에서 관리)

 

 

 

 오늘 실습하던 내용까지 기록된 파일입니다.

 

데이터베이스 관리 초급 실습.txt

 

 

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

[Cloud] Docker 컨테이너 2일차  (0) 2017.10.24
[DB] DB관리 초급 5일차  (0) 2017.10.20
[DB] DB관리 초급 3일차  (0) 2017.10.18
[DB] DB관리 초급 2일차  (0) 2017.10.17
[DB] DB관리 초급 1일차  (0) 2017.10.16

+ Recent posts