프린트 하기

OS환경 : Oracle Linux 8.1 (64bit)

 

DB 환경 : Oracle Database 19.3.0.0

 

방법 : 오라클 19c 패스워드 버전이 user$ 값으로 변경해도 바뀔까?

[오라클 11gR2 client 19c 접속 19c client 11gR2 접속 시도] 게시물처럼 

https://positivemh.tistory.com/830

 

오라클 11gR2 client 19c 접속 19c client 11gR2 접속 시도

OS환경 : Oracle Linux 6.8, 8.1 (64bit) DB 환경 : Oracle Database 11.2.0.1, 11.2.0.4, 19.3.0.0 방법 : oracle 11gR2 client 19c 접속 19c client 11gR2 접속 시도 oracle 11gR2 에서 19c로 접속해보..

positivemh.tistory.com

낮은버전의 db에서 높은 버전의 db로 접속 할 경우 sqlnet.ora 파일을 수정한 뒤

해당 유저 패스워드를 변경해줘서 패스워드 버전을 맞춰주어야 정상적으로 접속됨

 

 

이때 alter user system identified by oracle; 과 같이 패스워드를 평문으로 입력할때는 패스워드 버전이 정상적으로 변경됨

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
user$ 패스워드 값 확인
SQL> 
set lines 400
select 'alter user "'||name||'" identified by values '''||spare4||';'||password||''';' as "statement"
from user$
where name = 'SYSTEM';
 
statement
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter user "SYSTEM" identified by values 'S:F8C3521E0F7DF8DE0BB66F4205018D3C843DCB8D833AC9946CFF12FAB05B;T:BC1E835A691F668770277DAD759EA3346364A99AC234D7EF16A961965130881A82F2D4F848B44B1845117767752F92BDCB27441C145350B3FE6678A56EAE2AFA8231921B5E50DB3A90B8AE8E8F3A762E;';
 
 
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   11G 12C
 
 
sqlnet.ora 파일 수정
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
 
 
평문으로 패스워드 변경
SQL> alter user system identified by oracle;
 
User altered.
 
 
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   10G 11G 12C

sqlnet.ora 파일 변경 후 alter user ~ 평문으로 패스워드 변경 시 password_versions가 10G 11G 12C 로 변경됨

 

 

sqlnet.ora 설정 초기화 후 진행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sqlnet.ora 파일 수정(주석처리)
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
#SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
#SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
 
 
평문으로 패스워드 변경
SQL> alter user system identified by oracle;
 
User altered.


패스워드 버전 확인
SQL> 
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   11G 12C

다시 password_versions가 11G 12C 로 변경됨

 

 

위 user$ 에서 수집한 패스워드값(spare4 조합 값)으로 변경 후 패스워드 버전 확인

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
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   11G 12C
 
 
sqlnet.ora 파일 수정(주석 해제)
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
 
 
user$ 에서 수집한 값으로 패스워드 변경
SQL> alter user "SYSTEM" identified by values 'S:F8C3521E0F7DF8DE0BB66F4205018D3C843DCB8D833AC9946CFF12FAB05B;T:BC1E835A691F668770277DAD759EA3346364A99AC234D7EF16A961965130881A82F2D4F848B44B1845117767752F92BDCB27441C145350B3FE6678A56EAE2AFA8231921B5E50DB3A90B8AE8E8F3A762E;';
 
User altered.
 
 
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   11G 12C

user$에서 수집한 값으로 변경시에는 password_versions가 10G 11G 12C 로 변경되지 않음

 

 

변경되지 않은 이유

password_versions 가 11G 12C 일때와 10G 11G 12C 일때 user$ 의 패스워드 값이 다름

 

 

현재 상태에서 (sqlnet.ora파일 수정한 상태) 다시 평문으로 패스워드 변경 후 user$ 패스워드 값 확인

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
패스워드 변경
SQL> alter user system identified by oracle;
 
User altered.
 
 
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   10G 11G 12C
 
 
user$ 패스워드 값 확인
SQL> 
set lines 400
select 'alter user "'||name||'" identified by values '''||spare4||';'||password||''';' as "statement"
from user$
where name = 'SYSTEM';
 
statement
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter user "SYSTEM" identified by values 'S:56D91FB246EC1E49755BF4E6B766BEBAE3A8A7E2B6BF93B0673722751DFA;T:1866D002AF98C432A0DD5D994C031D2BFBF725D3C2D50A5B2ADB69451465ADE5D226D0A4F8F31208C861402F492717D89115DB7D6DA4F8313009BF114455D8F1F5A4035319DF57DB62B3768FA6CA216B;2D594E86F93B17A1';

password_versions가 10G 11G 12C 로 변경됨

 

 

password_versions 가 11G 12C 일때와 10G 11G 12C 일때 user$ 의 패스워드 값 비교

1
2
3
4
5
6
7
8
9
password_versions 가 11G 12C 일때 user$ 패스워드 값
statement
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter user "SYSTEM" identified by values 'S:F8C3521E0F7DF8DE0BB66F4205018D3C843DCB8D833AC9946CFF12FAB05B;T:BC1E835A691F668770277DAD759EA3346364A99AC234D7EF16A961965130881A82F2D4F848B44B1845117767752F92BDCB27441C145350B3FE6678A56EAE2AFA8231921B5E50DB3A90B8AE8E8F3A762E;';
 
password_versions 가 10G 11G 12C 일때 user$ 패스워드 값
statement
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter user "SYSTEM" identified by values 'S:56D91FB246EC1E49755BF4E6B766BEBAE3A8A7E2B6BF93B0673722751DFA;T:1866D002AF98C432A0DD5D994C031D2BFBF725D3C2D50A5B2ADB69451465ADE5D226D0A4F8F31208C861402F492717D89115DB7D6DA4F8313009BF114455D8F1F5A4035319DF57DB62B3768FA6CA216B;2D594E86F93B17A1';

user$에 저장된 패스워드 값이 다름 

 

 

자세히 보면 user$.spare4값도 다르고

1
2
3
4
5
password_versions 가 11G 12C 일때 user$.spare4 값
'S:F8C3521E0F7DF8DE0BB66F4205018D3C843DCB8D833AC9946CFF12FAB05B;T:BC1E835A691F668770277DAD759EA3346364A99AC234D7EF16A961965130881A82F2D4F848B44B1845117767752F92BDCB27441C145350B3FE6678A56EAE2AFA8231921B5E50DB3A90B8AE8E8F3A762E;'
 
password_versions 가 10G 11G 12C 일때 user$.spare4 값
'S:56D91FB246EC1E49755BF4E6B766BEBAE3A8A7E2B6BF93B0673722751DFA;T:1866D002AF98C432A0DD5D994C031D2BFBF725D3C2D50A5B2ADB69451465ADE5D226D0A4F8F31208C861402F492717D89115DB7D6DA4F8313009BF114455D8F1F5A4035319DF57DB62B3768FA6CA216B;'

 

 

password_versions 가 11G 12C 일때는 없던 user$.password 값이 10G 11G 12C일때 추가됨

1
2
3
4
5
password_versions 가 11G 12C 일때 user$.password 값
없음
 
password_versions 가 10G 11G 12C 일때 user$.password 값
'2D594E86F93B17A1'

 

 

처음 환경으로 만든 후 password_versions 가 10G 11G 12C 일때 user$ 에서 수집한 값으로 패스워드 변경

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
sqlnet.ora 파일 수정(주석 처리)
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
#SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
#SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
 
 
평문으로 패스워드 변경
SQL> alter user system identified by oracle;
 
User altered.
 
 
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   11G 12C
 
 
sqlnet.ora 파일 수정(주석 해제)
$ cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
 
 
password_versions이 10G 11G 12C 일때 user$ 에서 수집한 값으로 패스워드 변경
SQL> alter user "SYSTEM" identified by values 'S:56D91FB246EC1E49755BF4E6B766BEBAE3A8A7E2B6BF93B0673722751DFA;T:1866D002AF98C432A0DD5D994C031D2BFBF725D3C2D50A5B2ADB69451465ADE5D226D0A4F8F31208C861402F492717D89115DB7D6DA4F8313009BF114455D8F1F5A4035319DF57DB62B3768FA6CA216B;2D594E86F93B17A1';
 
User altered.
 
 
패스워드 버전 확인
SQL> 
set lines 200 pages 1000
col username for a30 
select username, password_versions from dba_users where username ='SYSTEM' order by 1;
 
USERNAME               PASSWORD_VERSIONS
------------------------------ -----------------
SYSTEM                   10G 11G 12C

password_versions이 10G 11G 12C 일때 user$ 에서 수집한 값으로 변경시에는 password_versions가 10G 11G 12C 로 정상적으로 변경됨

 

 

결론 : sqlnet.ora 파일 수정 후 패스워드 평문값과 user$ 패스워드 값 모두 password_versions 를 변경(적용) 시킬 수 있지만 password_versions 가 11G 12C 일때와 10G 11G 12C 일때 user$ 패스워드값(spare4, password)이 다르기 때문에 10G 11G 12C 일때의 user$ 패스워드 값을 미리 알고 이 값으로 패스워드를 변경해줘야 password_versions 이 정상적으로 변경됨

=> 위와 같이 테스트 하지 않는 이상은 password_versions10G 11G 12C 일때의 user$ 패스워드 값을 미리 알수 없기 때문에 패스워드를 평문으로 업데이트 해줘야함

 

 

참조 : 207303.1, 2096579.1

https://positivemh.tistory.com/473

https://positivemh.tistory.com/420

https://positivemh.tistory.com/830

 

오라클 11gR2 client 19c 접속 19c client 11gR2 접속 시도

OS환경 : Oracle Linux 6.8, 8.1 (64bit) DB 환경 : Oracle Database 11.2.0.1, 11.2.0.4, 19.3.0.0 방법 : oracle 11gR2 client 19c 접속 19c client 11gR2 접속 시도 oracle 11gR2 에서 19c로 접속해보..

positivemh.tistory.com