프린트 하기

내맘대로긍정이 알려주는

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

다운로드 trending_flat

OS환경 : Oracle Linux 7.5 (64bit)


DB 환경 : Oracle Database 19.7.0.0


방법 : 오라클 설치 이후 uid, gid 변경 가이드 (재설치)

MOS에서는 공식적으로 

오라클을 설치 한 이후 Oracle Software 소유자의 UID / GID를 변경할 수 없다고 명시되어 있음

또한 권한은 설치시 설정된대로 유지되어야함

공식적으로 권장하는 변경 방법은 복제하는 방식과 재설치하는 방식이 존재함

재설치를 통해 uid, gid 변경 하는 방법을 설명함



현재 uid, gid 확인

1
2
3
4
$ cat /etc/passwd | grep oracle
oracle:x:54321:54322::/oracle:/bin/bash
$ cat /etc/group | grep dba
dba:x:54322:oracle

현재 oracle 유저의 uid는 54321, dba 그룹의 gid는 54322임

각각 10000, 10001로 변경 예정



일반 유저 생성

1
2
3
4
5
6
7
SQL> create user tuser identified by tuser account unlock default tablespace users quota unlimited on users;
 
User created. 
 
SQL> grant resource, connect, dba to tuser;
 
Grant succeeded.



정합성 확인용 샘플 데이터 생성

1
2
3
4
5
6
7
8
9
10
11
12
SQL> conn tuser/tuser
Connected.
 
SQL> create table table1 as select * from dba_objects;
 
Table created.
 
SQL> select count(*from table1;
 
  COUNT(*)
----------
     23863



db, 리스너 종료

1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
$ lsnrctl stop
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-DEC-2020 15:11:13
 
Copyright (c) 19912019, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle19)(PORT=1521)))
The command completed successfully1.dbf??



데이터 파일 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cd /app/oracle/oradata/ORCL19/
$ ls -al
total 6349288
drwxr-x--- 2 oracle dba       4096 Dec 11 14:43 .
drwxr-x--- 4 oracle dba         32 Dec 11 14:50 ..
-rw-r----- 1 oracle dba   10600448 Dec 11 14:51 control01.ctl
-rw-r----- 1 oracle dba   10600448 Dec 11 14:51 control02.ctl
-rw-r----- 1 oracle dba  104865792 Dec 10 01:06 newts01.dbf
-rw-r----- 1 oracle dba 1073742336 Dec  6 14:05 redo01.log
-rw-r----- 1 oracle dba 1073742336 Dec 10 01:00 redo02.log
-rw-r----- 1 oracle dba 1073742336 Dec 11 14:50 redo03.log
-rw-r----- 1 oracle dba 1132470272 Dec 11 14:50 sysaux01.dbf
-rw-r----- 1 oracle dba  734011392 Dec 11 14:47 system01.dbf
-rw-r----- 1 oracle dba   20979712 Dec 10 22:01 temp01.dbf
-rw-r----- 1 oracle dba 1073750016 Dec 11 14:50 undotbs01.dbf
-rw-r----- 1 oracle dba  200548352 Dec 11 14:47 users01.dbf



데이터 파일, 컨트롤, 리두 로그 콜드백업

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# mkdir -/backup/cold
# chown -R oracle:dba /backup
# su - oracle
/app/oracle/oradata/
$ cp -av ORCL19/* /backup/cold/
??ORCL19/control01.ctl?? -> ??/backup/cold/control01.ctl??
??ORCL19/control02.ctl?? -> ??/backup/cold/control02.ctl??
??ORCL19/newts01.dbf?? -> ??/backup/cold/newts01.dbf??
??ORCL19/redo01.log?? -> ??/backup/cold/redo01.log??
??ORCL19/redo02.log?? -> ??/backup/cold/redo02.log??
??ORCL19/redo03.log?? -> ??/backup/cold/redo03.log??
??ORCL19/sysaux01.dbf?? -> ??/backup/cold/sysaux01.dbf??
??ORCL19/system01.dbf?? -> ??/backup/cold/system01.dbf??
??ORCL19/temp01.dbf?? -> ??/backup/cold/temp01.dbf??
??ORCL19/undotbs01.dbf?? -> ??/backup/cold/undotbs01.dbf??
??ORCL19/users01.dbf?? -> ??/backup/cold/users01.dbf??



파라미터 파일 백업

1
$ cp initorcl19.ora /backup/



오라클 엔진 백업

1
2
3
4
$ cd $ORACLE_HOME
$ tar -cvf /backup/ora_home_20201211.tar *
$ ls /backup/ora_home_20201211.tar
ora_home_20201211.tar



오라클 엔진 삭제

1
2
$ cd $ORACLE_HOME/deinstall
$ ./deinstall



삭제 확인 

1
2
3
4
# ls -al /app/oracle/
total 0
drwxr-xr-x. 2 oracle dba   6 Dec 11 16:15 .
drwxr-xr-x. 4 oracle dba  33 Aug 12 19:37 ..

정상적으로 삭제됨



기타 오라클 파일 삭제

1
2
3
# rm -rf /etc/oraInst.loc /etc/oratab 
# rm -rf /opt/oracle/
# rm -rf /tmp/OraInstall*



gid, uid 변경 및 확인

1
2
3
4
5
6
7
# groupmod -10001 dba
# usermod -10000 oracle
 
# cat /etc/passwd | grep oracle
oracle:x:10000:10001::/oracle:/bin/bash
# cat /etc/group | grep dba
dba:x:10001:oracle



oracle 유저의 home 디렉토리, /app(오라클 엔진설치경로) 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
# ls -al /home/ /app/
/app/:
total 4
drwxr-xr-x.  4 54321 54322   33 Aug 12 19:37 .
dr-xr-xr-x. 20 root  root  4096 Dec 11 18:21 ..
drwxr-xr-x.  2 54321 54322    6 Sep 27 19:51 media
drwxr-xr-x.  2 54321 54322    6 Dec 11 16:15 oracle
 
/home/:
total 4
drwxr-xr-x.  4 root   root    33 Apr 10  2020 .
dr-xr-xr-x. 20 root   root  4096 Dec 11 18:21 ..
drwx------.  2 54321 54322     42 Nov 27 21:34 oracle

현재 oracle 유저의 uid, gid가 모두 변경되었기 때문에

oracle dba 가 아닌 54321 54322(uid, gid) 로 표시됨



해당 폴더에 권한 재부여 및 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# chown -R oracle:dba /app/
# chown -R oracle:dba /home/oracle/
# chown oracle:dba /home/oracle/.
 
# ls -al /home/ /app/
/app/:
total 4
drwxr-xr-x.  4 oracle dba    33 Aug 12 19:37 .
dr-xr-xr-x. 20 root   root 4096 Dec 11 18:21 ..
drwxr-xr-x.  2 oracle dba     6 Sep 27 19:51 media
drwxr-xr-x.  2 oracle dba     6 Dec 11 16:15 oracle
 
/home/:
total 4
drwxr-xr-x.  4 root   root    33 Apr 10  2020 .
dr-xr-xr-x. 20 root   root  4096 Dec 11 18:21 ..
drwx------.  2 oracle dba     42 Nov 27 21:34 oracle

정상적으로 oracle dba로 나옴



이제 오라클 재설치

1
2
$ cd $ORACLE_HOME
$ ./runInstaller 



Set Up Software Only 선택



Single instance 선택



Enterprise Edition 선택



Oracle base 지정



Ora Inventory 지정



그룹 지정



root 패스워드 입력



Swap 이슈는 Ignore



Yes 선택



설치



설치 완료



백업된 데이터파일 확인 후 권한 수정

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
# ls -al /backup/cold/
total 6352344
drwxr-xr-2 54321 54322       4096 Dec 11 14:59 .
drwxr-xr-3 54321 54322         18 Dec 11 15:28 ..
-rw-r----- 1 54321 54322   10600448 Dec 11 14:54 control01.ctl
-rw-r----- 1 54321 54322   10600448 Dec 11 14:54 control02.ctl
-rw-r----- 1 54321 54322  104865792 Dec 11 14:54 newts01.dbf
-rw-r----- 1 54321 54322 1073742336 Dec  6 14:05 redo01.log
-rw-r----- 1 54321 54322 1073742336 Dec 10 01:00 redo02.log
-rw-r----- 1 54321 54322 1073742336 Dec 11 14:54 redo03.log
-rw-r----- 1 54321 54322 1132470272 Dec 11 14:54 sysaux01.dbf
-rw-r----- 1 54321 54322  734011392 Dec 11 14:54 system01.dbf
-rw-r----- 1 54321 54322   20979712 Dec 10 22:01 temp01.dbf
-rw-r----- 1 54321 54322 1073750016 Dec 11 14:54 undotbs01.dbf
-rw-r----- 1 54321 54322  200548352 Dec 11 14:54 users01.dbf
# chown -R oracle:dba /backup/cold/
# ls -al /backup/cold/
total 6352344
drwxr-xr-2 oracle dba         4096 Dec 11 14:59 .
drwxr-xr-3  54321 54322         18 Dec 11 15:28 ..
-rw-r----- 1 oracle dba     10600448 Dec 11 14:54 control01.ctl
-rw-r----- 1 oracle dba     10600448 Dec 11 14:54 control02.ctl
-rw-r----- 1 oracle dba    104865792 Dec 11 14:54 newts01.dbf
-rw-r----- 1 oracle dba   1073742336 Dec  6 14:05 redo01.log
-rw-r----- 1 oracle dba   1073742336 Dec 10 01:00 redo02.log
-rw-r----- 1 oracle dba   1073742336 Dec 11 14:54 redo03.log
-rw-r----- 1 oracle dba   1132470272 Dec 11 14:54 sysaux01.dbf
-rw-r----- 1 oracle dba    734011392 Dec 11 14:54 system01.dbf
-rw-r----- 1 oracle dba     20979712 Dec 10 22:01 temp01.dbf
-rw-r----- 1 oracle dba   1073750016 Dec 11 14:54 undotbs01.dbf
-rw-r----- 1 oracle dba    200548352 Dec 11 14:54 users01.dbf



기동시 필요한 폴더 생성

1
2
3
$ mkdir -/app/oracle/admin/ORCL19/adump
$ mkdir -/app/oracle/arch
$ mkdir -/app/oracle/oradata/ORCL19



데이터 파일, 컨트롤파일, 리두로그 복원

1
2
3
4
5
6
7
8
9
10
11
12
$ cp -av /oradata1/cold/* /app/oracle/oradata/ORCL19/
??/oradata1/cold/control01.ctl?? -> ??/app/oracle/oradata/ORCL19/control01.ctl??
??/oradata1/cold/control02.ctl?? -> ??/app/oracle/oradata/ORCL19/control02.ctl??
??/oradata1/cold/newts01.dbf?? -> ??/app/oracle/oradata/ORCL19/newts01.dbf??
??/oradata1/cold/redo01.log?? -> ??/app/oracle/oradata/ORCL19/redo01.log??
??/oradata1/cold/redo02.log?? -> ??/app/oracle/oradata/ORCL19/redo02.log??
??/oradata1/cold/redo03.log?? -> ??/app/oracle/oradata/ORCL19/redo03.log??
??/oradata1/cold/sysaux01.dbf?? -> ??/app/oracle/oradata/ORCL19/sysaux01.dbf??
??/oradata1/cold/system01.dbf?? -> ??/app/oracle/oradata/ORCL19/system01.dbf??
??/oradata1/cold/temp01.dbf?? -> ??/app/oracle/oradata/ORCL19/temp01.dbf??
??/oradata1/cold/undotbs01.dbf?? -> ??/app/oracle/oradata/ORCL19/undotbs01.dbf??
??/oradata1/cold/users01.dbf?? -> ??/app/oracle/oradata/ORCL19/users01.dbf??



파라미터 파일 복원

1
$ cp /backup/initorcl19.ora $ORACLE_HOME/dbs/



db 기동

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL> startup nomount
ORACLE instance started.
 
Total System Global Area 2147481656 bytes
Fixed Size            8898616 bytes
Variable Size          486539264 bytes
Database Buffers     1644167168 bytes
Redo Buffers            7876608 bytes
SQL> alter database mount;
 
Database altered.
 
SQL> alter database archivelog;
 
Database altered.
 
SQL> alter database open;
 
Database altered.



샘플 데이터 확인

1
2
3
4
5
6
7
SQL> conn tuser/tuser
Connected.
SQL> select count(*from table1;
 
  COUNT(*)
----------
     23863

정상적으로 확인됨



참조 : 오라클 설치 이후 uid, gid 및 권한 변경 https://positivemh.tistory.com/569

455769.1

1474891.1
558478.1