생계/Oracle2023. 9. 20. 15:01

1) test 유저 생성

create user test identified by "Passw0rd";
grant connect to test;

2) wallet 용 tns alias 추가 
cd $ORACLE_HOME/network/admin
vi tnsnames.ora

WAL_TEST = 
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xx.xx.xxx)(PORT=1521))
)
(CONNECT_DATE=
(SERVICE_NAME=DFS)(SERVER=DEDICATED)
)
)


3) conn script 

cd /home/oracle/

-- vi p_test.sql
conn test/"Passw0rd" @WAL_TEST
show user;
select count(*) from all_objects;
exit;

-- vi np_test.sql
conn /@WAL_TEST
show user;
select count(*) from all_objects;
exit;


4) make wallet

-- wallet 저장 디렉토리 생성
mkdir $ORACLE_HOME/network/admin/wallet

-- wallet 생성, wallet 패스워드 입력
orapki wallet create -wallet "wallet 디렉토리" -auto_login_local

-- credential 생성, alias, 계정/비번 wallet 패스워드 입력 
mkstore -wrl "wallet 디렉토리" -createCredential WAL_TEST test Passw0rd

=> wallet 비밀번호 입력 

-- sqlnet.ora 에 wallet dir 추가 

cd $ORACLE_HOME/network/admin

vi sqlnet.ora

WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY= "wallet 디렉토리")
))

SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0

5) 실행

cd /home/oracle/

ss
@p_test

@np_test


-- ### wallet 관리 #######

select *
  from v$encryption_wallet
;


-- credential list 확인 

mkstore -wrl "wallet 디렉토리" -listCredential


-- credential list 삭제 
mkstore -wrl "wallet 디렉토리" -deleteCredential WAL_TEST


-- credential 비번 수정 
mkstore -wrl "wallet 디렉토리" -modifyCredential WAL_TEST test pass1234

-- wallet 비번 수정 
orapki wallet change_pwd -wallet "wallet 디렉토리" -oldpwd "Passw0rd" -newpwd "oracle123"


-- wallet 삭제 
rm *wallet*

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle audit 파일 삭제  (0) 2023.05.29
대용량 컬럼 drop 하기 # set unused  (0) 2023.05.04
리눅스 오라클 hugepage 설정  (0) 2023.05.03
RMAN CATALOG DB 쓰는 이유  (0) 2023.02.28
오라클 메모리 구조 Memory Architecture  (0) 2023.01.24
Posted by 돌고래트레이너
생계/Oracle2023. 5. 29. 22:05

 

oracle audit 파일 삭제

show parameter audit 으로 audit 파일 destination 확인 

 

1. os 명령어로 삭제하기 

find . -mtime +20 -type f -name "*.aud" -mtime +1  -exec rm -f {} \;

=> 수정한지 20 일 이상된 .aud 파일을 삭제 

 

2. 오라클 제공 util (DBMS_AUDIT_MGMT) 로 삭제 

-- INIT_CLEANUP ( PURGE JOB 생성 위해 필요)
BEGIN
DBMS_AUDIT_MGMT.INIT_CLEANUP(
AUDIT_TRAIL_TYPE => dbms_audit_mgmt.AUDIT_TRAIL_OS,
default_cleanup_interval => 24*7);  -- 1주일에 1번 실행
END;

-- 주기적으로 삭제하는 JOB 생성 
BEGIN
   DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
   AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
   AUDIT_TRAIL_PURGE_INTERVAL => 24*7,
   AUDIT_TRAIL_PURGE_NAME => 'STANDARD_OS_AUDIT_TRAIL_PURGE',
   USE_LAST_ARCH_TIMESTAMP => FALSE );
END;

-- 등록된 PURGE JOB 은 DBA_AUDIT_MGMT_CLEANUP_JOBS 뷰에서 확인가능

SELECT * FROM DBA_AUDIT_MGMT_CLEANUP_JOBS;

-- DBA_SCHEDULER_JOBS 에서도 확인 가능
SELECT *
  FROM DBA_SCHEDULER_JOBS 
 WHERE OWNER='AUDSYS';

-- 기타 AUDIT UTIL 관련 뷰
select * from DBA_AUDIT_MGMT_LAST_ARCH_TS;
select * from DBA_AUDIT_MGMT_CLEAN_EVENTS;

-- 등록된 PURGE JOB 삭제하기 

BEGIN DBMS_AUDIT_MGMT.DROP_PURGE_JOB('STANDARD_OS_AUDIT_TRAIL_PURGE'); END;

-- INIT CLEANUP 삭제하기 

BEGIN
  DBMS_AUDIT_MGMT.DEINIT_CLEANUP(
  AUDIT_TRAIL_TYPE  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS);
END;

-- 1회성 AUDIT 삭제 

BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
   AUDIT_TRAIL_TYPE         =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
   use_last_arch_timestamp  =>  FALSE);
END;
 

audit 파일 지우는걸 이렇게 힘들게 지워야하나..

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle wallet 사용하기  (0) 2023.09.20
대용량 컬럼 drop 하기 # set unused  (0) 2023.05.04
리눅스 오라클 hugepage 설정  (0) 2023.05.03
RMAN CATALOG DB 쓰는 이유  (0) 2023.02.28
오라클 메모리 구조 Memory Architecture  (0) 2023.01.24
Posted by 돌고래트레이너
생계/Oracle2023. 5. 4. 16:04

오라클 대용량 테이블에서 사용하지 않는 컬럼 DROP 하기 

1. SET UNUSED 구문으로 사용하지 않음으로 MARK 하기

2. DROP UNUSED  구문으로 삭제하기

예제 

UNUSED 가 잘되어있는지 확인해보자

UNUSED 로 MARK 된 컬럼은 테이블을 조회해도 나오지 않고, 딕셔너리에서도 제외된다. 

해당컬럼을 DROP 시 많은양의 UNDO 가 발생되는것을 막기 위해 CHECKPOINT 구문으로 DROP하자.

-- script 

DROP TABLE UNUSED_TEST PURGE;

CREATE TABLE UNUSED_TEST (A INT, B CHAR(1));

INSERT INTO UNUSED_TEST(A,B) VALUES(1,'A');
COMMIT;

ALTER TABLE  UNUSED_TEST SET UNUSED COLUMN B;

SELECT * FROM DBA_UNUSED_COL_TABS;
 
SELECT * FROM UNUSED_TEST; 

SELECT OWNER, TABLE_NAME, COLUMN_NAME 
  FROM DBA_TAB_COLUMNS
 WHERE TABLE_NAME='UNUSED_TEST' AND OWNER='ORAUSER';

ALTER TABLE UNUSED_TEST DROP UNUSED COLUMN CHECKPOINT 100;
 

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle wallet 사용하기  (0) 2023.09.20
oracle audit 파일 삭제  (0) 2023.05.29
리눅스 오라클 hugepage 설정  (0) 2023.05.03
RMAN CATALOG DB 쓰는 이유  (0) 2023.02.28
오라클 메모리 구조 Memory Architecture  (0) 2023.01.24
Posted by 돌고래트레이너
생계/Oracle2023. 5. 3. 23:41

1. Hugepage 정의, 이점

 

엔터프라이즈 급의 리눅스 환경에서 hugepage를 사용하는 것은 운영상의 이점이 있기에 거의 필수적으로 사용하고있다. 

hugepage 란 커널의 메모리 사용 기법인데, 보통의 경우 regular size page 가 4k로 쪼개져서 메모리를 관리하게 된다. 

잘게 쪼개진 page 로 인해 커널이 관리할 메타데이터의 양이 많아지는 부담과 메모리 스왑 현상이 나타나는 단점이 있다.

# 메모리 스왑 : 물리적 메모리 한계를 극복하기 위해 사용빈도가 적은 메모리의 영역을 디스크에 내려서 사용 가능 메모리 영역을 더 확보하려는 현상.

반면 hugepage를 사용하면, 4k 로 쪼개진 page 가 2M 단위로 관리되어 훨씬 적은 양의 메타데이터를 커널이 관리한다. 

ex) 100GB SGA 를 사용할 경우 

   - 4k regular size page : 26,214,400 개 

   - 2m hugepage : 51200 개

 2M hugepage 를 사용할 경우 커널이 관리할 메타데이터가 512 배가 절약 된다. 

또한 hugepage 는 메모리에 상주하여 swap out 되지 않는다. 

 

2. 운영중인 DB 의 SGA 에 적절한 hugepage 숫자를 계산하기   

 

my oracle support 에 적절한 갯수 hugepage 를 계산하는 shell script (hugepages_settings.sh)가 있다. 

 MOS (Doc ID 401749.1) 

 

https://login.oracle.com:443/oam/server/obrareq.cgi?encquery%3DK%2Fs4FslU9YB9bzkyYnXg2wvQoxpbKfzNpzo%2FO9uCIXObYULdq8rUDNdi1%2B31Dulke9vAtUU1ryGV%2B7SVsVx0rSUw6HkOJ%2B6EO%2FHswwoggbJW0LTHEknFRxiBdYgqTzCKn7cL2gPg7ZfvAOwQEqvF85UiBCW5kJXeC1x7gLWMI4q8zqp6XICsWDVews3QRcsZA42BbpFYHxtPosRsLW22qId1IF3jEWxHI36GC4Tr5sRBDTxbACj0DZHXLsFnJE%2B4G6db0lXm6LBAL%2F6fVQZkNedgfSWGx0pq3IsifbvD3aZ9VrUmyGGXI96blm7uBnqiAPKPxyxHVm5qou042s4NssTR7WjyT3KtCdPec%2BKP7z5uuZFWXXuXCvvDn6SqNI7SPvdAyoVDErSvtDr%2B5dhFNw%3D%3D%20agentid%3DcorpWebgates%20ver%3D1%20crmethod%3D2

 

login.oracle.com:443

 

오라클 인스턴스가 떠있는 상태에서 해당 쉘을 실행하자.

나의 경우엔 706 개 hugepage 가 적절하다고 알려준다. 

나의 테스트 환경은 메모리가 넉넉하지 않아 instance 가 떠있는 상태에선 적절한 숫자의 hugepage 를 만들지 못한다.

이때는 instance 를 내리고 다시 명령어를 적용한다. 

cat /proc/meminfo | grep Huge

sysctl -w vm.nr_hugepages=706

# 서버재기동시에도 적용위해
vi /etc/sysctl.conf
vm.nr_hugepages=706

hugepage 를 사용하여 SGA 가 기동되었다.

 

3. SGA 에서 hugepage 파라미터 설정

 

alter system set use_large_pages={ TRUE | FALSE | AUTO | ONLY | AUTO_ONLY } scope=spfile;

* USE_LARGE_PAGES 파라미터 값

 - TRUE : hugepage 를 사용하지만 부족하면 일반 4k page 를 사용. 

 - FALSE : hugepage 를 사용하지 않고 일반 page 사용

 - ONLY : hugepage 만으로 SGA 를 사용. free hugepage 가 부족시 instance 시작시 에러 발생

# USE_LARGE_PAGES 가 리눅스에만 해당하는 파라미터지만  FALSE 로 적용시 성능저하 가능성 있음.

 AMM 을 쓰는 경우의 USE_LARGE_PAGES 를 FALSE 로 적용하는 것은 해당하지 않음.

 

#  호환성

1) incompatible

- AMM 을 사용할 경우에는 사용 불가 

2) compatible

-  AUTO PGA MANAGEMENT 

WORKAREA_SIZE_POLICY = AUTO
PGA_AGGREGATE_TARGET = XXX

- Automatic Shared Memory Management

ALTER SYSTEM SET memory_target=0 SCOPE=BOTH;
ALTER SYSTEM SET SGA_TARGET=500M SCOPE=BOTH;

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle audit 파일 삭제  (0) 2023.05.29
대용량 컬럼 drop 하기 # set unused  (0) 2023.05.04
RMAN CATALOG DB 쓰는 이유  (0) 2023.02.28
오라클 메모리 구조 Memory Architecture  (0) 2023.01.24
뷰 dba_free_space 느릴때  (0) 2023.01.24
Posted by 돌고래트레이너
생계/Oracle2023. 2. 28. 14:24

오라클은 8i 에서부터 백업을 위해 rman 이라는 것을 처음 소개했다. 
백업과 복구가 보다 쉬워진다는 것이 오라클이 내세운 명분이다.
하지만 새로운 것을 다시 배워야 하기에 한동안 DBA 들에겐 외면받아왔다. 
그렇지만 본격적으로 오라클이 ASM 이라는 개념을 들고왔다.
그리고 이것은 rman 을 통해서만 백업이 가능해서 이제 DBA 들은 RMAN 을 반드시 익혀야 하는 현실이다. 

각설하고..

Recovery catalog DB 란

한마디로 rman 이 사용할 metadata 들을 저장한 db스키마 라고 생각하면된다. 
RMAN 을 사용하려면 백업과 복구를 위한 정보들을 저장할 공간이 필요하다.
별도로 CATALOG DB 를 설치하지 않아도 rman 사용에는 지장이 없다.
이 경우 controlfile 에 해당 정보들이 저장된다. 


Recovery catalog 가 담는 metadata types 은 어떤 것들인가

 1) datafile, archived redo log backup sets & backup pieces
 2) datafile copies
 3) archived redo logs and their copies
 4) db structure (tbs, datafiles)
 5) stored scripts
 6) rman config


Recovery catalog DB 사용의 이점

안써도 사용가능하지만 굳이 catalog db 를 사용해서 얻는 이점은 아래와 같다.
1) redundancy of controlfile
 =>  catalog db 를 쓴다고 controlfile 에 metadata 를 저장하지 않는 것은 아니다. 정보의 중복 저장이다. 
  이것이 이점이 될수 있을까 싶지만, 원본db 의 controlfile 이 삭제되었을때도 카탈로그에는 남아있는 장점이 있다.
  
** backup, restore, and crosscheck 같은 operation 발생시 metadata 가 변경이 된다. 
이때 순서는 언제나 target db controlfile 우선 update, 카탈로그db 는 후에 sync 된다. 

2) 모든 타겟 DB metadata 중앙관리화 
 => 여러 서버를 가진 경우 한곳에서 metadata 정보 관리하기 편함. 

3) longer metadata history
 => controlfile 에 저장할때 보다 더 긴 기간 정보 저장이 가능. 

4) stored script 사용
 => catalog 에서만 가능한 것. 한번 스크립트를 생성해서 재사용 가능. 아래에서 확인해보자


 * 아카이브로그를 지우는 script 를 생성해보자. 

CREATE SCRIPT DEL_ARCH
{
 crosscheck archivelog all;
 delete noprompt expired archivelog all;
 delete noprompt archivelog all completed before 'sysdate -1';
}

* 이번에는 global keyword 로 생성해보자. 

CREATE GLOBAL SCRIPT GLB_DEL_ARCH
COMMENT 'use when deleting arc log..'
{
crosscheck archivelog all;
  delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate -1';
}
* 아래 구문으로 실행해보자. 
RUN
{
EXECUTE SCRIPT GLB_DEL_ARCH;
}

카탈로그 디비에 해당 스크립트가 저장이 되고 이는 아래 뷰에서 확인이 가능하다. 
SELECT *
  FROM RC_STORED_SCRIPT
;
 

반응형
Posted by 돌고래트레이너
생계/Oracle2023. 1. 24. 23:54

오라클 인스턴스가 시작되면 초기화 파라미터에 명시한대로 메모리영역을 할당하고 백그라운드 프로세스를 시작한다. 

메모리영역에 저장되는 정보는 다음과 같다. 

- 프로그램코드
- DB에 연결된 세션 정보 (inactive 포함)
- 프로그램 실행 중에 필요한 정보(예: 결과 rows 을 가져오는 쿼리의 현재 상태)
- 프로세스 간에 공유되는 lock 정보 
- 캐싱된 data (data blocks, redo record)

 


1. 오라클 메모리 구조

 1) SGA (System Global Area)


- Shared pool : SQL statements, data dictionary, Stored procedures 등을 캐싱하여 공유

- DB buffer cache : data block 을 disk I/O 를 통해 캐싱하여 공유. 
- Redo log buffer : redo log file 을 캐싱하여 성능 향상 
- Large pool : 아래 case 에서 shared pool 을 사용할수 있는데 large pool 을 사용하는 것을 고려해볼수 있다.
    shared server (session memory)
    Parallel query (message buffers)  
    Recovery Manager(I/O buffers )


- Java pool



 2) PGA (Program Global Area)


 : Server process 가 사용하는 메모리 영역 ( oracle 에서는 작업대 정도로 비유함)
  각 server process 간에 각자의 PGA 를 사용하고 서로 공유되지 않음.
  세션 A 가 쿼리를 날렸을때 중간계산된 값이 다른 세션에 의해 사용이 되면 안될것이다. 
 

 

 

 각 서버프로세스는 각자의 PGA 를 할당받는다고 했는데, 시스템 전체의 PGA를 total instance PGA 혹은 Instance PGA 라고 부름.

SGA 는 시스템 전체에서 하나이기에 (single node 기준)  sga_max_size, sga_target 을 설정하지만 
PGA 는 서버프로세스별 할당하므로 연관된 초기화 파라미터에 전체를 의미하는 aggregate 가 붙는다.(pga_aggregate_limit,pga_aggregate_target) 

PGA 는 전체의 크기만 설정 가능하고 개별 세션의 PGA 를 조정하려면 아래와 같이 해야함.

alter session set workarea_size_policy = manual;
alter session set sort_area_size = 1024000; 

하지만 오라클에서는 memory 관리를 수동으로 조정하는 것을 권장하지 않고 있다. 

3) UGA (User Global Area) 
  The UGA is memory associated with a user session.
  
 4) Software code areas

 

참조문서 https://docs.oracle.com/database/121/CNCPT/memory.htm#CNCPT007

반응형

'생계 > Oracle' 카테고리의 다른 글

리눅스 오라클 hugepage 설정  (0) 2023.05.03
RMAN CATALOG DB 쓰는 이유  (0) 2023.02.28
뷰 dba_free_space 느릴때  (0) 2023.01.24
[VM] oracle virtual box DB 연결 DBeaver 설치  (0) 2023.01.21
[ASM] 19c database 설치  (0) 2023.01.15
Posted by 돌고래트레이너
생계/Oracle2023. 1. 24. 22:45

테이블스페이스 사용량 확인할때 보통 dba_data_files 와 dba_free_space 뷰를 조인하는데

특정 디비에서 쿼리 수행시간이 매우 오래 걸리는 현상 확인. 

dba_data_files 만 조회했을때는 이상이 없으나 dba_free_space 가 원인임을 파악.

MOS(Doc ID 271169.1) 를 확인해보면 10g 부터 나온 기능인 recycle bin 에서 표시되는 object 까지 dba_free_space 가 포함하는 것으로 변경이 됨.

sys 로 로긴후 아래 실행

SELECT substr(DROPTIME,1,10), count(*)
  FROM dba_recyclebin
GROUP BY substr(DROPTIME,1,10)

purge dba_recyclebin;

 

반응형
Posted by 돌고래트레이너
생계/Oracle2023. 1. 21. 00:27

앞선 포스팅에서 single node ASM 기반 database 를 설치하였다. 

터미널로 붙어서 sqlplus 로 접속할수도 있지만 불편하다. 

local 환경에서 client tool 을 설치하고 VM 의 oracle 에 접속하자. 

 

1. DBeaver 설치 


client tool 은 DBeaver 를 설치해보자. 무료이기도 하고 많이들 사용하고 있다. 

아래 링크에서 설치파일을 다운받자. 

https://dbeaver.io/download/

 

Download | DBeaver Community

Download Tested and verified for MS Windows, Linux and Mac OS X. Install: Windows installer – run installer executable. It will automatically upgrade version (if needed). MacOS DMG – just run it and drag-n-drop DBeaver into Applications. Debian package

dbeaver.io

 

개인의 로컬환경에 맞는 버전을 선택하자. 나는 윈도 환경이다. 

설치는 별거 없고 다운받은 .exe 파일을 실행만 하면 된다.

  

2. VM Port Forwarding


우리는 VM 에 있는 oracle 을 사용하기에 VM 에서 한가지더 해줘야 할게 있다. 

앞에서도 ssh 접속을 위해 추가한 포트포워딩 룰 이 있다. 

여기에 1521 포트도 똑같이 추가하자. 

 

- port, 방화벽 확인 

 터미널로 접속해서 oracle 포트가 열려있는지 확인한다. 

1521 port 가 잘 listen 하고 있다. 

방화벽이 동작하고 있다면 아래 명령으로 방화벽도 내려놓자.

systemctl stop firewalld

 

3. DBeaver Connection 설정 


다시 dbeaver 로 돌아와서 커넥션 정보를 추가하자. 

 

아래 빨간 박스 안의 내용을 확인하고 하단의 Test connection 클릭.

 

접속 잘된다.

이상 끗

도움 되었으면 따봉 눌러주기!

반응형
Posted by 돌고래트레이너
생계/Oracle2023. 1. 15. 21:36

앞선 포스팅에서 single server 에서 asm 을 사용하기 위한 grid 설치를 알아보았다. 

19c grid 설치 Standalone server (Oracle Restart)

이제 FILESYSTEM 이 아닌 ASM diskgroup 에 데이터베이스를 생성해보자. 

oracle 19c database 설치파일은 아래링크에서 다운받을수 있다. 

https://www.oracle.com/kr/database/technologies/oracle-database-software-downloads.html

oracle 계정의 .bash_profile 은 위의 글을 참조하자.

본격적으로 설치 시작 

db_env => 

=================================================
mkdir -p $ORACLE_HOME
mv LINUX.X64_193000_db_home.zip $ORACLE_HOME
cd $ORACLE_HOME
unzip LINUX.X64_193000_db_home.zip 

./runInstaller

엔진설치, DB생성을 모두 하자. 

 

 

설치파일이 있는 디렉토리와 oracle base 디렉토리가 자동으로 잡힌다. 

 

 

 container 설치는 목적이 아니니까 체크해제 한다.

 

ASM 을 선택하자 

 recovery 영역도 ASM 을 선택하자  

데이터베이스는 앞서 생성한 DATA 디스크그룹에 생성한다. 

 귀찮으니까 같은 패스워드로

 

설치중 root 로 진행하는 부분을 자동으로 설정 

설치가 완료되면 sqlplus 로 DB에 접속해보자. 

grid 환경으로 바꾸고(grid_env) crsctl stat res -t 명령어를 치면 database 가 online 으로 표시 되면 끝

반응형
Posted by 돌고래트레이너
생계/Oracle2023. 1. 11. 21:30

이전 포스팅에서 virtual box 에  오라클리눅스 설치를 완료했다. 

[virtualbox] 오라클리눅스 설치 oracle-linux 8.4

ASM 은 RAC 에서는 필수이지만 single node DB 에서는 파일시스템에 설치할수도 있다. 

싱글노드에서 ASM 을 설치하려면 grid 를 먼저 설치해야한다. 

 

오라클에서 제공하는 설치관련 가이드 문서는 아래 링크에서 확인가능하다. 

https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/index.html

 

Grid Infrastructure Installation and Upgrade Guide

 

docs.oracle.com

 

 1-1) hostname 변경 


 @root 
hostname
hostnamectl set-hostname asmtest

vi /etc/hosts
10.0.2.15   asmtest

 1-2) SELINUX 

 


vi /etc/selinux/config
SELINUX=disabled
( 중간의 SELINUX=enforcing 를 변경해준다) 
 - 방화벽
systemctl stop firewalld


reboot


 1-3)설치준비 



  - YUM, RPM
 @root 
  
 yum install -y oracle-database-preinstall-19c
 cd /home/oracle

** 아래 파일들은 미리 준비가 필요하다. 
 rpm -ivh oracleasm-support-2.1.12-1.el8.x86_64.rpm
 rpm -ivh oracleasmlib-2.0.17-1.el8.x86_64.rpm

 - OS USER

groupadd asmadmin
groupadd asmdba
groupadd asmoper
usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba,asmoper oracle


 - DIRECTORY

mkdir -p /app/grid 
 
chown -R oracle:oinstall /app
chmod -R 775 /app

@oracle

   mv LINUX.X64_193000_grid_home.zip   /app/grid

cd /app/grid 
unzip LINUX.X64_193000_grid_home.zip 
 

 - PROFILE 

root, oracle 계정의 .bash_profile  

편의상 grid 계정 분리하지 않고 oracle 한 계정으로 간다.  

alias 부분은 각자 취향에 맞게 편집하자

===== oracle bash profile =====
export TMP=/tmp
export TMPDIR=$TMP
 
export ORACLE_HOSTNAME=asmtest
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1
export GRID_HOME=/app/grid
export ORA_INVENTORY=/oraInventory
export ORACLE_SID=orcl
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CV_ASSUME_DISTID=RHEL7.6 
 
export LANG=C
export LC_ALL=C

alias grid_env='export ORACLE_HOME=$GRID_HOME;export ORACLE_SID=+ASM;export PATH=$GRID_HOME/bin:$PATH'
alias db_env='export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1;export ORACLE_SID=orcl'
alias ss='sqlplus / as sysdba'
alias oh='cd $ORACLE_HOME'
alias gh='cd $GRID_HOME'
===== oracle bash profile =====

===== root bash profile =====

export ORACLE_BASE=/app/oracle
export GRID_HOME=/app/grid
export ORACLE_HOME=$ORACLE_BASE/product/19c/db_1
export PATH=$PATH:$GRID_HOME/bin

===== root bash profile =====

 
 - ASM CONFIG
 
[root@asmtest oracle]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
[root@asmtest oracle]#  

[root@asmtest oracle]# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm
[root@asmtest oracle]#  oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
[root@asmtest oracle]#  oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=oracle
ORACLEASM_GID=asmadmin
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
[root@asmtest oracle]#
 
 
 
 - FDISK 

디스크 추가 전

[root@asmtest dev]# ls  /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2


ASM 에서 사용할 디스크그룹을 아래와 같이 추가하자

 - crs1,2,3 : asm 파일용, 대충 각 1G
 - data : database 용, 최소 20G
 - reco : recovery 영역, 대충 5G
  

VM관리자에서 설정 클릭

 

 

 

 

* 디스크는 online 상에선 추가가 안되고 vm 이 down 된 상태에서 가능하다. 처음부터 준비하면 좋다.

 

  fdisk /dev/sdb
  n(new) -> p(primary) -> 1 -> Enter(default) -> Enter(default) -> w(write)
  fdisk /dev/sdc
  fdisk /dev/sdd
  fdisk /dev/sde
  fdisk /dev/sdf
  

디스크 5개를 추가했으니 5개 반복해준다. 

다했으면 추가된 디스크로 asmdisk 를 만들자.
 
oracleasm createdisk CRS1 /dev/sdb1
oracleasm createdisk CRS2 /dev/sdc1
oracleasm createdisk CRS3 /dev/sdd1
oracleasm createdisk DATA /dev/sde1
oracleasm createdisk RECO /dev/sdf1
 
oracleasm scandisks
oracleasm listdisks
  
  
 - tmpfs


 vi /etc/fstab  => 아래 한줄 추가 
 tmpfs                   /dev/shm                tmpfs   size=8g         0 0

df -h
mount -o remount /dev/shm
df -h

cd /app/grid/cv/rpm/
rpm -ivh cvuqdisk-1.0.10-1.rpm


 2) grid설치


grid_env => grid 환경으로 변경 alias (path, oracle_sid)

cd /app/grid
./gridSetup.sh 

oracle restart 선택 

change discovery path 클릭, asm disk 가 있는 경로를 써준다. 

 

 

 

설치 도중 root 권한으로 진행이 필요한 부분을 자동으로 실행하기 위해 auto 선택

 설치가 원활하려면 최소 메모리 8G 를 되야 한다. 아무리 작아도 4G 보다는 커야 하고 사전체크에서 걸리면 ignore

 

- DATA, RECO diskgroup 추가 

 CRS 디스크그룹만 생성하고 grid 설치가 끝났다. 추가로 DATA, RECO 디스크 그룹을 만들자.

 

[oracle@oraasm grid]$ asmca

 

하단의 create..  클릭

디스크그룹 이름을 DATA 로 하고 disk 선택  하고 하단의 Ok.

 동일하게 RECO 를 생성하자. 

생성이 끝나고 아래 명령어로 확인 

crsctl stat res -t 

 

 디스크그룹이 잘 생성이 되었다. 

 이제 여기에 데이터베이스를 생성이 가능한데, 그것은 다음글에서 알아보자. 

  [ASM] 19c database 설치

반응형
Posted by 돌고래트레이너