Создать временное табличное пространство, используя запрос для определения размера в Oracle - PullRequest
1 голос
/ 18 февраля 2012

Я пытаюсь создать временное табличное пространство, которое будет вдвое меньше табличного пространства TEMP.

Так что-то вроде:

create temporary tablespace Temptest
TempFile 'somepath'
size ?M;

где?=

select bytes/2/1024/1024 
  from dba_temp_files 
 where tablespace_name='TEMP';

1 Ответ

1 голос
/ 18 февраля 2012

Вы можете написать блок PL / SQL, который использует динамический SQL.Что-то вроде

DECLARE
  l_current_temp_size_mb NUMBER;
  l_sql_stmt             VARCHAR2(1000);
BEGIN
  SELECT SUM(bytes)/1024/1024
    INTO l_current_temp_size
    FROM dba_temp_files
   WHERE tablespace_name = 'TEMP';

  l_sql_stmt :=
    'CREATE TEMPORARY TABLESPACE tempTest TEMPFILE <<somepath>> size ' || 
       to_char( l_current_temp_size_mb / 2 ) ||
       ' M';
  -- Print out the SQL statement or write it to a table so that if there is an error, 
  -- you know what SQL statement was generated and can debug it.
  dbms_output.put_line( l_sql_stmt ); 
  EXECUTE IMMEDIATE l_sql_stmt;
END;
...