프린트 하기

내맘대로긍정이 알려주는

Oracle 23ai 신기능
무료 세미나 발표자료

다운로드 trending_flat
2024
10.12
14:00

OS 환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : Oracle Database 19.24.0.0

 

방법 : 오라클 19c tar 명령을 이용해 db 엔진 복제(runInstaller 미실행)

본문에서는 19c가 설치된 A서버에서 D서버로 tar 압축을 이용해 엔진을 복제하는 방법을 설명함
그리고 tar 압축 해제 후 ./runInstaller 를 따로 실행하지 않고 바로 사용해봄

 

 

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.52:/home/oracle/
oracle@192.168.137.52'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을 copy3으로 설정하였음

 

 

그리고 설치 경로 생성 부분에서 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_3 로 수정

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

 

 

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

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

 

 

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

1
$ mv 19c/ 19c_3/

 

 

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 엔진 설치(runInstaller)를 따로 실행하지 않음

 

 

리스너 설정
이미 리스너 파일이 있기때문에 수정만 해주면됨(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 = copy3)(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 01:01:54
 
Copyright (c) 1991, 2024, Oracle.  All rights reserved.
 
Starting /app/oracle/product/19c_3/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /app/oracle/product/19c_3/network/admin/listener.ora
Log messages written to /app/oracle/diag/tnslsnr/copy3/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=copy3)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=copy3)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                22-AUG-2024 01:01:54
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_3/network/admin/listener.ora
Listener Log File         /app/oracle/diag/tnslsnr/copy3/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=copy3)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

 

 

db 생성

1
2
$ dbca
/app/oracle/product/19c_3/bin/dbca: line 135: /app/oracle/product/19c/bin/platform_common: No such file or directory

dbca시 에러가 발생함

 

 

아래 링크에 방법이 나와있음
참고 : 오라클 19c 홈경로(엔진경로) 변경 방법 ( https://positivemh.tistory.com/574 )

 

 

리스너 중지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ lsnrctl stoip
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-AUG-2024 01:07:00
 
Copyright (c) 1991, 2024, Oracle.  All rights reserved.
 
NL-00853: undefined command "stoip".  Try "help"
[oracle@copy3 admin]$ lsnrctl stop
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-AUG-2024 01:07:02
 
Copyright (c) 1991, 2024, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=copy3)(PORT=1521)))
The command completed successfully

 

 

oraInventory 경로 파일 확인

1
2
$ cat /app/oraInventory/ContentsXML/inventory.xml
cat: /app/oraInventory/ContentsXML/inventory.xml: No such file or directory

엔진만 tar로 가져왔기 때문에 oraInventory 폴더가 존재하지 않음

 

 

inventory 가 없기 때문에 먼저 현재 ORACLE_HOME을 inventory 에 등록해줘야함
참고 : 오라클 19c db oraInventory 재설정 ( https://positivemh.tistory.com/803 )

 

 

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

1
2
3
4
5
6
7
8
9
10
$ 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 8174 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-22_01-10-20AM.log
Please execute the '/app/oraInventory/orainstRoot.sh' script at the end of the session.
'AttachHome' was successful.

 

 

oraInventory 경로 파일 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cat /app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2024, Oracle and/or its affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<INVENTORY>
<VERSION_INFO>
   <SAVED_WITH>12.2.0.7.0</SAVED_WITH>
   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDB19Home1" LOC="/app/oracle/product/19c_3" TYPE="O" IDX="1"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>

정상적으로 변경된 엔진 경로(19c_3)가 나옴

 

 

여기서 바로 dbca 를 시도했지만 동일한 에러가 발생해서 아래 내용까지 진행함

1
2
$ dbca
/app/oracle/product/19c_3/bin/dbca: line 135: /app/oracle/product/19c/bin/platform_common: No such file or directory

 

 

엔진 경로 변경하는 clone.pl 실행(single 노드용)

ORACLE_BASE 경로 및 ORACLE_HOME 경로 확인 후 perl clone.pl 구문 실행

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
$ echo $ORACLE_BASE
/app/oracle
$ echo $ORACLE_HOME
/app/oracle/product/19c_3
$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/clone/bin/clone.pl ORACLE_BASE=$ORACLE_BASE ORACLE_HOME=$ORACLE_HOME OSDBA_GROUP=dba -defaultHomeName
 
 
[INFO] [INS-32183] Use of clone.pl is deprecated in this release. Clone operation is equivalent to performing a Software Only installation from the image.
You must use /app/oracle/product/19c_3/runInstaller script available to perform the Software Only install. For more details on image based installation, refer to help documentation.
 
Starting Oracle Universal Installer...


..................................................   5% Done.
..................................................   10% Done.
..................................................   15% Done.
..................................................   20% Done.
..................................................   25% Done.
..................................................   30% Done.
..................................................   35% Done.
..................................................   40% Done.
..................................................   45% Done.
..................................................   50% Done.
..................................................   55% Done.
..................................................   60% Done.
..................................................   65% Done.
..................................................   70% Done.
..................................................   75% Done.
..................................................   80% Done.
..................................................   85% Done.
..........
Copy files in progress.
 
Copy files successful.
 
Link binaries in progress.
..........
Link binaries successful.
 
Setup files in progress.
..........
Setup files successful.
 
Setup Inventory in progress.
 
Setup Inventory successful.
..........
Finish Setup successful.
The cloning of OraHome1 was successful.
Please check '/home/oracle/oraInventory/logs/cloneActions2024-08-22_01-30-49AM.log' for more details.
 
Setup Oracle Base in progress.
 
Setup Oracle Base successful.
..................................................   95% Done.
 
As a root user, execute the following script(s):
        1. /home/oracle/oraInventory/orainstRoot.sh
        2. /app/oracle/product/19c_3/root.sh
 
 
 
..................................................   100% Done.

 

 

제일 아래 나오는 root.sh 쉘 root 계정으로 실행

1
2
3
4
5
6
7
8
9
10
/home/oracle/oraInventory/orainstRoot.sh
Changing permissions of /home/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
 
Changing groupname of /home/oracle/oraInventory to oinstall.
The execution of the script is complete.
 
/app/oracle/product/19c_3/root.sh
Check /app/oracle/product/19c_3/install/root_copy3_2024-08-22_01-32-41-698561546.log for the output of root script

 

 

리스너 기동

1
$ lnsrctl start

 

 

dbca 재수행

1
$ dbca

(정상적으로 gui 가 나옴)
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:56:23    APPLY      SUCCESS    Database Release Update : 19.24.0.0.240716 (36582781)        19.1.0.0.0      19.24.0.0.0       36582781

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

 

 

참조 : 

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