chmod 777 jazn.sh에서 777 숫자의 의미
2진수로 3자리씩 끊어서 권한을 부여하는 방법(절대모드)과
기호로 권한을 부여하는 방법(기호모드)이 있는데.. 777 같은 숫자는 전자를 의미
0 0 0 (이진수) = 0(10진수)
1 1 1 (이진수) = 7(10진수)
1 0 0 (이진수) = 4(10진수)
1 1 0 (이진수) = 6(10진수)
1 1 1 에서 제일 첫번째 1은 read 권한, 두번째 1은 write 권한, 세번째 1은 excute 권한이다.
7 7 7 에서 제일 첫번째 위치는 owner(사용자) 권한 , 두번째는 group(그룹) 권한, 세번째는 the other(다른사용자) 권한이다.
ls -l 명령어를 쳐보았을 경우
drwxr-x--- 이렇게 나오는데 앞에 d는 디렉토리를 의미한다.
이 파일은 사용자는 읽기,쓰기,실행 다 가능하며 그룹은 읽고 실행만 가능하며, 그 외 사용자는 아무것도 안되는것을 의미합니다.
--------------------------------------------------------------------------------------------------
책에 있는 DB_BLOCK_SIZE등의 파라메터값 확인 하기
show parameter 파라메터명
ex) show parameter db_block_size
--------------------------------------------------------------------------------------------------
Startup의 3단계를 단계별로 실행시키는 방법
startup nomount - nomount까지만 실행
alter database mount - nomount된 상태의 데이타베이스를 mount까지 실행
alter database open - mount된 상태의 데이타베이스를 open까지 실행
현재 인스턴스의 상태 확인 방법
select status from v$instance;
시스템의 일시정지/해제 방법
alter system suspend; - 일시정지
alter system resume; - 해제
-------------------------------------------------------------------------------------------------
restricted mode ( 제약모드 ) 의 자료 위치
FTP - document 폴더의 restructed session 파일 참조
-------------------------------------------------------------------------------------------------
Parameter의 분류
default parameter - 내장 parameter 들
non-default parameter - spfile, pfile
-------------------------------------------------------------------------------------------------------------------
* workshop 1 4-32페이지
Dynamic Performance Views
x$->v_$->v$
v$는 동의어개념으로 관리자만 액세스 가능하다.
각 항목별 뷰
Sessions = v$session
File states = v$datafile
Progress of jobs and tasks =
Locks = v$lock
Backup status = v$lock
Memory usage and allocation = v$sgastat
System and session parameters = v$parameter, v$spparameter
SQL execution = v$sql
Statistics and metrics=
* workshop 1 4-33페이지
Dynamic Performance Views : Usage Examples
A - CPU_TIME >200000; = 2000초(1/100초)
B - v$session = 이 호스트에서 검색
C - v$lock = 현재 lock 상태인 것을 검색
* workshop 1 4-34페이지
Dynamic Performance Views : Considerations
v$ 는 동적성능뷰이고, 실행시 memory/controlfile에서 읽어옴.
-------------------------------------------------------------------------------------------------------------------
Free space
pctfree - 에서 설정가능하다. create table 의 옵션중 하나. update를 위한 예비공간. 기본값은 10%
존재 이유 - 1) update되어서 data의 크기가 커졌는데, 만약 공간이 없으면 다른 공간으로 이전(Row Migration) 발생
이 경우 데이터를 읽기 위해 row id 값의 위치에 왔는데 pointer(이전한 주소값) 가 남아 있게되면 다시 한번 I/O 작업이 발생
이로써, 시간적 손실 발생
2) 여러 block에 나뉘어서 저장되면 row chain(조각)이 발생
이 경우 데이터를 읽기 위해 row id 값의 위치에 왔는데 80%가량 읽다가 block의 끝에 오게되고,
나머지 20%의 row chain(조각)을 찾아 pointer를 따라게되어 I/O 작업이 발생
이로써, 시간적 손실 발생
-------------------------------------------------------------------------------------------------------------------
EMPLOYEES의 테이블스페이스 이름 검색
select table_name, tablespace_name
from user_tables
where table_name='EMPLOYEES';
테이블스페이스 검색(sys계정)
select name from v$tabelspace;
실제데이터파일 검색(sys계정)
select name from v$datafile;
-------------------------------------------------------------------------------------------------------------------
현재 시스템 테이블스페이스 조회(sys계정)
select tablespace_name, block_size, contents, extent_management from dba_tablespaces;
결과창에서 TEMP 폴더는 Sort를 위한 폴더
-------------------------------------------------------------------------------------------------------------------
Tablespaces in the Preconfigured Database
SYSTEM - data dictionary가 있음, 오라클데이터베이스 관리 sys계정만 access 가능
UNDOTBS1 - undo 정보보관
TEMP - sort, 인덱스 생성
-------------------------------------------------------------------------------------------------------------------
Altering a Tablespace
Read write, Read Only 기능 확인하기
> create table sample_tab1(a number, b date default sysdate) tablespace sample01;
> insert into sample_tab1(a) value(100);
> commit;
> conn /as sysdba
> alter tablespace sample01 read only;
> insert into sample_tab1(a) value(2000); < 에러 발생
> alter tablespace sample01 read write;
Offline 기능 확인하기
> alter tablespace sample01 offline;
> select tablespace_name, block_size, contents, extent_management, status
from dba_tablespaces; - offline 확인
> alter tablespace sample01 online;
-------------------------------------------------------------------------------------------------------------------
테이블스페이스 size 변경
1. add datafile(파일 추가)
2. resize(기존 파일 크기 변경)
3. autoextend on next nM maxsize nM unlimited < create/add datafile의 옵션, unlimited 는 os에서 지원하는 한 계속 증가임
ex) autoextend on next 1 maxsize 500
( 기존 datafile 크기가 100일때 꽉차게 되면 1씩 증가 하고 최대 500까지)
-------------------------------------------------------------------------------------------------------------------
테이블스페이스의 삭제
총 4가지의 옵션으로 이루어져 있는 syntax
ex) drop tablespace sample01 -> 해당 테이블스페이스가 비어있는 경우만 삭제
ex) drop tablespace sample01 including contents ->포함된 세그먼트도 모두 삭제
ex) drop tablespace sample01 including contents and datafiles -> 포함된 세그먼트도 모두 삭제 및 os file도 함께 삭제
ex) drop tablespace sample01 including contents and datafiles cascade constraints -> 제약조건도 함께 삭제
-------------------------------------------------------------------------------------------------------------------
Database User Accounts
An authenticaion method - 두가지 인증 방법이 있음
| DB인증 | OS인증 |
| BY PASSWORD(dba_users) | EXTERNALLY(OS유저 생성후 동일한 DB유저) |
A user profile - 사용자에 대한 자원제한설정
A consumer group - resource manager에서 설정
Predefined Accounts :SYS AND SYSTEM
SYS account - sysdba 권한 보유[startup, shutdown, create database]
DBA권한 갯수 확인하기[sys계정]
>select count(*)
>from role_sys_privs
>where role='DBA';
-------------------------------------------------------------------------------------------------------------------
Creating a User
connect role 권한내용 확인하기
>select privilege
>from role_sys_privis
>where role='CONNECT';
Authenticating Users
Password - DB인증
External - OS인증
Global - 별도프로그램인증
EDY계정정보보기
>select username, password, default_tablespace
>from dba_users
>where username='EDY';
-------------------------------------------------------------------------------------------------------------------
Privileges
Object privilege 권한 부여의 예
>grant update
>on employees
>to scott;
System privilege 권한 부여의 예
>grant create session
>to scott;
-------------------------------------------------------------------------------------------------------------------
System Privileges
RESTRICTED SESSION- 제한모드
ALTER DATABASE ARCHIVELOG - mount에서만 가능, Archive mode로 변경
DROP ANY object - 다른 스키마의 오브젝트 삭제
ALTER DATABASE 와 ALTER SYSTEM의 차이
ALTER DATABASE - modify the database
ALTER SYSTEM- modify the Oracle instance
-------------------------------------------------------------------------------------------------------------------
Assigning Privileges to Roles and Roles to Users
화면에 보이는 대로 권한 및 롤 부여하기 예제
>conn /as sysdba
>create role HR_MGR
>create role HR_CLERK
>grant insert, delete
>on hr.employees
>to HR_MGR;
>grant update, select
>on hr.employees
>to HR_CLERK;
>grant HR_CLERK
>to HR_MGR;
>grant HR_MGR
>to jenny;
>grant HR_CLERK
>to david, rachel;
Predefined Roles
유저에게 RESOURCE 롤을 부여하게 되면 unlimited tablespace 권한을 포함하여 부여한다.
이 권한은 create table에서 quota 옵션을 사용안해도 테이블을 만들수 있도록 하기때문에 기업에서는 RESOURCE 롤을
사용하지 않고 , 회사에 맞는 롤을 생성 후 부여하는게 권장사항.
Secure Roles
default role - login시 자동 활성화 하는 롤
하나의 사용자는 여러개의 롤을 가질 수 있꼬 몇개만 선택적 활성화 가능.
-------------------------------------------------------------------------------------------------------------------
Profiles and Users
default 프로파일 갯수 확인
>select count(*)
>from dba_profiles
>where profile='DEFAULT';
default 프로파일의 옵션종류 확인
>seelct profile, resource_name
>from dba_profiles;
resource limited
- call level [명령수행 세션에서만 유지, 한 명령당 제한]
- session level [ 현재 세션에서만 유지, 다른 세션에는 미영향]
Concurrent Sessions 변경하는 명령어
>alter profile default limit sessions_pre_user 3; - 동시접속 세션수 3개로 제한
>alter profile default limit sessions_pre_user unlimited; - 제한 해제
RESOURCE_LIMIT - 기본값은 false 이므로 true로 해놔야 자원제한 설정가능
-------------------------------------------------------------------------------------------------------------------
Creating a Password Profile
profile 생성시 16개 항목중 만약 5개만 기입하였다면, 11개(16-5)는 기본값으로 unlimited 설정되어짐
-------------------------------------------------------------------------------------------------------------------
VERIFY_FUNCTION
VERIFY_FUNCTION 스크립트의 위치 - $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
스크립트 실행후 VERIFY_FUNCTION 해제 방법 -
>alter profile default limit
>password_reuse_max unlimited
>password_reuse_time unlimited
>password_verify_function null;
VERIFY_FUNCTION의 에러 번호 사용범위 - 20001~21000 사용. 65300여개의 에러중 유저용 번지수.
-------------------------------------------------------------------------------------------------------------------
스키마 삭제&생성 연습하기 - ftp->sample_schema.zip 파일 이용.
-------------------------------------------------------------------------------------------------------------------
ROWID와 UROWID의 차이점 알아보기
-------------------------------------------------------------------------------------------------------------------
Referential integrity
참조무결성제한 조건 - 위반된 Data의 입력/수정 방지 목정 -> 무결성 보장
Constraint States
DISABLE - 위반데이터 입력 허용
ENABLE - 위반데이터 입력 불가
NOVALIDATE - 위반데이터 입력 허용
VALIDATE - 위반데이터 입력 불가
-------------------------------------------------------------------------------------------------------------------
Constraint Checking
Initially immediate - 즉시 체크포인트 발생
Initially deferred - 트랜잭션이 끝나면 발생
-------------------------------------------------------------------------------------------------------------------
Dropping a Table
PURGE - RECYCLE BIN에 넣지말고 바로 삭제
Truncating a Table
releases used space - HWM(High Water Mark)
TRUNCATE 옵션의 좋은점 - 1) ROW 단위로 삭제하는 DELETE 보다 빠름
2) undofile 쓰기작업을 안하므로 빠름.
-------------------------------------------------------------------------------------------------------------------
Indexes
Index의 개념 - table과 독립된 object 이나 실제적으로는 table과 연관(종속)되어 사용
PK, UK 기능 강화 , 생성시간이 길다. table의 검색속도 향상
Row pointer - ROWID
Index와 Table과의 차이
| Table | Index | |
| Insert | Random저장 | 위치를 찾아서 저장 |
| Update | 원본삭제 후 저장 | Marking 후 insert |
| Delete | 삭제 | Marking |
| 환경 | OLTP(동적인환경) | DW(정적인환경) |
[Delete Marking 이란 논리적인 제거로 실제 데이터는 지우지 않아, 결과적으로 Index가 비대해지는 문제점 발생]
- 따라서 Index의 재구성(rebuild, coalesce)이 필요함.
Index 의 Type -
| B-tree | Bitmap | |
| Cardinality | High | Low |
| 분포도 | Low | High |
| OR 연산자 | 불리 | 유리 |
-------------------------------------------------------------------------------------------------------------------
What is a View
View - 서브쿼리로 생성,
View 의 4가지 장점 - 보안성, 독립성, 다양성, 단순성
-------------------------------------------------------------------------------------------------------------------
Sequences
Sequence - 주문번호, 일정한 패턴에 의해 생성된 정수
Gap 발생요건 - Cache옵션 사용중 전원이 꺼지는 경우
-------------------------------------------------------------------------------------------------------------------
Temporary Tables
Temporary Table - PGA에 저장, 이후 Full 이 될 경우 Temporary tablespace에 저장. EX) 회원가입창의 뒤로가기
DML lock은 허용 안함.
ON COMMIT DELETE ROWS - 트랜잭션 종료 후 사라짐.
ON COMMIT PRESERVE ROWS - 세션 종료 후 사라짐.
-------------------------------------------------------------------------------------------------------------------
COMMIT - redo log buffer->LGWN->redo log file
-------------------------------------------------------------------------------------------------------------------
Locks
Lock 해제- commit, rollback 실행시 해제
-------------------------------------------------------------------------------------------------------------------
Data Concurrency
Concurrency - 동시성
>LOCK TABLE employees IN EXCLUSIVE MODE; - 수동 lock
EXCLUSIVE MODE - 배타적 모드, 가장 높은모드의 lock
ROW SHARE - 자동으로 걸리는 락, 세션은 X
ROW EXCLUSIVE - row-level lock, DML 발생시
SHARE - Create an index on a table 시 발생
SHARE ROW EXCLUSIVE - on delete cascade 옵션시
EXCLUSIVE - 수동설정 lock
| EXCLUSIVE | SHARE |
| 내가 사용중이면 다른 유저는 사용불가 | 쿼리는 허용 |
-------------------------------------------------------------------------------------------------------------------
Dealocks - 8-29페이지 보고 연습하기.
Deadlock 해결책 - COMMIT, KILL SESSION
Kill session 방법 -
>alter session kill session '159,296';
-------------------------------------------------------------------------------------------------------------------
Undo Data - 롤백보장, 일광선보장, 복구, Flashback query
Recovery - SMON(redo, undo 참조 해서 복구) [ redo - commit된 정보, undo - commit 안된 정보 ]
-------------------------------------------------------------------------------------------------------------------
Undo Information
Undo table space 생성
>create undo tablespace undotbs2
>datafile '/u01/app/oracle/oradata/orcl/undotbs.dbf' size 50m;
Undo VS Redo
| Undo | Redo | |
| Record of | Undo data | Redo entry |
| Used for | recovery, flashback query | 복구, 재적용 |
| Stored in | Undo segments | Redo log files |
| Protects against | 다중 사용자 시스템에서 일관성이 없는 읽기방지 |
데이터 손실 |
Monitoring Undo
모니터링 두가지 방법 - 사이즈 모니터링, undo table space size 조건
-------------------------------------------------------------------------------------------------------------------
Undo Retention
| Active | |
| InActive | |
| Expired | 유지 기간이 지난 데이터 |
| UnExpired | 아직 유지기간이 지나지 않은 데이터 |
-------------------------------------------------------------------------------------------------------------------
ALTER TABLE SPACE undotbs1 RETENTION GUARANTEE; - 15분(default time) 동안 공간이 부족해도 덮어쓰지 않음
대신 다른 세션에 문제 발생
ALTER TABLE SPACE undotbs1 RETENTION NOGUARANTEE; - 15분(default time) 동안 공간이 부족하면 덮어씀
snapshot too old 발생
-------------------------------------------------------------------------------------------------------------------
O7_DICTIONARY_ACCESSIBILITY - O7은 oracle 7 버젼, Dictionary에 액세스 방지
O7_DICTIONARY_ACCESSIBILITY=FALSE - 액세스 방지
O7_DICTIONARY_ACCESSIBILITY=TRUE - 액세스 허용
-------------------------------------------------------------------------------------------------------------------
Mandatory auditing - alert log, $ORACLE_HOME/rdbms/audit/*.aud
Standard database auditing - 문장, 권한, 객체감사에 대한 대략적인 내용
Value-based auditing - 특정기반으로 한 값, Trigger 를 통해 사용
Fine-grained auditing - 상세감사, 가장 일반적으로 사용하는 감사.
-------------------------------------------------------------------------------------------------------------------
Standard Database Auditing
Generate audit trail->Audit trail - sys.aud$
Generate audit trail->OS or XML audit trail - OSfile = *.oud
-------------------------------------------------------------------------------------------------------------------
감사정보조회 3가지 - DBA_AUDIT_TRAIL, DBA_FGA_AUDIT_TRAIL, DBA_COMMON_AUDIT_TRAIL
Audit Options - 문장, 권한, 객체
AUDIT TABLE BY hr [WHENEVER [NOT] SUCCESSFUL];
SUCCESSFUL - 성공감사 ( 성공한 내용만 기록 )
NOT SUCCESSFUL - 실패감사 ( 실패한 내용만 기록 )
WHENEVER - 성공, 실패 다 기록
'DBA > Oracle' 카테고리의 다른 글
| 오라클 시퀀스 캐싱옵션 변경 (0) | 2024.04.24 |
|---|---|
| 일자 정합성 체크 Function (0) | 2024.04.08 |
| DB접근제어(DB세이퍼) 솔루션을 통해 서비스 DB계정으로 DB접속을 제어하는 로직을 오라클 로그온-트리거를 통해 구현 방법 (0) | 2024.04.08 |
| 파일로 내리기(Spool기능)메타 데이터의 끝으로 건너뛰기 (0) | 2024.04.04 |
| trace 생성 및 분석 (0) | 2024.04.04 |