보안취약점 CVE 권고로 인한 $ORACLE_HOME/jdk 업그레이드 작업 테스트

테스트 방법처럼 개별적으로 $ORACLE_HOME/jdk 버전을 upgrade 하는 것 보다는 RU 패치 적용을 권고한다고 한다.

테스트를 위해 JDK 를 1.8.0_421 -> 1.8.0_431 로 upgrade 테스트

참고 문서

- JDK and PERL Patches for Oracle Database Home and Grid Home (Doc ID 2584628.1)

  해당 문서에 각 RU버전 별 JDK 패치 화일 제공하고 있다.

[ORCL]oracle@ora19c:/oracle/app/oracle/product/19.0.0/jdk/bin# ./java -version
java version "1.8.0_421"
Java(TM) SE Runtime Environment (build 1.8.0_421-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)

- 적용작업

MOS에서 upgrade 하고자 하는 대상 버전을 download 받고 압축해제후, 일반 Interim patch 처럼 바로 적용.

[ORCL]oracle@ora19c:/oracle/patch# unzip -qq p36866578_190000_Linux-x86-64.zip 

[ORCL]oracle@ora19c:/oracle/patch# cd 3636866578

[ORCL]oracle@ora19c:/oracle/patch/36866578# opatch apply .
Oracle Interim Patch Installer version 12.2.0.1.46
Copyright (c) 2025, Oracle Corporation.  All rights reserved.


Oracle Home       : /oracle/app/oracle/product/19.0.0
Central Inventory : /oracle/app/oraInventory
   from           : /oracle/app/oracle/product/19.0.0/oraInst.loc
OPatch version    : 12.2.0.1.46
OUI version       : 12.2.0.7.0
Log file location : /oracle/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2025-09-11_11-06-27AM_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   36866578  

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Backing up files...
Applying interim patch '36866578' to OH '/oracle/app/oracle/product/19.0.0'
ApplySession: Optional component(s) [ oracle.jdk, 1.8.0.191.0 ] , [ oracle.jdk, 1.8.0.391.11 ]  not present in the Oracle Home or a higher version is found.

Patching component oracle.jdk, 1.8.0.201.0...
Patch 36866578 successfully applied.
Log file location: /oracle/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2025-09-11_11-06-27AM_1.log

OPatch succeeded.

[ORCL]oracle@ora19c:/oracle/app/oracle/product/19.0.0/jdk/bin# ./java -version
java version "1.8.0_431"
Java(TM) SE Runtime Environment (build 1.8.0_431-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.431-b10, mixed mode)

[ORCL]oracle@ora19c:/oracle/app/oracle/product/19.0.0/jdk/bin# opatch lspatches
36866578;JDK BUNDLE PATCH 19.0.0.0.241015
36912597;Database Release Update : 19.25.0.0.241015 (36912597)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.

- 원복작업

[ORCL]oracle@ora19c:/home/oracle# opatch rollback -id 36866578
Oracle Interim Patch Installer version 12.2.0.1.46
Copyright (c) 2025, Oracle Corporation.  All rights reserved.


Oracle Home       : /oracle/app/oracle/product/19.0.0
Central Inventory : /oracle/app/oraInventory
   from           : /oracle/app/oracle/product/19.0.0/oraInst.loc
OPatch version    : 12.2.0.1.46
OUI version       : 12.2.0.7.0
Log file location : /oracle/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2025-09-11_11-09-58AM_1.log


Patches will be rolled back in the following order: 
   36866578
The following patch(es) will be rolled back: 36866578  

Rolling back patch 36866578...

RollbackSession rolling back interim patch '36866578' from OH '/oracle/app/oracle/product/19.0.0'

Patching component oracle.jdk, 1.8.0.201.0...
RollbackSession removing interim patch '36866578' from inventory
Log file location: /oracle/app/oracle/product/19.0.0/cfgtoollogs/opatch/opatch2025-09-11_11-09-58AM_1.log

OPatch succeeded.
[ORCL]oracle@ora19c:/home/oracle# opatch lspatches
36912597;Database Release Update : 19.25.0.0.241015 (36912597)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.

[ORCL]oracle@ora19c:/oracle/app/oracle/product/19.0.0/jdk/bin# ./java -version
java version "1.8.0_421"
Java(TM) SE Runtime Environment (build 1.8.0_421-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)

Posted by pat98


ORA-39405: Oracle Data Pump does not support importing from a source database with...

보통 Source 의 Timezone 화일이 높은버전(35)을 Target 의 낮은 Timezone 화일(34)로 import 시도할시 아래와 같은 에러가 났었음...

제일 손쉬운 방법은 Target 의 timezone 을 upgrade 하면 됨. (하지만 사이트 환경상 그렇지 작업하지 못하는 경우가 생김)
-> 개발을 낮은 RU 로 사용하다가 운영은 몇개월후 RU를 더 높은 것으로 셋팅하고 그대로 사용했을 경우 등등)

19.27 부터 datapump import 하는 동안 time zone file version 을 check 하지 않는 기능이 포함되었다고 한다. 

-Bug 37041429 - Allow Data Pump to Import Into a Destination With a Lower Timezone File Version Than the Source (Doc ID 37041429.8)

또는 

alter system set "_datapump_bypass_tstz_check"=true;

그러나 실제 확인해 보면 아직 19c에서 아직 새로운 enhancement가 19c에서 완전히 적용되지 않은것으로 보인다.

 

23ai 와 19c에서 각각 확인해 봄.

Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.7.0.25.01

SET LINES 120
COL KSPPINM for A40
COL KSPPSTVL FOR A30
select ksppinm, ksppstvl
from   x$ksppi x, x$ksppcv y
where  (x.indx = y.indx)
and    (translate(ksppinm,'_','#') like '%&1%');
Enter value for 1: _datapump_bypass
old   4: and    (translate(ksppinm,'_','#') like '%&1%')
new   4: and    (translate(ksppinm,'_','#') like '%_datapump_bypass%')

KSPPINM                                  KSPPSTVL
---------------------------------------- ------------------------------
_datapump_bypass_tstz_check              FALSE

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.27.0.0.0

SET LINES 120
COL KSPPINM for A40
COL KSPPSTVL FOR A30
select ksppinm, ksppstvl
from   x$ksppi x, x$ksppcv y
where  (x.indx = y.indx)
and    (translate(ksppinm,'_','#') like '%&1%');
Enter value for 1: _datapump_bypass
old   4: and    (translate(ksppinm,'_','#') like '%&1%')
new   4: and    (translate(ksppinm,'_','#') like '%_datapump_bypass%')

no rows selected

-> 21c 와 23ai 에서는 사용가능 / 19c 는 곧 기능추가 예정 ------->  일부 문서에 19.27 부터 된다고 했지만 아직 기능구현이 되지 않은것으로 의심된다.

단 이 방법은 data에 timezone 화일이 있을 경우 corrupt 될수 있기 때문에 신중히 사용해야 함.

Posted by pat98

오지 형님이 파킨슨병으로 인해 2025년 7월5일 버밍엄에서의 공연을 마지막으로 은퇴했다고 한다.

버밍엄은 블랙 사바스가 결성된 곳이기도 하다. 

이로서 락의 한 시대가 저무는 듯 하다.

 

R.I.P

2027.7.22

안녕..오지..Prince of Darkness 

 

Posted by pat98

- 19c 버전의 GI RU 패치 리스트

[ROSEC1]oracle@rose1:/home/oracle# opatch lspatches
36648174;TOMCAT RELEASE UPDATE 19.0.0.0.0 (36648174)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
36582781;Database Release Update : 19.24.0.0.240716 (36582781)
36590554;ACFS RELEASE UPDATE 19.24.0.0.0 (36590554)
36587798;OCW RELEASE UPDATE 19.24.0.0.0 (36587798)

- 23ai 버전의 GI RU 패치 리스트
[ROSEC1]oracle@rose1:/home/oracle# opatch lspatches
37369904;RHP RELEASE UPDATE 23.7.0.25.01 (37369904)
37369900;OCW RELEASE UPDATE 23.7.0.25.01 (37369900)
37369896;ACFS RELEASE UPDATE 23.7.0.25.01 (37369896)
37369888;MICRONAUT RELEASE UPDATE 23.7.0.25.01 (37369888)
37366180;Database Release Update : 23.7.0.25.01 (37366180)

리스트에서 알수 있듯이 19c의 TOMCAT, DBWLM 은 없어지고 23ai에서는 RHP, MICRONUT 으로 대체되었다.

-> 기존의 무겁고 보안이 취약했던 TOMCAT 을 걷어내고 MICRONUT 을 도입함으로써 가벼워지고 보안이 강화되었으며, 유연한 패치관리, REST API 지원이 원활하게  지원될 것이라고 한다.

Posted by pat98

[INS-06006] Passwordless SSH connectivity not set up between the following node(s)

- 2탄 -

 

RAC 설치 작업 하다보면 위의 메세지를 흔하게 보게 되는데..

 

해당 메세지의 passwordless ssh 접속불가으로 인해 문제로 고통받는 많은 유저분들을 위해 몇자 적는다.

INS-06006 GI RunInstaller Fails If OpenSSH Is Upgraded to 8.x (Doc ID 2555697.1)

OpenSSH 버전 9.x 대가 설치되어 있는 경우 해당 문서의 기존 workaround 방법이 먹히지 않는 경우가 종종 있다.

현재는 AIX 나 Solaris 계열에서만 해당 증상이 나타나고 있으며 RHEL Linux 계열은 아직 OpenSSH 8.x 가 채택되어 거의 문제가 없다. (주로 RHEL8, RHEL 9 를 사용하고 있으므로)

RHEL 10 부터는 OpenSSH 9.x 가 기본으로 설치되고. 9.x 에서는 새로운 옵션인 -O 가 생겼다.

[root@rhel10 ~]# ssh -V
OpenSSH_9.9p1, OpenSSL 3.2.2 4 Jun 2024

 -O      Use the legacy SCP protocol for file transfers instead of the SFTP protocol.  Forcing the use of the SCP protocol
         may be necessary for servers that do not implement SFTP,  for  backwards-compatibility  for  particular  filename
         wildcard patterns and for expanding paths with a ‘~’ prefix for older SFTP servers.
 
 -> SFTP 프로토콜 대신 레거시 SCP 프로토콜 사용하도록 강제화 함.
 
- 기존의 workaround 해결방법에서 -O 추가옵션 사용가능 (대문자 오)

설치전
# Rename the original scp.
mv /usr/bin/scp /usr/bin/scp.orig

# Create a new file </usr/bin/scp>.
vi /usr/bin/scp

# Add the below line to the new created file </usr/bin/scp>.
/usr/bin/scp.orig -T -O $*

# Change the file permission.
chmod 555 /usr/bin/scp

설치후
mv /usr/bin/scp.orig /usr/bin/scp

다시 passwordless ssh 접속 시도..성공하시길 !!

 

 

Posted by pat98

Critical Patch Update (CPU) Program Jul 2025 Patch Availability Document (DB-only) (Doc ID 3086459.1)

패치작업 19.28.0.0.250715 (GI RU 37957391 )

Database Patch Set Update : 19.28.0.0.250715 (37960098)
OCW Patch Set Update      : 19.28.0.0.250715 (37962946)
ACFS Patch Set Update     : 19.28.0.0.250715 (37962938)
Tomcat Release Update     : 19.0.0.0.0       (38124772)
DBWLM Release Update      : 19.0.0.0.0       (36758186)

Oracle Grid Infrastructure Patch Set Update 19.28.0.0.250715 
-------------------------------------
GI_HOME, ORACLE_HOME 을 개별로 각각 할때

- grid 유저
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/37960098
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/37962946
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/37962938
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/36758186
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/38124772

- oracle 유저
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/37960098
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/patch/37957391/37962946

(oracle)
$ <ORACLE_HOME>/bin/srvctl stop home -o <ORACLE_HOME> -s <status file location> -n <node name>

(root 유저)
export GI_HOME=/u01/app/19.0.0.0/grid
$GI_HOME/crs/install/rootcrs.sh -prepatch 

(grid 유저)
export GI_HOME=/u01/app/19.0.0.0/grid
cd /u01/patch
$GI_HOME/OPatch/opatch apply -oh $GI_HOME -local /u01/patch/37957391/37962946 -silent
$GI_HOME/OPatch/opatch apply -oh $GI_HOME -local /u01/patch/37957391/37962938 -silent
$GI_HOME/OPatch/opatch apply -oh $GI_HOME -local /u01/patch/37957391/37960098 -silent
$GI_HOME/OPatch/opatch apply -oh $GI_HOME -local /u01/patch/37957391/36758186 -silent
$GI_HOME/OPatch/opatch apply -oh $GI_HOME -local /u01/patch/37957391/38124772 -silent

(oracle 유저)
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
cd /u01/patch
./37957391/37962946/custom/scripts/prepatch.sh -dbhome $ORACLE_HOME
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /u01/patch/37957391/37962946 -silent
$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /u01/patch/37957391/37960098 -silent
./37957391/37962946/custom/scripts/postpatch.sh -dbhome $ORACLE_HOME 

(root 유저)
export GI_HOME=/u01/app/19.0.0.0/grid
$GI_HOME/rdbms/install/rootadd_rdbms.sh
$GI_HOME/crs/install/rootcrs.sh -postpatch 

(oracle)
$ <ORACLE_HOME>/bin/srvctl start home -o <ORACLE_HOME> -s <status file location> -n <node name> 

- Loading Modified SQL Files into the Database
sqlplus /nolog
SQL> conect / as sysdba
SQL> startup
SQL> quit
cd $ORACLE_HOME/OPatch
./datapatch -verbose

### [롤백하는 경우] ###########

(oracle)
$ <ORACLE_HOME>/bin/srvctl stop home -o <ORACLE_HOME> -s <status file location> -n <node name>

GI Home
(root로)
$GI_HOME/crs/install/rootcrs.sh -prepatch -rollback

(grid 유저로)
export GI_HOME=/u01/app/19.0.0.0/grid
cd /u01/install
$GI_HOME/OPatch/opatch nrollback -local -id 37962946,37962938,37960098,36758186,38124772 -oh $GI_HOME -silent

(oracle 유저로)
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
cd /u01/install
./37957391 /37962946/custom/scripts/prepatch.sh -dbhome $ORACLE_HOME 
$ORACLE_HOME/OPatch/opatch nrollback -local -id 37962946,37960098 -oh /u01/app/oracle/product/19.0.0.0/dbhome_1 -silent
./37957391 /37962946/custom/scripts/postpatch.sh -dbhome $ORACLE_HOME

Run post script
(root로)
export GI_HOME=/u01/app/19.0.0.0/grid
$GI_HOME/rdbms/install/rootadd_rdbms.sh
$GI_HOME/crs/install/rootcrs.sh -postpatch -rollback

(oracle)
$ <ORACLE_HOME>/bin/srvctl start home -o <ORACLE_HOME> -s <status file location> -n <node name>

sqlplus /nolog
SQL> conect / as sysdba
SQL> startup
SQL> quit
cd $ORACLE_HOME/OPatch
./datapatch -verbose

Posted by pat98

Cyberpunk: Edgerunners 2 가 제작 된다고 한다.

아마 데이비드는 죽어서 새로운 스토리로 풀어나갈 듯..

Posted by pat98

2025. 6. 23. 23:19 오라클

EM 24ai 설치


Release 된 지는 한참 되었는데 2월에 설치만 해 보고 이제서야 정리해 본다.

 

영어가 제일 쉬었어요 하는 분들은 아래 메뉴얼을 참고하시기 바란다.

https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/24.1/embsc/installing-oracle-enterprise-manager.html#GUID-D0C8EB92-8297-4FF9-A721-BDD2425243C4

 

우선 EM 설치 진행전 EM Repository DB를 미리 생성해야 하는데 아직 24ai Repository  DB용 Template 가 배포되지 않아서 기존에 배포된 19c Template 지정해서 DB생성하면 Error 발생하므로 Database 생성옵션에서 Custom 선택 후  빈 껍데기 수동으로 생성하여 작업하도록 한다.

 

시도해 보면 계속 이런 에러가 뜰것이다. 나처럼 해결해 볼려고 하면 정신건강에 좋지 않으니 빨리 포기하도록 하자.

ERROR:The database for which you have provided details already has a valid SYSMAN schema, but not an OPSS schema. Ensure that it also has an OPSS schema. Otherwise, drop the SY[oracle:/tmp/OraInstall2025-02-14_09-08-34AM]

 

Release 해 놓고 6개월 넘었는데 아직도 Template 제공 안하는건 뭐하자는 건지...개발자들 일해라!!! ..

https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/24.1/embsc/creating-database-instance-preconfigured-repository-using-database-templates1.html#GUID-AD704CBD-0C7B-43E6-B413-A87A95FA2722

 

아무튼 EM 24ai 설치파일은  5개로 구성되어 있다. (현재버전은 24.1)

em24100_linux64.bin

em24100_linux64-2.bin

em24100_linux64-3.bin

em24100_linux64-4.bin

em24100_linux64-5.bin           

 

Repository  DB 준비된 상태에서 임치 위치에 모든 설치화일을 올리고  em24100_linux64.bin 실행한다.  X환경이 준비되어야 한다.

(압축은 /tmp/임의이름/Disk1, Disk2, ...Disk5 까지 자체적으로 풀림)

export DISPLAY=xxx.xxx.xx.xx:0.0

[oracle:/u01/install]#./em24100_linux64.bin

 

 

(Advanced) 선택

 

(Skip) 선택  [Next >] 선택

 

호스트 네임에 도메인 네임이 없는 경고 발생, [Ignore] 선택 , [Next >] 선택

 

미들웨어  위치 지정 , [Next >] 선택

 

Plug-in 선택한 , [Next >] 선택 (여기서는 Exadata 기준의 Plug-in 선택)

 

 

Weblogic Domain, nodemanager 계정, Instance 기본 위치 설정 , [Next >] 선택

 

 

Repository DB 연결 정보 입력 , [Next >] 선택

 

수행할 User 지정, [Next >] 선택

 

사전 요구사항 체크후, [Next] 선택

Custom 으로 Repository Database 생성하였을 경우, 사전조치 사항해야 한다.

 

SQL> alter system set "_allow_insert_with_update_check"=TRUE scope=spfile;

 

Repository DB의 유저와 데이터파일 설정. 적당한 값을 입력한 후, [Next]

 

SW Library  사용유무  선택하고, [Next >] 선택

 

OMS/Agent가 사용하는 Port 목록. 변경해야  필요가 있다면 변경하고, [Next >] 선택

 

 

 

  기본적으로 First available port  사용하게 되어 있으나, 보통 upload  Port  4889 (http), 1159 (https)  지정하며 Console Port  7788 (http), 7803 (https)  지정하도록 한다. Review 화면, 설정 값들을 확인하고 이상 없다면 [Install] 선택

 

설치화면 진행..인고의 시간 (워낙 깔리는게 많아서 사양에 따라 3~4시간 소요된다.)

 

 

 , 설치 진행 화면이 진행되고, 아래의 스크립트를 실행하라는 팝업 창이 뜨면  root 유저로 스크립트를 실행 , [OK] 선택 하여 팝업 창을 닫고, [Close] 선택하여 설치 종료

/u01/app/Middleware/oms_home/allroot.sh

 

설치완료 (설정된 포트  확인)

 

설치가 완료되었다면 접속해 보도록 하자.

 

https://<EM_HOST_NAME or EM_IP_ADDRESS>:7803/em 

 

접속해 보면 기존의 오른쪽에 있던 Navigation Menu 왼쪽에 햄버거 버튼으로 대체되었다.

나머지는 메뉴 및 기능은 기존 버전과 거의 유사하다. 

 

Posted by pat98

 

 

자폐스펙트럼을 아이를 가진 현직 경찰관분이

자폐아를 키우면서 느낀 감정을 따듯하게 표현한 책이다.

 

놀랍게도 우리나라의 자폐성 장애인의 평균사망연령이 23.8세 라고 한다.

 

우리나라가 모든 발달장애인이 편견없이 잘 살수 있는 그런 나라가 되었으면 좋겠다. 

김혜민 경찰관님에게 응원을 보냅니다.

 

Posted by pat98

19.26 부터 추가된 impdp 옵션 (23ai 에서 사용가능, 정확히는 23.8 부터)

 

ONESTEP_INDEX 와 INDEX_THRESHOLD 라는 2가지 옵션이 생겼다. 이 두가지 옵션은 서로 같이 사용해야 하는 듯 하다.

 

1. ONESTEP_INDEX

When TRUE, creates all indexes concurrently with DOP=1 and when

FALSE (the default) uses 2-step process to maximize performance.

 

2. INDEX_THRESHOLD

Table size (in bytes) where index created with DOP=1 when less

than the threshold and with optimal DOP when greater.

-> default 150M

 

* INDEX_THRESHOLD 에 지정가능한 String 단위는 아래와 같다.

1000B, 100k, 200kb, 100M, 200mb, 100G, 200gb, 100t, 200TB.

 

이를 이해하기 위해서는 기존의 datapump 사용시 parallel 사용에 대한 이해가 필요하다.

 

- 11g 경우

PARALLEL=16. Data Pump는 하나의 작업자 프로세스를 사용하여 한 번에 하나씩 인덱스를 생성함 CREATE INDEX ... PARALLEL 16. 이는 큰 인덱스에 효율적..

 

- 12c 경우

12c에서는 더 많은 인덱스, 특히 여러 개의 작은 인덱스가 있는 스키마에 더 잘 맞도록 알고리즘이 변경됨. Data Pump 16개의 Woker를 모두 사용하고, Woker를 사용하여 인덱스를 생성. CREATE INDEX ... PARALLEL 1. 

이는 대규모 인덱스의 경우 성능 저하 요인이 될수 있음 .

 

- 19c (19.26 이상), 23ai

19c, 23ai에서는 이 두가지 이점을 사용할 수 있음. Pump는 테이블 크기를 사용하여 최적의 병렬도를 결정한다. 대규모 배치시는의 최적 병렬도(DOP)를 사용하여 더 작은 인덱스를 생성하고 PARALLEL 1, 최대의 최적 병렬도를 사용하여 더 큰 인덱스를 생성한다. PARALLEL 15

 

 

- table 크기가 150 M 이하일 때는 무조건 parallel=1

- 무조건 성능이 좋게 나온다고 보장하지 않기 때문에 운영 시스템 환경에 따라 적절히 테스트 하여 작업할 필요 있음.

Posted by pat98

09-21 22:15
Flag Counter
Yesterday
Today
Total

글 보관함

최근에 올라온 글

달력

 « |  » 2025.9
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

최근에 달린 댓글