토마토쥬스 한잔과 오늘도 강의 수강을 시작합니다.
======================================== 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> col OBJECT_NAME for a30
SQL> select OBJECT_NAME, OBJECT_TYPE, STATUS from user_objects;
SQL> select OBJECT_NAME, OBJECT_TYPE, STATUS from user_objects;
<사진 2>
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로 관리. (자기 익스텐트를 각 익스텐트에서 관리)
오늘 실습하던 내용까지 기록된 파일입니다.
'강의노트' 카테고리의 다른 글
[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 |