프린트 하기

OS 환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : Oracle Database 19.24.0.0

 

방법 : 오라클 19c tar 명령을 이용해 db 엔진 복제

본문에서는 19c가 설치된 A서버에서 C서버로 tar 압축을 이용해 엔진을 복제하는 방법을 설명함

 

 

tar 방식과 골드 이미지 차이점
tar -cvf :
현재 Oracle 홈의 전체 상태를 그대로 복제하는 방식으로, 모든 파일을 포함하며(network/admin/*.ora 파일 및 dbs/*.ora 파일 등)
, 특정 환경에서의 커스텀 설정이나 로그 파일 등을 포함한 "완전한 복제"를 원할 때 유용함

 

골드 이미지(runInstaller -createGoldImage) :
클린한 Oracle 설치의 골드 이미지를 생성하는 방식으로, 여러 서버에 표준화된 설치 이미지를 배포할 때 적합함
관리 및 배포가 용이하지만, 커스텀 설정(network/admin/*.ora 파일 및 dbs/*.ora 파일 등)이나 로그 파일 등이 포함되지 않으므로 이러한 부분은 별도로 관리해야함

 

 

참고용
오라클 19c 골드 이미지 이용해 db 엔진 복제 ( https://positivemh.tistory.com/1149 )
오라클 19c tar 명령을 이용해 db 엔진 복제 (runInstaller 미실행) ( https://positivemh.tistory.com/1151 )

 

 

사용법
기존 db 패치 사항 확인

1
2
$ cd $ORACLE_HOME/OPatch
$ ./opatch lsinventory

 

 

모든 오라클 관련 프로세스 정지

1
2
SQL> shutdown immediate
$ lsnrctl stop

 

 

tar 실행

1
2
3
4
5
$ cd $ORACLE_HOME
$ cd ..
$ pwd
/app/oracle/product
$ tar -cvf 19c.tar 19c/

 

 

tar 명령 수행 완료 후 확인

1
2
3
4
$ ls -lh
total 10G
drwxrwxr-x. 72 oracle dba      4.0K Aug 16 00:16 19c
-rw-r--r--.  1 oracle oinstall  10G Aug 21 22:17 19c.tar

tar 명령이 정상적으로 실행됨

 

 

tar 압축된 파일을 C서버로 전송

1
2
3
$ scp 19c.tar 192.168.137.51:/home/oracle/
oracle@192.168.137.51's password:
19c.tar

 

 

C 서버에서 파일 확인

1
2
3
4
5
$ ls -al /home/oracle/19c.tar
total 10470012
drwxrwxr-x. 2 oracle dba               21 Aug 21 23:59 .
drwxrwxr-x. 4 oracle dba               33 Aug 21 23:56 ..
-rw-r--r--. 1 oracle oinstall 10721290240 Aug 22 00:01 19c.tar

정상적으로 받아짐

 

 

C 서버에서 오라클 환경 설정
아래 게시글 참고
Oracle Linux 8.4에 Oracle 19c 설치 가이드 ( https://positivemh.tistory.com/1144 )
hostname을 copy2로 설정하였음

 

 

그리고 설치 경로 생성 부분에서 mkdir -p /app/oracle/product/19c를 mkdir -p /app/oracle/product/ 까지만 생성함

1
2
3
4
5
# mkdir -p /app/oracle/product
# mkdir -p /app/media
# chown -R oracle:dba /app
# chmod -R 775 /app
# mv /home/oracle/19c.tar /app/media/

 

 

.bash_profile 의 ORACLE_HOME도 /app/oracle/product/19c에서 /app/oracle/product/19c_2 로 수정

1
2
3
4
5
$ vi .bash_profile
(생략)
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c_2
(생략)

 

 

$ORACLE_HOME 의 상위 경로로 이동 후 tar 해제

1
2
$ cd /app/oracle/product
$ tar -xvf /app/media/19c.tar

 

 

압축시 19c 폴더 자체를 압축 했기때문에 19c_2로 변경

1
$ mv 19c/ 19c_2/

 

 

tar 해제 후 network/admin/, dbs 경로 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ ls -al $ORACLE_HOME/network/admin
total 12
drwxr-xr-x.  3 oracle oinstall   79 Aug 21 01:39 .
drwxr-xr-x. 10 oracle oinstall  106 Apr 17  2019 ..
-rw-r-----.  1 oracle oinstall  317 Aug 21 01:39 listener.ora
drwxr-xr-x.  2 oracle oinstall   64 Apr 17  2019 samples
-rw-r--r--.  1 oracle oinstall 1536 Feb 14  2018 shrept.lst
-rw-r-----.  1 oracle oinstall  396 Aug 21 01:39 tnsnames.ora
$ ls -al $ORACLE_HOME/dbs
total 24
drwxr-xr-x.  2 oracle oinstall  110 Aug 21 21:22 .
drwxr-xr-x. 72 oracle oinstall 4096 Aug 16 00:16 ..
-rw-r-----.  1 oracle oinstall 1544 Aug 21 21:22 hc_oracle19.dat
-rw-r--r--.  1 oracle oinstall 3079 May 14  2015 init.ora
-rw-r-----.  1 oracle oinstall   24 Aug 15 08:06 lkORACLE19
-rw-r-----.  1 oracle oinstall 2048 Aug 15 08:41 orapworacle19
-rw-r-----.  1 oracle oinstall 3584 Aug 21 20:29 spfileoracle19.ora

기존 db엔진을 tar로 묶어서 가져왔기 때문에 기존 db의 설정 파일들이 존재함

 

 

db 엔진 설치

1
2
$ export CV_ASSUME_DISTID=OEL7.6
$ ./runInstaller

Oracle Linux 8.4에 Oracle 19c 설치 가이드 ( https://positivemh.tistory.com/1144 )
게시글처럼 동일하게 진행

 

 

리스너 설정
이미 리스너 파일이 있기때문에 수정만 해주면됨(HOST 변경)

1
2
3
4
5
6
7
8
9
10
11
$ vi $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File: /app/oracle/product/19c/network/admin/listener.ora
# Generated by Oracle configuration tools.
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = copy2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

 

 

tnsnames.ora 백업

1
2
$ cd $ORACLE_HOME/network/admin/
$ mv tnsnames.ora tnsnames.orabak

 

 

리스너 기동

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ lsnrctl start
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-AUG-2024 00:26:07
 
Copyright (c) 1991, 2024, Oracle.  All rights reserved.
 
Starting /app/oracle/product/19c_2/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /app/oracle/product/19c_2/network/admin/listener.ora
Log messages written to /app/oracle/diag/tnslsnr/copy2/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=copy2)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=copy2)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                22-AUG-2024 00:26:07
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /app/oracle/product/19c_2/network/admin/listener.ora
Listener Log File         /app/oracle/diag/tnslsnr/copy2/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=copy2)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

 

 

db 생성

1
$ dbca

Oracle Linux 8.4에 Oracle 19c 설치 가이드 ( https://positivemh.tistory.com/1144 )
게시글처럼 동일하게 진행

 

 

db 패치 적용

1
2
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose

 

 

패치 내역 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SQL>
set linesize 400
column action_time format a20
column action format a10
column status format a10
column description format a60
column version format a10
select to_char(action_time, 'yyyymmdd hh24:mi:ss') as action_time
,action
,status
,description
,source_version
,target_version
,patch_id
from dba_registry_sqlpatch
order by action_time
/
 
ACTION_TIME          ACTION     STATUS     DESCRIPTION                                                  SOURCE_VERSION  TARGET_VERSION    PATCH_ID
-------------------- ---------- ---------- ------------------------------------------------------------ --------------- --------------- ----------
20240822 01:10:14    APPLY      SUCCESS    Database Release Update : 19.24.0.0.240716 (36582781)        19.1.0.0.0      19.24.0.0.0       36582781

정상적으로 패치까지 적용됨

 

 

참고로 기존 데이터파일들을 가지고 있는채로 엔진만 tar로 말아서 가지고 온 경우
oraInventory 가 없기 때문에 이걸 새로 등록해줘야함
참고 : 오라클 19c db oraInventory 재설정 ( https://positivemh.tistory.com/803 )

 

 

아래와 같이 패치 확인시 에러 발생함

1
2
3
4
5
6
7
8
9
$ cd OPatch
$ ./opatch lspatches
Inventory load failed... LsPatchesSession::loadAndPrintInstalledPatch()
LsPatchesSession failed: OPatch failed to locate Central Inventory.
Possible causes are:
    The Central Inventory is corrupted
    The oraInst.loc file specified is not valid.
 
OPatch failed with error code 2

 

 

인벤토리 확인시에도 에러 발생함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ opatch lsinventory
Oracle Interim Patch Installer version 12.2.0.1.43
Copyright (c) 2024, Oracle Corporation.  All rights reserved.
 
 
Oracle Home       : /app/oracle/product/19c_1
Central Inventory : /app/oraInventory
   from           : /app/oracle/product/19c_1/oraInst.loc
OPatch version    : 12.2.0.1.43
OUI version       : 12.2.0.7.0
Log file location : /app/oracle/product/19c_1/cfgtoollogs/opatch/opatch2024-08-21_23-39-42PM_1.log
 
LsInventorySession failed: OPatch failed to locate Central Inventory.
Possible causes are:
    The Central Inventory is corrupted
    The oraInst.loc file specified is not valid.
 
OPatch failed with error code 73

 

 

새로운 ORACLE HOME 에 대해 oraInventory 재등록

1
2
3
4
5
6
7
8
9
$ cd $ORACLE_HOME/oui/bin
$ ./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME=$ORACLE_HOME ORACLE_HOME_NAME="OraDB19Home1"
Starting Oracle Universal Installer...
 
Checking swap space: must be greater than 500 MB.   Actual 8050 MB    Passed
The inventory pointer is located at /etc/oraInst.loc
You can find the log of this install session at:
 /app/oraInventory/logs/AttachHome2024-08-21_11-22-26PM.log
'AttachHome' was successful.

 

 

패치 재확인

1
2
3
4
5
6
$ cd $ORACLE_HOME/OPatch
$ ./opatch lspatches
36582781;Database Release Update : 19.24.0.0.240716 (36582781)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
 
OPatch succeeded.

정상적으로 불러와짐

 

 

인벤토리 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$ opatch lsinventory
Oracle Interim Patch Installer version 12.2.0.1.43
Copyright (c) 2024, Oracle Corporation.  All rights reserved.
 
 
Oracle Home       : /app/oracle/product/19c_1
Central Inventory : /app/oraInventory
   from           : /app/oracle/product/19c_1/oraInst.loc
OPatch version    : 12.2.0.1.43
OUI version       : 12.2.0.7.0
Log file location : /app/oracle/product/19c_1/cfgtoollogs/opatch/opatch2024-08-21_23-38-37PM_1.log
 
Lsinventory Output file location : /app/oracle/product/19c_1/cfgtoollogs/opatch/lsinv/lsinventory2024-08-21_23-38-37PM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: copy1
ARU platform id: 226
ARU platform description:: Linux x86-64
 
Installed Top-level Products (1):
 
Oracle Database 19c                                                  19.0.0.0.0
There are 1 products installed in this Oracle Home.
 
 
Interim patches (2) :
 
Patch  36582781     : applied on Fri Aug 16 00:13:42 KST 2024
Unique Patch ID:  25751445
Patch description:  "Database Release Update : 19.24.0.0.240716 (36582781)"
   Created on 13 Jul 2024, 14:01:16 hrs UTC
   Bugs fixed:
     10121473, 10123661, 1297945, 14570574, 14735102, 15931756, 15959416
..

정상적으로 불러와짐

 

 

참조 : 

Gold Image How To (Doc ID 2965269.1)
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/cloning-an-oracle-home.html#GUID-494E59C3-C381-4A35-8ABE-F6E5DBF29032
https://positivemh.tistory.com/669
https://positivemh.tistory.com/803
https://positivemh.tistory.com/1144
https://positivemh.tistory.com/1145
https://positivemh.tistory.com/1150
https://positivemh.tistory.com/1151