TDE 테이블스페이스 암호화 기능은 모든 데이터가 EBS 애플리케이션에서 저장되는 테이블스페이스를 암호화하는 데 사용할 수 있습니다. TDE는 애플리케이션에 투명하므로 코드를 다시 작성할 필요가 없습니다. 인증된 모든 사용자는 문제 없이 암호화된 데이터에 액세스할 수 있습니다.
소개
인증된 모든 사용자는 문제 없이 암호화된 데이터에 액세스할 수 있습니다. TDE는 데이터 파일 및 백업 파일과 같은 미사용 데이터에 적용됩니다.
목표
TDE 테이블스페이스 암호화 옵션을 사용하면 EBS 데이터베이스에 저장된 모든 민감한 데이터를 보호할 수 있습니다. 인증된 사용자만 암호화된 데이터에 액세스할 수 있습니다.
제한
SYSTEM과 SYSAUX는 테이블스페이스 생성 시가 아니라 DB 생성 시 생성되므로 암호화할 수 없다. 테이블스페이스 생성 시 암호화 옵션이 추가됩니다. Undo 및 TEMP 테이블스페이스도 암호화할 수 없지만 TEMP/UNDO의 암호화된 테이블스페이스에서 저장된 데이터는 암호화됩니다.
구현 단계
1. 소프트웨어 버전 확인
• 패치 16207672 - 12.2.2
• 패치 20745242 - R12.AD.C.Delta.7
• 패치 20784380 - R12.TXK.C.Delta.7
• 패치 19597008
• 패치 20251314(12.2.5에 포함)
• 패치 8796558
• 패치 19343134
2. 12.1.0 DB 홈 준비
• 12.1.0 소프트웨어 설치
• 12c 예제 CD에서 Oracle Database 12c 제품 설치(필수)
• 추가 12.1.0.2 RDBMS 패치 적용
3. 모든 최신 필수 DB ETCC/PSU 패치 적용
4. 4. nls/data/9idata 디렉토리 생성
perl $ORACLE_HOME/nls/data/old/cr9idata.pl
7. 대상 데이터베이스 인스턴스 생성 스크립트 aucrdb.sql 생성
내보내기/가져오기 패치는 aucrdb.sql 스크립트를 생성하는 auclondb.sql 스크립트를 제공합니다. $AU_TOP/patch/115/sql/auclondb.sql
복사 앱 노드에서 DB 노드 소스로 스크립트를 작성하고 아래와 같이 실행합니다.
$ sqlplus system/[system password] \ @$AU_TOP/patch/115/sql/auclondb.sql 12
8. 고급 대기열 설정 기록
auque1.sql
복사 $AU_TOP/patch/115/sql
의 스크립트 앱 노드에서 DB 노드로 이동하여 실행합니다. 다음 명령은 auque2.sql을 생성합니다.
$ sqlplus /nolog
SQL> connect / as sysdba;
SQL> @auque1.sql
9. 공간 인덱스에서 인덱스 재구축 매개변수 제거
select * from dba_indexes where index_type='DOMAIN' andupper(parameters) like '%REBUILD%';
10. 텍스트 색인 동기화
$ sqlplus '/ as sysdba'
SQL> select pnd_index_owner,pnd_index_name,count(*)
from ctxsys.ctx_pending
에서 group by pnd_index_owner,pnd_index_name;
위 쿼리에서 행이 반환된 경우 아래 명령 사용
exec ctx_ddl.sync_index('[index owner].[index name]');
11. 내보내기 매개변수 파일 생성
앱 노드에서 $AU_TOP/patch/115/import/auexpdp.dat를 복사하고 요구 사항에 따라 편집합니다.
diff auexpdp.dat auexpdp.dat.orig
« /u01/oracle/patches/12c_db/backup/expimp
8c8
< filesize=5368709120
<블록 인용>
filesize=1048576000
12,13d11
< PARALLEL=5
< EXCLUDE=STATISTICS
필요에 따라 디렉토리를 만드십시오.
SQL> create
또는 디렉토리 dmpdir as '/u01/oracle/patches/12c_db/backup/expimp/2nditeration';
디렉토리가 생성되었습니다.
12. 활성화된 패치 주기가 없는지 확인하십시오.
노드 이름 노드 유형 단계 상태 시작 완료 완료 경과
Appnode master PREPARE COMPLETED
2017/05/20 23:01:31 2017/||05/20 23:24:45 0:23:14
APPLY COMPLETED
2017/05/20 23:53:09 2017/05/20 23:53:39 0:00:30
FINALIZE COMPLETED 2017/05/20 23:55:55
2017/05/20 23:56:14 0:00:19
CUTOVER COMPLETED
2017/05/20 23:58:57 2017/05/21 00:09:50 0:10:53
CLEANUP COMPLETED 2017/05/21 01:59:13 2017/05/21 01:59:44 0:00:31
13. 애플리케이션 서버 프로세스 종료
14. 다음 명령을 사용하여 소스 시스템 스키마에 권한 부여
SQL> grant EXEMPT ACCESS POLICY to system;
Grant succeeded.
15. 다음 명령을 사용하여 MGDSYS 스키마(조건부)를 제거합니다.
$ sqlplus "/ as sysdba" @?/md/admin/catnomgdidcode.sql
16. 다음 명령을 실행하여 OLAP 분석 작업 영역 내보내기(선택 사항)
SQL> col owner format a15
SQL> col aw_name format a15
SQL> select OWNER, AW_NAME ,PAGESPACES from dba_aws where owner != 'SYS' order by 1,2;
OWNER AW_NAME PAGESPACES
>APPS ODPCODE 1123
APPS XWDEVKIT 1106
APPS XWDEVKIT_BACKUP 1106
FPA FPAPJP 505
'/u01/oracle/patches/12c_db/backup/MGR_DIR';
디렉토리 생성됨
2a. SQL> exec dbms_aw.execute('aw attach APPS.ODPCODE rw');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('allstat');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/ODPCODE.eif''');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach APPS.ODPCODE');
PL/SQL 절차가 성공적으로 완료되었습니다.
2b. SQL> exec dbms_aw.execute('aw attach APPS.XWDEVKIT rw');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('allstat');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/XWDEVKIT.eif''');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT');
PL/SQL 절차가 성공적으로 완료되었습니다.
2c. SQL> exec dbms_aw.execute('aw attach APPS.XWDEVKIT_BACKUP rw');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('allstat');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/XWDEVKIT_BACKUP.eif''');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT_BACKUP');
PL/SQL 절차가 성공적으로 완료되었습니다.
2d. SQL> exec dbms_aw.execute('aw attach FPA.FPAPJP rw');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('allstat');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('export all to eif file ''AW_DIR/FPAPJP.eif''');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach FPA.FPAPJP');
PL/SQL 절차가 성공적으로 완료되었습니다.
<올 시작="3">
SQL> exec dbms_aw.execute('aw delete APPS.ODPCODE');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw delete APPS.XWDEVKIT');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw delete APPS.XWDEVKIT_BACKUP');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('aw delete FPA.FPAPJP');
PL/SQL 절차가 성공적으로 완료되었습니다.
<올 시작="4">
cd $ORACLE_HOME/olap/admin --->>> required to locate all embedded calls to other scripts
conn / as sysdba
@?/olap/admin/catnoamd.sql
@?/olap/admin/olapidrp.plb
@?/olap/admin/catnoaps.sql
@?/olap/admin/catnoxoq.sql
@?/rdbms/admin/utlrp.sql
dba_objects에서 소유자, object_name, object_type을 선택합니다. 여기서 status <> 'VALID';
SQL> select owner, object_name, object_type,status from dba_objects where status
<> 'VALID' and object_name like '%OLAP%';
SYS OLAPIBOOTSTRAP FUNCTION INVALID
SYS OLAPIHANDSHAKE FUNCTION INVALID
PUBLIC OLAPIBOOTSTRAP SYNONYM INVALID
PUBLIC OLAPIHANDSHAKE SYNONYM INVALID
APPS PA_OLAP_PVT PACKAGE BODY INVALID
SQL> drop FUNCTION sys.OLAPIBOOTSTRAP;
기능이 떨어졌습니다.
SQL> drop FUNCTION sys.OLAPIHANDSHAKE;
기능이 떨어졌습니다.
SQL> drop PUBLIC SYNONYM OLAPIBOOTSTRAP;
동의어가 삭제되었습니다.
SQL> drop PUBLIC SYNONYM OLAPIHANDSHAKE;
동의어가 삭제되었습니다.
SQL> drop package body apps.PA_OLAP_PVT;
패키지 본문이 삭제되었습니다.
SQL> select owner, object_name, object_type,status from dba_objects where status
<> 'VALID' and object_name like '%OLAP%';
no rows selected
업그레이드를 수행 중인 대상 12c 64비트 데이터베이스에서 다음 단계를 실행하십시오.
64비트 버전 설치 Oracle, Oracle OLAP 옵션을 포함하고 데이터베이스를 64비트로 마이그레이션합니다.
<블록인용><블록인용>'/ as sysdba' 데이터베이스에 연결하고 다음을 실행하여 OLAP를 데이터베이스에 다시 추가합니다.
SQL> spool olap_install.log
SQL> set echo on
SQL> show user
SQL> @?/olap/admin/olap.sql SYSAUX TEMP;
SQL> spool off
다음 SQL 명령을 사용하여 내보낸 각 AW를 가져옵니다.
참고:모든 따옴표는 작은 따옴표이며 EIF 파일과 OWNER.AW_NAME
의 올바른 조합을 사용해야 합니다.
SQL> create or replace directory AW_DIR as '/u01/oracle/patches/12c_db/backup/MGR_DIR';
디렉토리가 생성되었습니다.
SQL> exec dbms_aw.execute('aw create APPS.ODPCODE');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/ODPCODE.eif'' data dfns');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('update');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> commit;
커밋이 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach APPS.ODPCODE');
PL/SQL 절차가 성공적으로 완료되었습니다.
<올 시작="2">SQL> exec dbms_aw.execute('aw create APPS.XWDEVKIT');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/XWDEVKIT.eif'' data dfns');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('update');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> commit;
커밋이 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT');
PL/SQL 절차가 성공적으로 완료되었습니다.
<올 시작="3">SQL> exec dbms_aw.execute('aw create APPS.XWDEVKIT_BACKUP');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/XWDEVKIT_BACKUP.eif'' data dfns');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('update');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> commit;
커밋이 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach APPS.XWDEVKIT_BACKUP');
PL/SQL 절차가 성공적으로 완료되었습니다.
<올 시작="4">SQL> exec dbms_aw.execute('aw create FPA.FPAPJP');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('import all from eif file ''AW_DIR/FPAPJP.eif'' data dfns');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> exec dbms_aw.execute('update');
PL/SQL 절차가 성공적으로 완료되었습니다.
SQL> commit;
커밋이 완료되었습니다.
SQL> exec dbms_aw.execute('aw detach FPA.FPAPJP');
PL/SQL 절차가 성공적으로 완료되었습니다.
17. XLA 패키지 삭제(선택 사항)
$ sqlplus apps/[APPS password]
SQL> select distinct('drop package '||db.owner||'.'|| db.object_name || ';')
from dba_objects db, xla_subledgers xl where db.object_type='PACKAGE BODY' and db.
object_name like 'XLA%AAD%PKG' and substr(db.object_name,1,9) = 'XLA_'|| LPAD
(SUBSTR(TO_CHAR(ABS(xl.application_id)), 1, 5), 5, '0') and db.object_name
NOT IN ('XLA_AAD_HDR_ACCT_ATTRS_F_PKG','XLA_AMB_AAD_PKG') order by 1;
SQL> @drop_xla_package.sql
18. 애플리케이션 데이터베이스 인스턴스 내보내기
$ expdp "'/ as sysdba'" parfile=[export parameter file name]
19. 소스 시스템 스키마에서 권한 취소
SQL> revoke EXEMPT ACCESS POLICY from system;
20. Oracle Advanced Security TDE 테이블스페이스 암호화 활성화 (Oracle 지갑 방식 사용)
$ORACLE_HOME/network/admin/
형식 문제를 피하기 위해 한 줄로 유지
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD = FILE)(METHOD_DATA=(DIRECTORY= /u01/oracle/dbhome1/12.1.0.2/wallet)))
21. 대상 초기화 매개변수 파일/작업 디렉토리 생성
22. 대상 데이터베이스 데이터 파일의 실제 위치에 따라 aucrdb.sql 스크립트 수정
aucrdb.sql의 각 'CREATE TABLESPACE' 명령에 다음을 추가합니다.
ENCRYPTION [USING '<enc. algorithm>;'] DEFAULT STORAGE (ENCRYPT)
가능한 선택은 3DES168, AES128(아무것도 지정되지 않은 경우 기본값), AES192 및 AES256입니다.
23. 마지막으로 aucrdb.sql의 편집된 사본을 두 개의 개별 .sql 파일로 분할합니다. 첫 번째 파일에는 CREATE DATABASE 문이 포함되고 두 번째 파일에는 CREATE TABLESPACE 문이 포함됩니다.
24. 대상 데이터베이스 인스턴스 생성
$ sqlplus /nolog
SQL> connect / as sysdba;
SQL> spool aucrdb1.log;
For UNIX or Linux:
SQL> startup nomount;
SQL> @aucrdb1.sql
SQL> spool off
25. DB 생성 후 테이블스페이스를 생성하기 전에 먼저 암호화 키를 생성해야 합니다.
Oracle Wallet을 기반으로 하는 암호화된 테이블스페이스 및 암호화 키 관리:
SQL alter system set encryption key identified by "<Strong_Password > >";
26. 다음 스크립트를 사용하여 암호화된 테이블스페이스 생성
SQL> spool aucrdb2.log
SQL> @aucrdb2.sql << Make sure this include encryption syntex
SQL> exit;
27. 대상 데이터베이스 인스턴스가 생성되면 데이터베이스 인스턴스를 다시 시작하십시오.
Shutdown immediate
cp -pR wallet wallet.orig.date
orapki wallet create -wallet /u01/oracle/dbhome1/12.1.0.2/wallet -auto_login
지갑 자동 로그인 만들기
startup mount
Oracle Wallet을 사용하는 경우:
다음은 수동 지갑의 경우 필요합니다.SQL> "
select * from v$encryption_wallet;
28. 모든 데이터베이스 준비 스크립트를 대상 Oracle 홈에 복사하여 시스템/시스템 스키마를 설정합니다.
29. SYS 스키마 설정
$ sqlplus "/ as sysdba" @audb1210.sql
30. SYSTEM 스키마 설정
$ sqlplus system/[system password] @ausy1210.sql
31. 자바 가상 머신 설치
$ sqlplus system/[system password] @aujv1210.sql
32. 기타 필수 구성 요소 설치
sqlplus system/**** @aumsc1210.sql SYSAUX TEMP
33. 패치 설치 후 지침 수행
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup upgrade
cd $ORACLE_HOME/OPatch
[oracle@dbnode OPatch]$ ./datapatch –verbose
SQL> shut immediate
SQL> startup
SQL> @?/rdbms/admin/utlrp.sql
34. CTXSYS 매개변수 설정(조건부)
$ sqlplus "/ as sysdba"
SQL> exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');
35. 통계 자동 수집 비활성화
$ sqlplus "/ as sysdba"
SQL> alter system enable restricted session;
SQL> @adstats.sql
$ sqlplus "/ as sysdba"
SQL> alter system disable restricted session;
SQL> exit;
36. 대상 데이터베이스 인스턴스 백업(선택 사항)
37. 가져오기 매개변수 파일 만들기
SQL> show user
USER is "SYSTEM"
SQL> create or replace directory dmpdir as '/u01/oracle/patches/12c_db/backup/expimp';
디렉토리가 생성되었습니다.
서버가 다른 경우 소스에서 대상 서버로 덤프 파일 복사
38. 애플리케이션 데이터베이스 인스턴스 가져오기
$ impdp "'/ as sysdba'" parfile=auimpdp.dat
39. OLAP 분석 작업 영역 가져오기(조건부)
여기에서 대상(12c)과 관련된 단계를 수행해야 합니다.
40. 대상 시스템 스키마에서 권한 취소
SQL> revoke EXEMPT ACCESS POLICY from system;
41. 고급 대기열 재설정
$ sqlplus /nolog
SQL> connect / as sysdba;
SQL> @auque2.sql
42. adgrants.sql 실행
$ sqlplus "/ as sysdba" @adgrants.sql APPS
43. CTXSYS에 대한 프로시저 생성 권한 부여
$ sqlplus apps/[APPS password] @adctxprv.sql \
[SYSTEM password] CTXSYS
44. 새 데이터베이스 수신기 시작(조건부)
45. 현재 데이터베이스 서버 등록 취소
$ sqlplus apps/[APPS password]
SQL> exec fnd_conc_clone.setup_clean;
46. AutoConfig 구현 및 실행
perl $AD_TOP/bin/admkappsutil.pl
Copy appsutil.zip to $ORACLE_HOME/ on DB node.
unzip -o appsutil.zip
Build $CONTEXT_FILE
perl adbldxml.pl
./adconfig.sh
Restart DB/Listener - Source new env file
Run autoconfig on App node run fs
./adconfig.sh
Run autoconfig on App node patch fs
./adconfig.pl contextfile=$CONTEXT_FILE run=INSTE8
47. SYS 스키마에 대한 통계 수집
$ sqlplus "/ as sysdba"
SQL> alter system enable restricted session;
SQL> @adstats.sql
$ sqlplus "/ as sysdba"
SQL> alter system disable restricted session;
SQL> exit;
48. 사용자 정의 데이터베이스 링크 재생성(조건부)
49. 컨텍스트 개체 만들기
이러한 개체를 만들려면 드라이버 파일을 사용하여 스크립트를 호출해야 합니다. 다음 명령을 실행하십시오.
$ perl $AU_TOP/patch/115/bin/dpost_imp.pl [driver file] [source database version]
adop phase=apply hotpatch=yes
50. CTXSYS.DR$SQE 테이블 채우기
$ sqlplus apps/[apps password]
SQL> exec icx_cat_sqe_pvt.sync_sqes_for_all_zones;
51. 잘못된 개체 컴파일
52. XLA 패키지 재생성(조건부)
소스 환경에 XLA 패키지를 드롭했다면 $XLA_TOP/patch/115/sql/xla6128278.sql을 소스에서 타겟으로 복사하여 아래와 같이 실행한다.
$ sqlplus apps/[APPS password]
SQL> @xla6128278.sql [spool log file]
53. 실행 APPL_TOP에서 AutoConfig 실행
==>echo $FILE_EDITION
run
==>./adconfig.sh
54. 업그레이드 후 WMS 패치 적용(조건부)
12c 이전의 RDBMS 버전에서 업그레이드한 경우 패치 19007053adop phase=apply patch=19007053 patchtop=/home/applmgr/exp_patch apply_mode=downtime workers=12
를 적용하십시오.55. 애플리케이션 데이터베이스 개체 유지
ㅏ. AOL 테이블에서 가변필드 데이터를 컴파일합니다.b. APPS 스키마에 대한 권한 부여 및 동의어 재생성
56. 응용 프로그램 서버 프로세스 시작
57. DQM 인덱스 생성
ㅏ. "Trading Community Manager" 권한으로 Oracle Applications에 로그온합니다.
비. 제어> 요청> 실행
을 클릭합니다.씨. "단일 요청" 옵션 선택
디. "DQM 스테이징 프로그램" 이름 입력
이자형. 다음 매개변수를 입력하십시오.
나. 병렬 스테이징 작업자 수:4ii. 준비 명령:CREATE_INDEXESiii. 이전 실행 계속:NOiv. 인덱스 생성:SERIALf. "제출"을 클릭하십시오.
결론
위의 모든 단계를 수행하여 테이블스페이스 수준 암호화를 활성화하는 것과 함께 12C 데이터베이스 업그레이드를 수행합니다.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.