내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
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
낮은버전의 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_versions 가 10G 11G 12C 일때의 user$ 패스워드 값을 미리 알수 없기 때문에 패스워드를 평문으로 업데이트 해줘야함
참조 : 207303.1, 2096579.1
https://positivemh.tistory.com/473
https://positivemh.tistory.com/420
https://positivemh.tistory.com/830
'ORACLE > Admin' 카테고리의 다른 글
오라클 19c lob 테이블 allocate extent 시 lock 여부 확인 테스트 (0) | 2022.07.01 |
---|---|
오라클 19c 일반테이블 및 lob테이블 컬럼 수동 extent 추가 (0) | 2022.07.01 |
오라클 11g R2 client 19c 접속 19c client 11g R2 접속 시도 (2) | 2022.05.10 |
오라클 19c db oraInventory 재설정 (2) | 2022.01.06 |
오라클 19c rootcrs.sh unlock과 lock (0) | 2021.12.30 |