--Migration
S SCOTT> select sum(blocks) from
user_extents
2 where
segment_name='TM';
SUM(BLOCKS)
-----------
512
S SCOTT> select count(*) from tm;
COUNT(*)
----------
200000
S SCOTT> update tm set data='123456789012345678901234567890';
200000 행이 갱신되었습니다.
S SCOTT> select sum(blocks) from
user_extents
2 where
segment_name='TM';
SUM(BLOCKS)
-----------
2048
--Row Chaining
S SCOTT> analyze table tm compute statistics;
테이블이 분석되었습니다.
S SCOTT> select chain_cnt from user_tables where table_name='TM';
CHAIN_CNT
----------
162485
S SCOTT> alter table tm move;
테이블이 변경되었습니다.
S SCOTT> analyze table tm compute statistics;
테이블이 분석되었습니다.
원래 인덱스 오류가 있어야 하나 테스트 셋에서 인덱스 주석처리 해서 생기지 않은 경우..ㅡㅡ;; 오류 생기면.
alter index ~ rebuild 하고 다시 analyze 해줘야 함.
S SCOTT> select chain_cnt from user_tables where table_name='TM';
CHAIN_CNT
----------
0
---- 디비 전체 chaining 갯수 보기.
먼저 통계 수집을 실행.
S SYS> exec dbms_stats.gather_database_stats;
S SYS> select owner,table_name,chain_cnt from dba_tables where chain_cnt > 0;
선택된 레코드가 없습니다.
begin
dbms_stats.gather_database_stats;
end;
/
select
owner,table_name,chain_cnt from dba_tables where chain_cnt >
0
/
sav chain
--Shrink
S SYS> create tablespace ts1 datafile size 10M;
테이블스페이스가 생성되었습니다.
S SYS> alter table scott.tm move tablespace ts1;
테이블이 변경되었습니다.
-Full 만들기.
S SCOTT> exec tm_i(100000,'a')
BEGIN
tm_i(100000,'a'); END;
*
1행에 오류:
ORA-01653: unable to
extend table SCOTT.TM by 128 in tablespace TS1
ORA-06512: at "SCOTT.TM_I",
line 4
ORA-06512: at line 1
-삭제후에도 용량
그대로
S SYS> delete from scott.tm where mod(id,2)=0;
340615 행이 삭제되었습니다.
S SYS> @tsUsage
NAME
MB USED
------------------------------ ----------
----------
TS1 10
9
-shrink
S SYS> alter table scott.tm shrink
space;
alter table scott.tm shrink space
*
1행에
오류:
ORA-10636: ROW MOVEMENT is not enabled
S SYS> alter table
scott.tm enable row movement;
테이블이 변경되었습니다.
S SYS> alter table scott.tm shrink space;
테이블이 변경되었습니다.
S SYS> @tsUsage
NAME
MB USED
------------------------------ ----------
----------
TS1 10 4.125
S SYS>
인덱스 재구성 필요 없음.
-- Segment Advisor 연습
실전에서는 주기적으로 Advisor를 실행.
연습에서는 segment 크기를 비 정상적으로 증가시킴.
S SYS> select segment_name,blocks, tablespace_name from
dba_segments where owner='SCOTT' and
segment_name='DEPT';
SEGMENT_NAME
---------------------------------------------------------------------------------------------------
----------
BLOCKS TABLESPACE_NAME
----------
------------------------------------------------------------
DEPT
8 EXAMPLE
S SYS> alter table scott.dept allocate extent(size 20M);
테이블이 변경되었습니다.
S SYS> select segment_name,blocks, tablespace_name from
dba_segments where owner='SCOTT' and
segment
_name='DEPT';
SEGMENT_NAME
----------------------------------------------------------------------------------------------------
----------
BLOCKS TABLESPACE_NAME
----------
------------------------------------------------------------
DEPT
3848 EXAMPLE
-EM 실행 후 스크립트
Create task and objects
script
DECLARE
taskname varchar2(100);
taskdesc
varchar2(128);
task_id number;
object_id number;
timeLimit
varchar2(25);
numDaysToRetain varchar2(25);
objectName
varchar2(100);
objectType varchar2(100);
BEGIN
taskname :=
'SEGMENTADV_426781';
taskdesc :='Get shrink advice based on object growth
trend';
numDaysToRetain :='30';
dbms_advisor.create_task('Segment
Advisor',?,taskname,taskdesc,NULL);
dbms_advisor.create_object(taskname,
'TABLESPACE', 'EXAMPLE', ' ', ' ', NULL,
object_id);
dbms_advisor.set_task_parameter(taskname, 'RECOMMEND_ALL',
'TRUE');
dbms_advisor.set_task_parameter(taskname, 'DAYS_TO_EXPIRE',
numDaysToRetain);
END;
Execute task script
DECLARE
taskname
varchar2(100);
BEGIN
taskname :=
'SEGMENTADV_426781';
dbms_advisor.reset_task(taskname);
dbms_advisor.execute_task(taskname);
END;
-Resumable
공간모자라도 error 안나고 멈추고 공각확보후 질의 성공.
Resumable 안쓸때
S SCOTT> create table emp2 tablespace ts1 as select * from emp;
테이블이 생성되었습니다.
S SCOTT> insert into emp2 select * from
emp2;
insert into emp2 select * from emp2
*
1행에
오류:
ORA-01653: unable to extend table SCOTT.EMP2 by 128 in tablespace
TS1
Resumable 사용
- user 가 resumable 가능하게 셋팅
S SYS> grant resumable to scott;
권한이 부여되었습니다.
S SCOTT> alter session enable resumable;
세션이 변경되었습니다.
S SCOTT> insert into emp2 select * from emp2;
에러 안나고 suspend 됨
- 또 다른 scott의 session
S SCOTT> select name, sql_text from user_resumable;
NAME
------------------------------------------------------------
SQL_TEXT
------------------------------------------------------------
User
SCOTT(115), Session 129, Instance 1
insert into emp2 select * from
emp2
=> sys에게 공간 더 달라고 요청.
S SYS> select name, sql_text from dba_resumable;
NAME
-----------------------------------------------------------
SQL_TEXT
-----------------------------------------------------------
User
SCOTT(115), Session 129, Instance 1
insert into emp2 select * from
emp2
S SYS> alter tablespace
ts1 add datafile size 20M;
테이블스페이스가 변경되었습니다.
S SYS>
S SCOTT> insert into emp2 select * from emp2;
98304 개의 행이 만들어졌습니다.
S SCOTT>
insert 성공이 됨.
-Traansporting Tablespace
S SYS> alter tablespace ts1 read only;
테이블스페이스가 변경되었습니다.
[oracle@orcl ~]$ exp tablespaces=ts1 transport_tablespace=y file=ts1.dmp
Export: Release 10.2.0.1.0 - Production on Mon Jun 29 16:44:31 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Username: / as
sysdba
Connected to: Oracle Database 10g
Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning,
OLAP and Data Mining options
Export done in US7ASCII character set and
AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible
charset conversion)
Note: table data (rows) will not be exported
About to
export transportable tablespace metadata...
For tablespace TS1 ...
.
exporting cluster definitions
. exporting table definitions
. . exporting
table EMP2
. exporting referential integrity
constraints
. exporting triggers
. end transportable tablespace metadata
export
Export terminated successfully without warnings.
[oracle@orcl
~]$
다른 디비에서 datafile을 바로 인식할 수 잇도록 ddl에 해당하는 내용만 추출.
dmp 파일 => ddl에 해당하는 내용만 들어 있음. 적은크기.
-전송 해야 하는 데이터는
[oracle@orcl ~]$ ls
ts1.dmp
ts1.dmp
[oracle@orcl ~]$ ls
/u01/app/oracle/oradata/ORCL/datafile/*ts1*
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_ts1_54jn5ol1_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_ts1_54jv8b0q_.dbf
[oracle@orcl
~]$
[oracle@orcl ~]$ mkdir to_send
[oracle@orcl
~]$ mv ts1.dmp
to_send/
[oracle@orcl ~]$ cp
/u01/app/oracle/oradata/ORCL/datafile/*ts1* to_send/
[oracle@orcl
~]$ tar -cvf to_send.tar
to_send/
to_send/
to_send/o1_mf_ts1_54jn5ol1_.dbf
to_send/o1_mf_ts1_54jv8b0q_.dbf
to_send/ts1.dmp
[oracle@orcl
~]$ gzip
to_send.tar
[oracle@orcl ~]$ ls
to_send.tar.gz
to_send.tar.gz
S SYS> select platform_name from v$database;
PLATFORM_NAME
-------------------------------------------------------------------
----------
Linux
IA (32-bit)
S SYS> select endian_format from
v$transportable_platform
2 where platform_name=(select
platform_name from v$database);
ENDIAN_FORMAT
----------------------------
Little
-convert data file by using RMAN
RMAN> convert tablespace ts1 to platform 'Linux IA (32-bit)' format='/~~';
-ship
copy
-use data pump to import metadata
[oracle@orcl
~]$ imp tablespaces=ts1
transport_tablespace=y file=ts1.dmp datafiles=' ',' '
-------학원에서 exp 한 tablespace 집 linux에 imp 시키기.
ts1.dmp 파일 복사.
datafile 경로에 datafile 복사 후
작업.
[oracle@orcl ~]$ imp tablespaces=ts1 transport_tablespace=y file=ts1.dmp datafiles='/u01/app/oracle/oradata/ORCL/datafile/o1_mf_ts1_54jn5ol1_.dbf','/u01/app/oracle/oradata/ORCL/datafile/o1_mf_ts1_54jv8b0q_.dbf'
Import: Release 10.2.0.1.0 - Production on Mon Jun 29 22:22:21 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Username: / as sysdba
Connected to: Oracle Database 10g
Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning,
OLAP and Data Mining options
Export file created by EXPORT:V10.02.01
via conventional path
About to import transportable tablespace(s)
metadata...
import done in US7ASCII character set and AL16UTF16 NCHAR
character set
import server uses AL32UTF8 character set (possible charset
conversion)
. importing SYS's objects into SYS
. importing SYS's objects
into SYS
. importing SCOTT's objects into SCOTT
. . importing
table "EMP2"
. importing SYS's objects into
SYS
Import terminated successfully without warnings.
[oracle@orcl
~]$
---확인.
SYS> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
TS1
7 rows selected.
SYS> select count(*) from scott.emp2;
COUNT(*)
----------
196608
SYS>
----집
window로 tablespace 옮기기
-convert
RMAN> convert datafile
'C:\oracle\product\10.2.0\oradata\orcl\o1_mf_ts1_54jn5ol1_.dbf',
2>
'C:\oracle\product\10.2.0\oradata\orcl\o1_mf_ts1_54jv8b0q_.dbf'
3>
to platform="Microsoft Windows IA
(32-bit)"
4> from platform="Linux IA
(32-bit)"
5>
db_file_name_convert="C:\oracle\product\10.2.0\oradata\orcl\","C:\oracle\product\10.2.0\oradata\orcl\";
backup을(를)
09/06/29에서 시작 중
채널 ORA_DISK_1 사용 중
ORA_DISK_1 채널: 데이터 파일 변환 시작 중
입력
파일명=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\O1_MF_TS1_54JV8B0Q_.DBF
변환된 데이터
파일=C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\DATA_D-ORCL_I-1214711225_TS-TS1_FNO-7_01KIR4N2
ORA_DISK_1
채널: 데이터 파일 변환 완료. 경과 시간: 00:00:04
ORA_DISK_1 채널: 데이터 파일 변환 시작 중
입력
파일명=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\O1_MF_TS1_54JN5OL1_.DBF
변환된 데이터
파일=C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\DATA_D-ORCL_I-1214711225_TS-TS1_FNO-6_02KIR4N6
ORA_DISK_1
채널: 데이터 파일 변환 완료. 경과 시간: 00:00:02
backup을(를) 09/06/29에서 완료
C:\WINDOWS>imp tablespaces=ts1 transport_tablespace=y
file=ts1.dmp
datafiles='C:\ORACLE\PRODUCT\10.2.0\ORADATA
\ORCL\O1_MF_TS1_54JV8B0Q_.DBF','C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\O1_MF_TS1_54JN5OL1_.DBF'
Import: Release 10.2.0.1.0 - Production on 월 6월 29 23:33:00 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
사용자 이름: / as sysdba
다음에 접속됨:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With
the Partitioning, OLAP and Data Mining options
엑스포트 파일은 규정
경로를 거쳐 EXPORT:V10.02.01 에 의해 생성되었습니다
이동 가능한 테이블스페이스(들) 메타데이터을 임포트하려고
합니다...
KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
US7ASCII 문자
집합을 사용해서 클라이언트를 엑스포트합니다 (문자집합 변환이 가능합니다)
. SYS 객체를 SYS(으)로 임포트하는 중입니다
.
SYS 객체를 SYS(으)로 임포트하는 중입니다
IMP-00017: 다음 명령이 실패하고 ORACLE 29345 오류가
발생했습니다:
"BEGIN sys.dbms_plugts.beginImport
('10.2.0.1.0',873,'2000',10,'Linux IA ("
"32-bit)',54483,185501,1,0,0,0);
END;"
IMP-00003: ORACLE 오류 29345이(가) 발생했습니다.
ORA-29345: 호환되지 않는 문자 집합을
사용하여 테이블스페이스를 데이터베이스에 플러그할 수 없습니다.
ORA-06512: "SYS.DBMS_PLUGTS", 줄
2386에서
ORA-06512: "SYS.DBMS_PLUGTS", 줄 1946에서
ORA-06512: 줄
1에서
IMP-00000: 임포트가 실패로 끝났습니다
...
원래 안됨..ㅡㅡ;;
load 사용 해야 함....ㅋㅋㅋㅋㅋㅋㅋㅋ
다른 T/S 와 독립적이어야 함.
- index가 다른 t/s 에 있는 경우
- partitioned table/index
- 다른 테이블객체 reference 하는 경우.
S SYS> select segment_name, owner from dba_segments where segment_type='INDEX'
and tablespace_name='EXAMPLE';
S SYS> select table_name,
table_owner from dba_indexes where(index_name,owner) in
(select
segment_name, owner from dba_segments where segment_type='INDEX' and
tablespace_name='
EXAMPLE')
선택된 레코드가 없습니다.
S SYS> select distinct
tablespace_name from dba_tables where (table_name,owner) in
(select table_name, table_owner from dba_indexes where(index_name,owner)
in
(select segment_name, owner from dba_segments where
segment_type='INDEX' and tablespace_name='
EXAMPLE'));
선택된 레코드가 없습니다.
Index가 다른 테이블 스페이스에 있는 경우. 결과가 나옴.
S SYS> select distinct segment_type from dba_segments where tablespace_name='EXAMPLE';
SEGMENT_TYPE
------------------------------------
LOBINDEX
INDEX
PARTITION
NESTED TABLE
TABLE
PARTITION
LOBSEGMENT
TABLE
INDEX
7 개의 행이 선택되었습니다.
S SYS> select distinct
segment_name,owner,segment_type
from
dba_segments
where
tablespace_name='EXAMPLE'
and segment_type in ('INDEX
PARTITION','TABLE PARTITION');
SEGMENT_NAME OWNER
SEGMENT_TYPE
---------------------- -----
------------------------------------
SALES_TIME_BIX SH INDEX
PARTITION
SALES_CUST_BIX SH INDEX
PARTITION
COSTS_TIME_BIX SH INDEX
PARTITION
SALES_PROD_BIX SH INDEX
PARTITION
COSTS SH TABLE
PARTITION
COSTS_PROD_BIX SH INDEX
PARTITION
SALES SH TABLE
PARTITION
SALES_CHANNEL_BIX SH INDEX
PARTITION
SALES_PROMO_BIX SH INDEX PARTITION
9 개의 행이 선택되었습니다.
...미완성..ㅡㅡ;
-Transporting Databases
'DataBase > Oracle' 카테고리의 다른 글
Admin 2. 13장 Managing Resources (0) | 2012.10.18 |
---|---|
Admin 2. 12장 Automatic Storage Management (0) | 2012.10.18 |
Admin 2. 10장 Managing Schema Objects (0) | 2012.10.18 |
Admin 2. 09장 Automatic Performance Management (0) | 2012.10.18 |
Admin 2. 08장 Monitoring and Manaing Memory (0) | 2012.10.18 |