티스토리 뷰
1. 전환 방법 적용
전환 방법 적용시 고려사항
1) 전환을 수행할 때 한가지 방법으로 수행하는 것이 아니라 여러 가지 방법을 혼합하여 사용할 수 있다.
2) 고객사에서 실제 운영을 전환할 때 최소한의 Down Time이 필요하다. (해당 고객사에서 각 전환 방법의
테스트 및 시간측정을 통해 최소한의 전환 시간을 확보해야 한다.)
전환방법 | 적용시기 | 비고 |
tbMigrator | GUI 기반으로 간편하게 전환을 할 경우(전체, 사용자 모드)와 수동 이관할 때 데이 터 이관 용도로 사용한다 | |
Table Migrator | DB Link 구성이 어렵고 대용량 테이블 데이터를 이관할 때 사용한다 | |
DB Link | Table Migrator 사용이 어렵고 대용량 테이블 데이터를 이관할 때 사용한다. | |
tbLoader | Source DB에서 SAM 파일 생성이 가능할 경우 사용한다. | |
수동이관 | 전환 난이도가 어려워 다른 전환 방법을 적용하기가 힘든 경우와 동일한 전환을 특정 기간에 걸쳐 반복적으로 수행해야 할 경우 사용한다. (자동화 스크립트를 이 용하면 2차 이상의 반복적인 수행일 경우에 간편하다.) |
2. Oracle전환
본 장에서는 Oracle에서 Tibero DB로 전환하는 절차 및 방법을 설명한다.
2.1. 사전 점검
본 절에서는 Oracle에서 Tibero DB로 전환하기 전 점검사항에 대해서 설명한다. 사전 점점은 전환하기 전 Oracle의 특성을 파악하고 Tibero에 적용해야 하는 값들을 확인하는 중요한 절차이다.
2.1.1. 기본 항목
Oracle의 sys 또는 system 등의 DBA 권한을 가진 사용자로 접속하여 아래 정보를 확인한다.
항목 | 설명 |
버전 정보 | Oracle 9i, 10g, 11g는 전환 사례가 많으므로 그 이외 버전에서 전환할 경우에 대 해서는 검토가 필요하다. |
전환 사용자 선택 | Oracle을 설치할 때 자동 생성되는 기본 사용자의 경우는 제외한다. 전환 사용자 에 대해서 고객사 담당자 확인이 필요하다. |
전환 크기 | 전환 시간에 가장 큰 영향을 미치는 요소이다. 그 외 DISK I/O, NETWORK I/O 등 에 따라서 고객사의 전환 시간이 많이 달라질 수 있다. |
전환 검증항목 | 전환이 완료된 후에 비교해 보는 정보이다. |
버전 정보
select * from v$version; |
사용자 조회
select username, account_status, default_tablespace, temporary_tablespace from dba_users order by 1; |
Open된 사용자 조회
set linesize 120 set pagesize 100 select username, default_tablespace, temporary_tablespace from dba_users where account_status='OPEN' order by 1; |
Oracle 기본 사용자
아래와 같은 사용자 이름의 경우 Oracle을 설치할 때 자동으로 생성되는 사용자로 전환할 때 제외한다. (Oracle 버전에 따라 사용자명이 일부 다를 수 있다.)
ANONYMOUS , BI, CTXSYS, DBSNMP, DIP, DMSYS, EXFSYS, HR, IX, SCOTT,OE, PM, SH , MDDATA, MDSYS, MGMT_VIEW, OLAPSYS, ORDPLUGINS, ORDSYS, SI_INFORMATN_SCHEMA, SYS, SYMAN, SYSTEM, TSMSYS,WMSYS,XDB |
전환 크기
전환 대상 사용자에 속하는 Table, Index가 저장된 Tablespace만 확인한다.
전체 Tablespace 크기와 사용량 확인
set linesize 150 set pagesize 100 col tablespace_name format a40 select x.a tablespace_name , sum(x.b)/1024 "tot_size(mb)" , sum(x.c)/1024 "used_size(mb)" , sum(x.c)/sum(x.b)*100 rate from ( select b.tablespace_name a ,sum(bytes)/1024 b ,0 c from dba_data_files b group by b.tablespace_name union select d.tablespace_name, 0, sum(bytes)/1024 from dba_segments d group by d.tablespace_name ) x group by x.a; |
전체 합계
select sum(x.b)/1024 "tot(mb)", sum(x.c)/1024 "used(mb)" from ( select sum(bytes)/1024 b, 0 c from dba_data_files b union select 0, sum(bytes)/1024 from dba_segments d ) x; |
전환 검증항목
Object 상태별 개수 확인
col owner format a20 set pages 500 select owner, object_type, status, count(*) from dba_objects where owner in (select username from dba_users where account_status='OPEN' ) group by owner, object_Type, status order by owner, object_type, status; |
참고 1.
실제 dba_object에는 삭제된 Object까지 포함($BIN~ 형식)되어 있어 정확한 Count를 위해서는 dba_tables, dba_index 같은 정보를 보는 것이 좋다. 2. INVALID한 Object에 대해서 고객사 DB 담당자에게 정리요청을 하는것이 전환시간을 단축할 수 있다.
Object 개수 확인
WITH mig_user AS ( SELECT username FROM dba_users WHERE account_status='OPEN' AND username NOT IN('SYS', 'SYSTEM', 'WMSYS','EXFSYS', 'XDB', 'ORDSYS' ,'MDSYS','SYSMAN') ) SELECT O.OWNER ,NVL(TBL.TABLE_CNT, 0) AS "TABLE_CNT" ,O.VIEW_CNT ,O.DBLINK_CNT ,O.SEQ_CNT ,O.PKG_CNT ,O.PKGBODY_CNT ,O.PROC_CNT ,O.FUNC_CNT ,O.TYPE_CNT ,O.TYPEBODY_CNT ,O.LIB_CNT ,TRI.TRIGGER_CNT ,NVL(SYN.SYN_CNT,0) AS "SYN_CNT" ,NVL(PUB_SYN.PUB_SYN_CNT,0) AS "PUB_SYN_CNT" ,NVL(IDX.IDX_CNT, 0) AS "IDX_CNT" ,NVL(G.GRANT_CNT, 0) AS "GRANT_CNT" ,NVL(LOB.LOB_CNT, 0) AS "LOB_CNT" ,NVL(JOB.JOB_CNT, 0) AS "JOB_CNT" FROM ( SELECT T.OWNER ,SUM( DBLINK_CNT ) AS "DBLINK_CNT" ,SUM( VIEW_CNT ) AS "VIEW_CNT" ,SUM( SEQ_CNT ) AS "SEQ_CNT" ,SUM( PKG_CNT ) AS "PKG_CNT" ,SUM( PKGBODY_CNT ) AS "PKGBODY_CNT" ,SUM( PROC_CNT ) AS "PROC_CNT" ,SUM( FUNC_CNT ) AS "FUNC_CNT" ,SUM( TYPE_CNT ) AS "TYPE_CNT" ,SUM( TYPEBODY_CNT ) AS "TYPEBODY_CNT" ,SUM( LIB_CNT ) AS "LIB_CNT" FROM ( SELECT OWNER ,CASE WHEN OBJECT_TYPE = 'DATABASE LINK' THEN COUNT(1) ELSE 0 END AS "DBLINK_CNT" ,CASE WHEN OBJECT_TYPE = 'VIEW' THEN COUNT(1) ELSE 0 END AS "VIEW_CNT" ,CASE WHEN OBJECT_TYPE = 'SEQUENCE' THEN COUNT(1) ELSE 0 END AS "SEQ_CNT" ,CASE WHEN OBJECT_TYPE = 'PACKAGE' THEN COUNT(1) ELSE 0 END AS "PKG_CNT" ,CASE WHEN OBJECT_TYPE = 'PACKAGE BODY' THEN COUNT(1) ELSE 0 END AS "PKGBODY_CNT" ,CASE WHEN OBJECT_TYPE = 'PROCEDURE' THEN COUNT(1) ELSE 0 END AS "PROC_CNT" ,CASE WHEN OBJECT_TYPE = 'FUNCTION' THEN COUNT(1) ELSE 0 END AS "FUNC_CNT" ,CASE WHEN OBJECT_TYPE = 'TYPE' THEN COUNT(1) ELSE 0 END AS "TYPE_CNT" ,CASE WHEN OBJECT_TYPE = 'TYPE BODY' THEN COUNT(1) ELSE 0 END AS "TYPEBODY_CNT" ,CASE WHEN OBJECT_TYPE = 'LIBRARY' THEN COUNT(1) ELSE 0 END AS "LIB_CNT" FROM dba_objects WHERE owner in (select username from mig_user) GROUP BY owner, OBJECT_TYPE) T GROUP BY T.OWNER ) O LEFT JOIN ( SELECT OWNER, COUNT(1) AS TABLE_CNT FROM DBA_TABLES WHERE owner in (select username from mig_user) GROUP BY OWNER ) TBL ON O.OWNER = TBL.OWNER LEFT JOIN ( SELECT OWNER, COUNT(1) AS GRANT_CNT FROM DBA_TAB_PRIVS WHERE owner in (select username from mig_user) AND TABLE_NAME NOT LIKE 'BIN$%' GROUP BY OWNER ) G ON O.OWNER = G.OWNER LEFT JOIN ( SELECT OWNER, COUNT(1) AS IDX_CNT FROM DBA_INDEXES WHERE owner in (select username from mig_user) GROUP BY OWNER ) IDX ON O.OWNER = IDX.OWNER LEFT JOIN ( SELECT OWNER, COUNT(1) AS LOB_CNT FROM DBA_LOBS WHERE owner in (select username from mig_user) GROUP BY OWNER ) LOB ON O.OWNER = LOB.OWNER LEFT JOIN ( SELECT SCHEMA_USER, COUNT(1) AS JOB_CNT FROM DBA_JOBS WHERE SCHEMA_USER in (select username from mig_user) GROUP BY SCHEMA_USER ) JOB ON O.OWNER = JOB.SCHEMA_USER LEFT JOIN ( SELECT OWNER, COUNT(1) AS TRIGGER_CNT FROM DBA_TRIGGERS WHERE OWNER in (select username from mig_user) AND TRIGGER_NAME NOT LIKE 'BIN$%' GROUP BY OWNER ) TRI ON O.OWNER = TRI.OWNER LEFT JOIN ( SELECT OWNER, COUNT(1) AS "SYN_CNT" FROM DBA_SYNONYMS WHERE OWNER in (select username from mig_user) AND OWNER != 'PUBLIC' GROUP BY OWNER ) SYN ON O.OWNER = SYN.OWNER LEFT JOIN ( SELECT TABLE_OWNER as "OWNER", COUNT(1) AS "PUB_SYN_CNT" FROM DBA_SYNONYMS WHERE TABLE_OWNER in (select username from mig_user) AND OWNER = 'PUBLIC' GROUP BY TABLE_OWNER ) PUB_SYN ON O.OWNER = PUB_SYN.OWNER ORDER BY O.OWNER; |
Constraint 개수 확인
set linesize 150 column owner format a30 select owner ,constraint_type ,count( constraint_name ) as "con_cnt" from dba_constraints where owner in (select username from dba_users where account_status='OPEN' ) group by owner, constraint_type order by owner ,constraint_type; |
2.1.2. DB 생성 관련 항목
Oracle의 sys 또는 system 등의 DBA 권한을 가진 사용자로 접속하여 아래의 정보를 확인하고, Tibero 설 치 과정 중 CREATE DATABASE를 수행할 경우 아래의 정보를 참고하여 DB를 생성한다.
항목 | 설명 |
캐릭터 셋 | Oracle과 대응되는 캐릭터 셋을 선택한다. |
초기 파라미터 | 세션 개수 및 메모리 설정 등을 확인한 |
Redo 구성 | Group과 Member의 개수 또는 크기 등을 확인한다. |
Undo와 Temp 구성 | Undo와 Temp Tablespace 크기를 확인한다. |
Log 모드 | Tibero 미지원 사항으로 일반 Index로 변경을 고려한다 |
문서다운로드 : https://www.google.com/search?q=%ED%8B%B0%EB%B2%A0%EB%A1%9C+%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98&oq=%ED%8B%B0%EB%B2%A0%EB%A1%9C+%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98&aqs=chrome..69i57j69i59j35i39l2j69i61j69i60.2314j0j7&sourceid=chrome&ie=UTF-8https://technet.tmaxsoft.com/download.do?filePath=/nas/technet/technet/upload/kss/tbook/tibero/2014/05/&fileName=FILE-20140103-000078_140528091051_1.pdf
- Total
- Today
- Yesterday
- 키알리
- 설치하기(HP-UX)
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- 커널
- startup 에러
- 5.4.0.1072
- ubuntu
- 테라폼
- 트리이스
- 우분투
- K8s
- 앤시블
- [오라클 튜닝] instance 튜닝2
- MSA
- pod 상태
- 쿠버네티스
- 코로나19
- 튜닝
- (InstantClient) 설치하기(HP-UX)
- CVE 취약점 점검
- 오라클 홈디렉토리 copy 후 startup 에러
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 버쳐박스
- [오라클 튜닝] sql 튜닝
- 스토리지 클레스
- directory copy 후 startup 에러
- 여러서버 컨트롤
- 오라클
- 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 |