주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Database 23ai로 Oracle True Cache Service 구현
소개
Oracle True Cache는 Oracle Database를 위한 인메모리, 일관성, 자동 관리형 SQL 및 키-값(객체 또는 JSON) 캐시입니다.
Oracle True Cache는 Oracle Database 앞의 인메모리 읽기 전용 캐시입니다. Oracle Active Data Guard와 마찬가지로 Oracle True Cache는 기본 데이터베이스의 읽기 전용 복제본으로, 대부분 디스크가 없는 복제본입니다.
모던 애플리케이션은 대개 다수의 연결과 빠르고 짧은 대기시간의 데이터 액세스를 필요로 합니다. 일반적으로 응용 프로그램은 갱신보다 많은 읽기를 수행하며 데이터베이스 성능에 영향을 주지 않고 캐시에서 읽을 수 있기 때문에 일반적으로 캐시를 데이터베이스 앞에 배치하는 것이 좋습니다. 예를 들어, 항공 예약 시스템은 사람들이 항공편을 쇼핑할 때 자주 데이터를 읽으며 데이터가 데이터베이스에 있는 데이터와 비교하여 최신 데이터가 아닌 경우 괜찮습니다. 다른 사람이 항공편을 예약할 때만 애플리케이션은 최신 데이터에 액세스하면 됩니다.
일반 캐시와 달리 Oracle True Cache는 가장 자주 액세스하는 데이터를 캐시에 자동으로 유지하고, 캐시를 기본 데이터베이스, 동일한 캐시의 다른 객체 및 기타 캐시와 일관되게 유지합니다. JSON을 포함한 모든 Oracle Database 객체 및 데이터 유형을 캐시합니다.
Oracle True Cache는 Oracle Database 보안 정책을 구현하기 때문에 캐시에 대한 액세스를 제어할 수 있습니다. 이를 통해 개인 개인 정보와 같은 중요한 데이터를 캐시에 저장하여 일반적으로 캐시하지 않을 수 있습니다.
환경 세부 정보:
-
기본 데이터베이스:
-
데이터베이스 버전:
23.5.0.24
-
운영 체제: VM(가상 시스템) 데이터베이스 시스템.
-
Oracle True Cache 인스턴스: 1 노드 Oracle Database 23ai 데이터베이스 소프트웨어 버전(NON-ASM)이 있는 DBCA(Oracle Database Configuration Assistant) 노드입니다.
-
목표
- Oracle True Cache 서비스를 구현하고 읽기 전용(선택) 애플리케이션 요청을 Oracle True Cache 인스턴스로 재지정합니다.
필요 조건
-
Oracle True Cache 노드에서 EZConnect(Easy Connect) 문자열을 사용하여 기본(소스) 데이터베이스에 액세스할 네트워크 경로를 설정합니다.
-
기본 데이터베이스가 아카이브 로깅(ARCHIVELOG) 모드의 기본 노드에서 실행 중인지 확인합니다.
작업 1: 암호 파일 복사 및 TDE(Transparent Data Encryption) 전자 지갑(Wallet)
Password file과 선택적으로 primary database의 TDE 전자 지갑을 Oracle True Cache 노드로 복사합니다. 다음 방법 중 하나를 사용할 수 있습니다.
-
기본 데이터베이스 비밀번호 파일(및 선택적 TDE 전자 지갑)을 Oracle True Cache 노드의 임의 위치로 수동으로 복사합니다.
또는
-
기본 데이터베이스에서 DBCA 명령을 실행하여 Password file(및 선택적 TDE 전자 지갑)을 구성 BLOB 파일로 패키지화합니다. 그런 다음 파일을 Oracle True Cache 노드에 복사하고 해당 파일이 Oracle 홈 사용자가 소유하는지 확인하십시오.
다음 명령을 사용하여 primary database에서 구성 BLOB 파일을 준비합니다.
mkdir -p /tmp/passconfig $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB cdb1db1 -trueCacheBlobLocation /tmp/passconfig -silent
출력 예:
mkdir -p /tmp/passconfig [oracle@proddb ~]$ $ORACLE_HOME/bin/dbca -configureDatabase -prepareTrueCacheConfigFile -sourceDB DB1218 -trueCacheBlobLocation /tmp/passconfig -silent Enter password for the TDE wallet: Session ID of the current execution is: 1 Log file location: /u01/app/oracle/cfgtoollogs/dbca/DB1218_xts_iad/trace.log_2024-12-18_12-47-36PM_42681 ----------------- Running Initialization job Completed Initialization job 33% complete ----------------- Running Validate_dataguard job Skipping. Job is detected as not applicable. 40% complete ----------------- Running Validate_db_version job Completed Validate_db_version job 47% complete ----------------- Running Validate_tde_credentials job Completed Validate_tde_credentials job 53% complete ----------------- Running Validate_true_cache_instance job Completed Validate_true_cache_instance job 60% complete ----------------- Running Validate_archive_log_mode job Completed Validate_archive_log_mode job 67% complete ----------------- Running Prepare_blob job Completed Prepare_blob job 100% complete ---------- PLUGIN NOTES ---------- Successfully created blob file: /tmp/passconfig/blob_2024-12-18_12-47-36PM.tar.gz ---------- END OF PLUGIN NOTES ---------- Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/DB1218_xts_iad/DB1218_xts_iad0.log" for further details. [oracle@proddb ~]$
BLOB 파일을 Oracle True Cache 인스턴스 노드로 복사합니다.
scp -i <private_key> <blob_file_name> opc@<true cache instance ip>:/tmp
작업 2: Oracle True Cache 노드에서 불필요한 데이터베이스 삭제
Oracle True Cache 노드에서 데이터베이스가 존재하고 필요하지 않은 경우 Oracle True Cache 호스트의 기존 데이터베이스를 삭제합니다.
sqlplus / as sysdba
SQL> shut immediate
SQL> startup mount restrict
SQL> drop database;
작업 3: True 캐시 호스트에서 Primary Database 접속 문자열 테스트
다음 명령을 실행하여 Oracle True Cache 호스트에서 기본 데이터베이스 접속 문자열을 테스트합니다.
sqlplus sys/<sys_password>@<primary_database_hostname>:1521/<primary_database_service> as sysdba
작업 4: Oracle True Cache 구성 및 시작
Oracle True Cache 노드에서 -createTrueCache
명령을 실행하여 Oracle True Cache 구성을 완료하고 Oracle True Cache를 시작합니다.
$ORACLE_HOME/bin/dbca -createTrueCache -gdbName true_cache_global_name -sid true_cache_sid -sourceDBConnectionString primary_db_easy_connect_string -trueCacheBlobFromSourceDB true_cache_config_blob_path -sgaTargetInMB sga_memory_size -pgaAggregateTargetInMB pga_memory_size -tdeWalletLoginType AUTO_LOGIN -listeners listener_name -silent
출력 예:
[oracle@test1 ~]$ $ORACLE_HOME/bin/dbca -createTrueCache -gdbName test1 -sid test1 -sourceDBConnectionString proddb.sub12101216100.dbnet.oraclevcn.com.:1521/DB1218_xts_iad.sub12101216100.dbnet.oraclevcn.com -trueCacheBlobFromSourceDB /home/oracle/blob_2024-12-18_12-47-36PM.tar.gz -sgaTargetInMB 25000 -pgaAggregateTargetInMB 12000 -initParams db_create_file_dest=/u02/app/oracle/oradata -listeners LISTENER -silent
Enter Remote DB SYS user password:
Enter password for the source database TDE wallet:
Session ID of the current execution is: 1
Log file location: /u01/app/oracle/cfgtoollogs/dbca/test1/trace.log_2024-12-18_01-01-33PM_61716
-----------------
Running Extract_password_file_from_blob_file job
Completed Extract_password_file_from_blob_file job
25% complete
-----------------
Running Create_static_listener job
Skipping. Job is detected as not applicable.
38% complete
-----------------
Running Register_listener job
Completed Register_listener job
50% complete
-----------------
Running Extract_tde_wallet_from_blob_file job
Completed Extract_tde_wallet_from_blob_file job
54% complete
-----------------
Running Setup_required_directories job
Skipping. Job is detected as not applicable.
57% complete
-----------------
Running Create_pfile job
Completed Create_pfile job
61% complete
-----------------
Running Start_nomount_instance job
Completed Start_nomount_instance job
64% complete
-----------------
Running Create_TDE_wallet job
Completed Create_TDE_wallet job
68% complete
-----------------
Running Create_truecache_instance job
Completed Create_truecache_instance job
71% complete
-----------------
Running Add_oratab_entry job
Completed Add_oratab_entry job
75% complete
-----------------
Running Reopen_wallet job
Completed Reopen_wallet job
100% complete
---------- PLUGIN NOTES ----------
Successfully created True Cache.
In order to complete the operation,configure the True Cache database application services from the primary database.
---------- END OF PLUGIN NOTES ----------
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/test1/test1.log" for further details.
[oracle@test1 ~]$
작업 5: Oracle True Cache용 PDB(플러그인할 수 있는 데이터베이스) 레벨 애플리케이션 서비스 생성 및 확인
Oracle True Cache 서비스와 함께 사용할 기본 데이터베이스(PDB 레벨) 애플리케이션 서비스를 생성 및 시작하고, 서비스가 실행 중인지 확인합니다.
단일 인스턴스 기본 데이터베이스의 경우 DBMS_SERVICE
PL/SQL 패키지를 사용합니다. PDB와 관련된 서비스의 경우 DBMS_SERVICE
를 사용하여 서비스를 시작하기 전에 특정 PDB에 접속하거나 세션에서 올바른 PDB 컨테이너를 설정하십시오.
출력 예:
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.CREATE_SERVICE('SALES', 'SALES');
DBMS_SERVICE.START_SERVICE('SALES');
END;
/
PL/SQL procedure successfully completed.
작업 6: Primary Database에 Oracle True Cache 구성
dbca -configureDatabase
명령을 -configureTrueCacheInstanceService
매개변수와 함께 실행하여 기본 데이터베이스에서 Oracle True Cache를 구성합니다. 이렇게 하면 기본 데이터베이스에서 Oracle True Cache 데이터베이스 애플리케이션 서비스가 구성되고 Oracle True Cache에서 Oracle True Cache 서비스가 시작됩니다.
각 Oracle True Cache 데이터베이스 애플리케이션 서비스에 대해 다음 명령을 실행합니다.
$ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB primary_db_sid_or_db_unique_name -trueCacheConnectString true_cache_easy_connect_string -trueCacheServiceName true_cache_service_name -serviceName primary_db_service_name -pdbName primary_pdb_name -silent
출력 예:
[oracle@proddb ~]$ $ORACLE_HOME/bin/dbca -configureDatabase -configureTrueCacheInstanceService -sourceDB DB1218 -trueCacheConnectString test1.sub12101216100.dbnet.oraclevcn.com:1521/test1.sub12101216100.dbnet.oraclevcn.com -trueCacheServiceName sales_tc1 -serviceName sales -pdbName DB1218_PDB1 -silent
Session ID of the current execution is: 7
Log file location: /u01/app/oracle/cfgtoollogs/dbca/DB1218/trace.log_2024-12-18_02-39-50PM_60536
-----------------
Running Initialization job
Enter SYS user password:
Completed Initialization job
33% complete
-----------------
Running Validate_true_cache_instance_connection job
Completed Validate_true_cache_instance_connection job
37% complete
-----------------
Running Validate_dataguard job
Skipping. Job is detected as not applicable.
41% complete
-----------------
Running Validate_db_version job
Completed Validate_db_version job
44% complete
-----------------
Running Validate_true_cache_instance job
Completed Validate_true_cache_instance job
48% complete
-----------------
Running Validate_archive_log_mode job
Completed Validate_archive_log_mode job
52% complete
-----------------
Running Validate_pdb job
Completed Validate_pdb job
56% complete
-----------------
Running Validate_primary_db_service job
Completed Validate_primary_db_service job
59% complete
-----------------
Running Validate_true_cache_db_service job
Completed Validate_true_cache_db_service job
63% complete
-----------------
Running Validate_true_cache_instance_open_mode job
Completed Validate_true_cache_instance_open_mode job
67% complete
-----------------
Running Create_truecache_service job
Completed Create_truecache_service job
73% complete
-----------------
Running Add_network_entry job
Completed Add_network_entry job
80% complete
-----------------
Running Modify_primary_service job
Completed Modify_primary_service job
87% complete
-----------------
Running Start_truecache_service job
Completed Start_truecache_service job
93% complete
-----------------
Running Enable_service_registration job
Completed Enable_service_registration job
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/DB1218/DB12183.log" for further details.
[oracle@proddb ~]$
작업 7: Oracle True Cache 노드에서 서비스 시작
다음 명령을 실행하여 Oracle True Cache 인스턴스 노드에서 서비스를 시작합니다.
alter session set container=<PDB_NAME>;
show pdbs
BEGIN
DBMS_SERVICE.START_SERVICE('sales_tc1');
END;
/
작업 8: Primary Database의 파라미터 갱신
-
primary database
listener.ora
파일에서 다음 파라미터를 갱신합니다.VALID_NODE_CHECKING_REGISTRATION_LISTENER = OFF REGISTRATION_INVITED_NODES_LISTENER=(<true_cache_instance_ip>)
-
primary database 서버에서 리스너를 재시작하거나 재로드합니다.
작업 9: 기본 데이터베이스 리스너에서 Oracle True Cache 서비스 확인
다음 명령을 실행하여 Oracle True Cache(sales_tc
) 서비스가 기본 데이터베이스 리스너 아래에서 실행 중인지 확인합니다.
SQL> select name,open_mode,database_role from gv$database;
NAME OPEN_MODE DATABASE_ROLE
------------------------------ -------------------- ----------------
DB1218 READ WRITE PRIMARY
SQL> select * from v$true_cache;
MY_DG_ID REMOTE_DG_ID DEST_ID TRUE_CACHE PRIMARY_NAME STATUS REMOTE_VERSION CON_ID
---------- ------------ ---------- ---------- -------------------- ---------- ------------------ ----------
4079357444 576841986 2 test1 DB1218_xts_iad HEALTHY 0.0.0.0.0 0
4079357444 2149296628 3 test2 DB1218_xts_iad HEALTHY 0.0.0.0.0 0
SQL> SELECT name, true_cache_service FROM DBA_SERVICES WHERE name='sales';
NAME TRUE_CACHE_SERVICE
------------------------------ ------------------------------
sales sales_tc2
[oracle@proddb ~]$ lsnrctl status LISTENER|grep -i sales_tc1
Service "sales_tc1.sub12101216100.dbnet.oraclevcn.com" has 1 instance(s).
[oracle@proddb ~]$
작업 10: Oracle True Cache 인스턴스 노드의 True Cache 서비스 확인
다음 명령을 실행하여 Oracle True Cache(sales_tc
) 서비스가 Oracle True Cache 인스턴스 노드에서 실행 중인지 확인합니다.
SQL> select name,open_mode,database_role from gv$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
DB1218 READ ONLY WITH APPLY TRUE CACHE
SQL> select * from v$true_cache;
MY_DG_ID REMOTE_DG_ID DEST_ID TRUE_CACHE PRIMARY_NAME STATUS REMOTE_VERSION CON_ID
---------- ------------ ---------- ---------- -------------------- ---------- ------------------ ----------
576841986 4079357444 0 test1 DB1218_xts_iad HEALTHY 23.0.0.0.0 0
[oracle@test1 ~]$ lsnrctl status LISTENER|grep sales_tc
Service "sales_tc1.sub12101216100.dbnet.oraclevcn.com" has 1 instance(s).
[oracle@test1 ~]$
작업 11: Oracle True Cache 서비스 테스트
다음 TNS(Transparent Network Substrate) 항목을 응용 프로그램에 추가합니다.
TEST_TC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = test1.sub12101216100.dbnet.oraclevcn.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales_tc1.sub12101216100.dbnet.oraclevcn.com)
)
)
sqlplus sys/<sys_password>@TEST_TC as sysdba
select name,open_mode,database_role from v$database;
show pdbs
관련 링크
확인
- Authors - Pavan Yennampelli(Oracle North America Cloud Services - NACIE 수석 클라우드 엔지니어), Sravan Kumar K B(Oracle North America Cloud Services - NACIE 수석 클라우드 엔지니어), Bandari Chandu(Senior Cloud Engineer, Oracle North America Cloud Services - NACIE), Anupam Abhishek(Senior Cloud Engineer, Oracle North America Cloud Services - NACIE)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Implement Oracle True Cache Service with Oracle Database 23ai
G24565-01
January 2025