2010-01-20 2 views
1

아래 스크립트를 사용하여 DDL을 생성하여 데이터베이스에 테이블 공간을 생성합니다.Oracle 10g에서 테이블 스페이스 스크립트 생성

select 'create tablespace ' || df.tablespace_name || chr(10) 
|| ' datafile ''' || df.file_name || ''' size ' || df.bytes 
|| decode(autoextensible,'N',null, chr(10) || ' autoextend on maxsize ' 
|| maxbytes) 
|| chr(10) 
|| 'default storage (initial ' || initial_extent 
|| decode (next_extent, null, null, ' next ' || next_extent) 
|| ' minextents ' || min_extents 
|| ' maxextents ' || decode(max_extents,'2147483645','unlimited',max_extents) 
|| ') ;' "Script To Recreate Tablespaces" 
from dba_data_files df, dba_tablespaces t 
where df.tablespace_name=t.tablespace_name; 

잘 작동합니다. 그러나 테이블 스페이스에 두 개의 데이터 파일이 포함되어 있으면 create tablespace를 사용하여 별도의 명령을 생성합니다. 테이블 스페이스에 두 개의 데이터 파일이있는 경우 간단히 두 개의 테이블 스페이스 생성 테이블을 생성합니다. 생각을 공유하십시오.

건배,

스 리니 바산 Thirunavukkarasu.

답변

5

스크립트를 생성하기 위해 기존 테이블 스페이스를 리버스 엔지니어링하려는 경우 DBMS_METADATA를 사용하지 않는 이유는 무엇입니까?

select dbms_metadata.get_ddl('TABLESPACE','yourTablespaceNameOfInterest') 
from dual; 

당신은 당신이 그들 모두를 원하는 경우 간단한 래퍼와 데이터베이스의 각 테이블에 대해 다음 문 중 하나를 생성 할 수 있습니다.

+0

안녕, 나는 DBMS_METADATA은 10g에서 사용할 수 있습니다 생각합니다. 내 것은 9i 데이터베이스입니다. 건배, 티 리나 붓 카라 스리 니. –

+0

9i 설치에 DBMS_METADATA가 포함되어 있다고 확신합니다. 아마도 패키지에 대한 사용 권한이 없습니까? – dpbradley

+0

예. 고마워. –

-1
select 
    dbms_metadata.get_ddl('TABLESPACE',tablespace_name) 
from 
    dba_tablespaces 
; 
0
SET LONG 1000000 

select dbms_metadata.get_ddl('TABLESPACE','tablespace_name')||';' from dual; 
관련 문제