Создать скрипт табличного пространства в Oracle 10g - PullRequest
1 голос
/ 20 января 2010

Я использую приведенный ниже скрипт для генерации DDL для создания табличных пространств в базе данных.

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;

Работает хорошо. Но когда табличное пространство содержит два файла данных, он также создает отдельную команду с созданием табличного пространства. Просто он создает две команды создания табличного пространства, если табличное пространство содержит два файла данных. Пожалуйста, поделитесь своими мыслями.

Приветствия

Шринивасан Тирунавуккарасу.

Ответы [ 3 ]

5 голосов
/ 20 января 2010

Если вы просто пытаетесь перепроектировать существующее табличное пространство для генерации скрипта, почему бы просто не использовать DBMS_METADATA?

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

Вы можете сгенерировать один из этих операторов для каждого табличного пространства в базе данных с помощью простой оболочки, если вы хотите их все.

0 голосов
/ 14 декабря 2016
SET LONG 1000000

select dbms_metadata.get_ddl('TABLESPACE','tablespace_name')||';' from dual;
0 голосов
/ 28 октября 2013
select 
     dbms_metadata.get_ddl('TABLESPACE',tablespace_name) 
from
     dba_tablespaces
;
...