DBA/Oracle

기타- Admin 관련 스크립트 등..

da-dba 2024. 4. 8. 10:38

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 - 성공, 실패 다 기록