0206 ADMIN

현스·2024년 2월 6일

ADMIN

목록 보기
14/18
post-thumbnail

오라클 관리 admin

0206

데이터베이스를 운영단계에서는 아무때나 내릴 수 없으므로 정적 파라미터 변경은 최대한 db 설치 이후에 해야 합니다.

반드시 꼭 변경해야할 파라미터

  1. db_files
  2. processes
  3. 기타 중요 파라미터

어제 배운 것 중에 중요 내용 복습

질문1. ORACLE_HOME/dbs/ 밑에 initPROD.ora 와 spfilePROD.ora 가 같이 있는 상태에서
db를 내리고 startup 을 하면 어느 파라미터 파일을 읽을까요 ?

답 : spfilePROD.ora

에스피파일이 우선순위이다 !

질문2. ORACLE_HOME/dbs/ 밑에 spfilePROD.ora 와 spfileORCL.ora 가 같이있으면
둘 중 어떤 파라미터 파일을 우선적으로 읽을까요 ?

답: 다음과 같이 ORACLE_SID 환경 변수에 세팅되어져 있는 인스턴스 이름의 파라미터 파일을 읽는다.

[orcl:~]$ echo $ORACLE_SID
orcl

만약에 다른 인스턴스로 변경하고 싶다면 ?

  1. .oraenv 를 사용하거나
  2. 직접 export ORACLE_SID-PROD 합니다.

정리하면 STARTUP 할 때 파라미터 파일을 읽는 순서

1순위 다음과 같이 pfile 을 지정해서 파라미터 파일을 선택하는 것 !

startup pfile=$ORACLE_HOME/dbs/initPROD.ora

2순위. spfile (spfilePROD.ora)

3순위. pfile (initPROD.ora)

모두 다 있으면 지정된게(1순위가) 올라감 !

실습

#1. PROD 인스턴스 환경으로 만들어 놓습니다.

$ . oraenv

#2. ORACLE_HOME/dbs 밑에 PROD 인스턴스 관련해서 파라미터 파일이 뭐가 있는지 조회합니다.

#3. 인스턴스를 내리고 다시 올려서 현재 인스턴스가 spfile 로 구성되었는지 pfile로 구성되었는지 확인하시오

문제1

startup spfile=$ORACLE_HOME/dbs/spfilejhs.ora

cd /u01/app/oracle/diag/rdbms

cd /u01/app/oracle/diag/rdbms/jhs
cd /u01/app/oracle/diag/rdbms/jhs2
cd /u01/app/oracle/diag/rdbms/orcl
cd /u01/app/oracle/diag/rdbms/prod

예제35 database 종료 모드 4가지 알고 있기

왜 dba 가 db 를 내리는지 ?

  1. 오라클 정적 파라미터 값 변경할 때
  2. 오라클을 upgrade 하거나 patch 를 수행할 때
  3. 오라클 데이터베이스를 백업할 때
  1. shutdown normal
  2. shutdown transactional
  3. shutdown immediate 업데이트 한거 셧다운 하면 롤백 됨.
  4. shutdown abort

트랜잭션 : 모든 명령어가 정상적으로 수행 완료된 상태 또는 모든 명령어가 수행되지 않아 취소된 상태로 존재

현재 진행중인 트랜잭션 - 명령어를 작성중인 상황

세션 어떤 활동을 위한 시간이나 기간
오라클 데이터베이스에서 세션은 데이터베이스 접속을 시작으로 여러 데이터베이스에서 간련 작업을 수행 후
접속을 종료하기까지 전체 기간을 의미한다.

체크 포인트 메모리의 수정된 페이지와 트랜잭션 로그 정보를 디스크에 기록
예기치 않은 종료 후 복구 프로세스에서 복구를 시작하는 기준점.

2번 캡쳐 -
shutdown immediate

ocp 문제에 단골처럼 나온다고

커밋할 때 셧다운어볼트를 하면 로그라이터에 남아 있다구

셧다운 어볼트를 쓰는걸 주저할까봐

셧다운 인스턴스 리커버리 - 이거 알기 !!

startup force = shutdown abort + startup

crs_stat -t

리눅스 서버의 주요 응용프로그램 상태 확인

target, state 모두 ONLINE 이어야 한다.

PROD 는 클러스터에 등록이 안되어서 안보이는 중 !!

  1. jhs db 를 srvctl 명령어로 내린다

srvctl stop database -d jhs -o abort

  1. 올리기
    srvctl start database -d jhs

  1. 리눅스 서버에 있는 database 관련한 모든 응용 프로그램들을 모두 내리시오

crs_stop -all

회사에서는 이 디비를 끄고 리눅스 버춰박스를 꺼야함...

  1. 오라클에 문제가 생겼을 때 진단하는 툴 사용법

alert log file 을 em 으로 확인하기

  1. alert log file ---> 오라클에 큰 이슈들이 여기에 적힙니다.
  2. trace file ---> 그 이슈들에 대한 sql 을 보고싶을 때 열어보는 파일입니다.

automatic da

show incident

문제 adrci 를 실행하는 쉘 스크립트를 dba.sh 에 추가하시오

오라클에 문제가 있는지 진단을 하려면 14번을 누르세요

예제38 db의 성능 정보를 확인하려면 v$ 로 시작하는 뷰를 알아야해요

v$ 로 시작하는 dynamic performance view 를 활용하는 방법

  1. 악성 SQL 을 찾을 수 있게 해줍니다. (VSQL,VSQL, VSQLTEXT)

  2. 지금 현재 작업을 못하고 Waiting 하는 세션들을 조회할 수 있게 해줍니다.
    ( VSESSION,VSESSION, VSESSION_WAIT )

  3. 락(LOCK)이 발생했을 때 락 홀더와 waiter 를 찾을 수 있게 해줍니다
    (V$LOCK)

  4. 대량 데이터를 update 할 때 취소해야할 데이터(undo) 가 얼마나 되는지
    모니터링 할 수 있게 해준다. (V$UNDO_XXX)

*v$ 로 시작하는 다이나믹 퍼포먼스 뷰의 고려사항

  1. 이 뷰는 전부 sys 유저가 소유하고 있다.

  2. startup 단계에 따라서 서로 다른 뷰를 사용할 수 있습니다.(ocp)

  3. dynamic performace view 가 뭐가 있는지 조회하려면 v$fixed_table 을 보면 된다.

  4. 동적 데이터를 보여주기 때문에 계속 갱신된다

■ 실습1. nomount 단계에서 볼 수 있는 다이나믹 퍼포먼스 뷰

SQL> shutdown immediate
SQL> startup nomount
SQL> select count() from v$parameter; ---> 볼 수 있음
SQL> select count(
) from vinstance;>볼수있음SQL>selectcount()fromvinstance; ---> 볼 수 있음 SQL> select count(*) from vcontrolfile; ---> 볼 수 없음

■ 실습2. mount 단계에서 볼 수 있는 다이나믹 퍼포먼스 뷰

SQL> alter database mount;
SQL> select count() from v$parameter; ---> 볼 수 있음
SQL> select count(
) from vinstance;>볼수있음SQL>selectcount()fromvinstance; ---> 볼 수 있음 SQL> select count(*) from vcontrolfile; ---> 볼 수 있음
SQL> select count(*) from dba_tables; ---> 볼 수 없음.

■ 실습3. open 단계에서 볼 수 있는 다이나믹 퍼포먼스 뷰

SQL> alter database open;
SQL> select count() from v$parameter; ---> 볼 수 있음
SQL> select count(
) from vinstance;>볼수있음SQL>selectcount()fromvinstance; ---> 볼 수 있음 SQL> select count(*) from vcontrolfile; ---> 볼 수 있음
SQL> select count(*) from dba_tables; ---> 볼 수 없음.

문제1. datafile 에 관련한 다이나믹 퍼포먼스 뷰를 알고싶은데 기억이 안날 때는 ?

답: select name from v$fixed_table
where name like '%DATAFILE%';

문제2. ALERT LOG 파일에 적히는 내용이 무엇입니까 ?

데이터베이스의 Alert File에는 다음과 같은 메시지가 시간 순으로 기록되어 있습니다.

• 시작 시 사용된 기본값이 아닌 초기화 파라미터 (non-defalut database parameters)

• 발생한 모든 내부 오류(ORA-600),
블록 손상 오류(ORA-1578) block corruption errors
deadlock 오류(ORA-60) deadlock errors
DDL 명령어로 ( CREATE, ALTER, DROP TRUNCATE, RENAME) DATABASE 및 TABLESPACE SQL 문

STARTUP, SHUTDOWN, ARCHIVE LOG 및 RECOVER와 같은 Enterprise Manager 또는 SQL*Plus문과 같은 관리 작업

• shared server 및 디스패처 프로세스의 기능과 관련된 일부 메시지 및 오류

• Materialized View의 자동 Refresh 중에 발생한 오류

스캇유져 시작했을때는 아님 !!!!!!!!!!!!!!!!!!!!
session logins and logouts 는 아님 !

문제3. trace file 에 적히는 내용이 무엇입니까 ?

각 서버 프로세스와 백그라운드 프로세스는 연관된 Trace file에 정보를 기록할 수 있습니다.
프로세스는 시스템 오류를 감지하면 오류에 대한 정보를 해당 Trace file로 덤프합니다.
시스템 오류가 발생하고 정보가 Trace file에 기록되면 관리자는 Oracle 지원 센터 서비스에
문의해야 합니다

[OCP 19c Workshop 2번] trace file 관련 문제

they can be written by server processes
they can be written by background processes

  1. 데이터 딕셔너리를 알고 있어야 합니다.

  1. 데이터 딕셔너리의 소유자는 sys
  2. 데이터 딕셔너리는 system tablespace 에 저장되어있다. db 가 open 되어야지만 볼 수 있다.
  3. 데이터 딕셔너리는 다음 3가지 종류가 있다.
    1) user_xxx : 유져가 소유한 모든 객체
    2) all_xxx : 유져가 볼 수 있는 모든 객체
    3) dba_xxx : database 내의 모든 객체

객체(object) 1. 테이블
2. 뷰
3. 인덱스
4. 시퀀스
5. 시너님

문제1. 데이터베이스에 만들어진 테이블이 몇개가 있는지 조회하려면 ?

select count(*) from dba_tables;

문제2. 데이터베이스 만들어진 인덱스가 몇개 있는지 조회

select count(*) from dba_indexes;

설명: user_xxx, all_xxx, dba_xxx 데이터 사전은 오라클에 의해서 만들어졌고 오라클에 의해서 관리됩니다.

문제3. emp 테이블에 database 에 존재하는지 확인하시오

select count(*)
from dba_tables
where table_name = 'EMP';

문제4. sal 컬럼이 어느 테이블에 존재하는지 확인하고 싶다면

cloumn 에 대한 딕셔너리를 알아야하는데 이걸 다 못외우니까 찾아봐야 합니다

select table_name
from dictionary
where table_name like'%COLUMN%';

SELECT TABLE_NAME
FROM DBA_TAB_COLUMNS
WHERE COLUMN_NAME ='SAL';

문제5. DATABASE 에 유져가 모두 몇개인지 조회하시오 !

select table_name
from dictionary
where table_name like'%USERS%';

select count(*)
from dba_users;

X$로 시작하는 테이블들이 데이터 사전 뷰의 원본 테이블 입니다.

SELECT *
FROM vfixedtableWHEREnameLIKEXfixed_table WHERE name LIKE 'X%';

x$ 로 시작하는 테이블들을 직접 조회해서 볼 수는 있으나 어떤게 중요하고
어떤게 덜 중요한지 모르니까 오라클에서 x$ 시작하는 테이블을 가지고
user_xxx, all_xxx, dba_xxx 와 같은 데이터 딕셔너리 뷰를 생성해준것입니다.

SELECT *
FROM X$KQFTA ;

ocp 풀기 전에 정리

  1. 데이터 딕셔너리의 소유자 = sys
  2. 데이터 딕셔너리는 누가 만들고 누가 관리하나 : 오라클
  3. 데이터 딕셔너리 뷰의 근본이 되는 테이블인 x$ 로 시작하는 테이블을 바로 직접 조회할 수 있다.

6장 ORACLE 네트워크 환경 구성

목표

• Enterprise Manager를 사용하여 다음 작업 수행
– 추가 리스너 생성
– Oracle Net 서비스 alias 생성
– Connect-time failover 구성
– Oracle Net 리스너 제어
• tnsping을 사용하여 Oracle Net 연결 테스트
• Shared Server를 사용하는 경우와 Dedicated Server를
사용하는 경우 식별

예제 40. 오라클에 접속하려면 오라클 NET 서비스를 알아야 해요

내 노트북 아이피 주소를 국민은행( 클라이언트의 서버) 의 sqlnet.ora 에 넣어줘야 할 수 있음

<Grid_home>/network/admin/listener.ora
./sqlnet.ora

4가지 정보 1. 호스트(아이피 주소) 2. 포트 3. 프로토콜 4. 서비스이름

Oracle Net 리스너는 자체 소프트웨어 설치 디렉토리인 <Grid_home>에서 시작됩니다.

ASM Instance에 연결 기능을 제공하려면 리스너를 이 소프트웨어 설치에서 실행해야 합니다.

이 리스너는 또한 기본적으로 동일 서버에 설치된 모든 데이터베이스 instance를 수신하는 데 사용됩니다.

실습
#1. GRID_HOME 디렉토리를 쉽게 찾아갈 수 있도록 환경변수를 만듭니다.

cd
vi .bash_profile
맨 아래에 다음의 내용을 추가

export GRID_HOME=/u01/app/oracle/product/11.2.0/grid

source .bash_profile
echo $GRID_HOME

스크린샷 삽입

#2. 서버에 listener.ora 를 찾으시오

cd $GRID_HOME
cd network
cd admin

[orcl:admin]$ ls
listener.ora listener.ora.bak.edydr1p0 samples shrept.lst sqlnet.ora

#3. 나의 리스터를 통해서 접속이 가능한지 확인을 합니다.

sqlplus scott/tiger@192.168.19.43:1521/orcl.us.oracle.com

그런데 위와 같이 기술해서 접속하면 너무 적을게 많으니까 tnsmanes.ora 에 4가지 정보를 기록하고 tns 별칭을 이용해서 접속한다

#4. tnsnames.ora 가 있는 곳으로 이동합니다.

cd $ORACLE_HOME/network/admin

$ ls
samples shrept.lst tnsnames.ora

그런데 만약 접속이 안된다면?

해당 아이피 주소로 ping 이 나가는지 확인한다

$ping 192.168.19.43

설명 : ping

  1. tnsping 을 날려봅니다

$tnsping orcl777

설명 : ping 은 나가는데 tnsping 이 안나가면 tnsnames.ora 에 구성을 잘못한 것.

문제1 짝꿍의 4가지 정보를 받아서 나의 tnsnames.ora에 등록하시오
tns 별칭은 짝꿍의 영문이름_orcl 로 하시오

jyp_orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.45)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.us.oracle.com)
)
)

$ ping 192.168.19.45

$ tnsping 192.168.19.45

짝꿍 자리로 들어가지는지 확인

문제2. sqlnet.ora 에 짝 아이피 주소를 넣어서 허용된 아이피만 접속될 수 있도록 하시오

sqlplus scott/tiger@192.168.19.43:1521/orcl.us.oracle.com 이게 EZCONNECT 임

sqlnet.ora 의 내용

tcp.validnode_checking=yes
tcp.invited_nodes=(192.168.19.45)
tcp.exclude_nodes=(192.168.19.54)
TCP.NODELAY=yes

설명: (192.168.56.1,192.168.56.2) 는 접속되지만
(192.168.0.6) 는 접속이 안됩니다.


profile
˗ˋˏ O R A C L E ˎˊ˗

0개의 댓글