首页 > 数据库 >【Oracle】Generate the tablespace creation in a time

【Oracle】Generate the tablespace creation in a time

时间:2023-05-31 17:34:18浏览次数:45  
标签:39 temp creation bytes tbname chr tablespace Oracle

 

此脚本的使用场景是需要使用datapump方式进行数据迁移时,需要在目标数据库上创建对应的表空间,这时对于表空间数量比较多的系统,

比如peoplesoft来说,手工单独创建表空间会是一个比较麻烦的事情。

以下脚本在源数据库上运行,获取表空间的创建脚本,然后只需对路径相应修改即可使用。

------------------------
-- 获取表空间生成脚本 --
------------------------

-- WX:DBAJOE399 --


set serverout on;

DECLARE
  CURSOR c_dbf IS
    SELECT tablespace_name,
           file_name,
           bytes,
           maxbytes,
           increment_by,
           AUTOEXTENSIBLE
      FROM dba_data_files
     where tablespace_name not in
           ('SYSTEM', 'SYSAUX', 'USERS','UNDOTBS1')
     ORDER BY tablespace_name;
  v_tbname_temp DBA_DATA_FILES.TABLESPACE_NAME%type;
  v_tbname      DBA_DATA_FILES.TABLESPACE_NAME%type;
  v_dbfname     DBA_DATA_FILES.FILE_NAME%type;
  v_bytes       dba_data_files.bytes%type;
  v_maxbytes    dba_data_files.maxbytes%type;
  v_inc         dba_data_files.increment_by%type;
  v_autoext     dba_data_files.AUTOEXTENSIBLE%type;
BEGIN
  OPEN c_dbf;
  FETCH c_dbf
    INTO v_tbname, v_dbfname, v_bytes, v_maxbytes, v_inc, v_autoext;
  --  DBMS_OUTPUT.PUT_LINE('create tablespace '|| v_tbname || ' datafile '||chr(39)||v_dbfname ||chr(39)|| ' size '||v_bytes ||'  autoextend on '  ||' next '||v_inc||' maxsize ' ||v_maxbytes||';' );
  v_tbname_temp := 'a';
  WHILE c_dbf%FOUND LOOP
    IF v_autoext = 'YES' THEN
      IF v_tbname_temp <> v_tbname THEN
        DBMS_OUTPUT.PUT_LINE('create tablespace ' || v_tbname ||
                             ' datafile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes ||
                             '  autoextend on ' || ' next ' || v_inc ||
                             ' maxsize ' || v_maxbytes || ';');
      ELSE
        DBMS_OUTPUT.PUT_LINE('alter tablespace ' || v_tbname ||
                             ' add datafile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes ||
                             '  autoextend on next ' || v_inc ||
                             ' maxsize ' || v_maxbytes || ';');
      END IF;
    ELSE
      IF v_tbname_temp <> v_tbname THEN
        DBMS_OUTPUT.PUT_LINE('create tablespace ' || v_tbname ||
                             ' datafile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes || ';');
      ELSE
        DBMS_OUTPUT.PUT_LINE('alter tablespace ' || v_tbname ||
                             ' add datafile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes ||
                             '  autoextend on next ' || v_inc ||
                             ' maxsize ' || v_maxbytes || ';');
      END IF;
    END IF;
  
    v_tbname_temp := v_tbname;
    FETCH c_dbf
      INTO v_tbname, v_dbfname, v_bytes, v_maxbytes, v_inc, v_autoext;
  END LOOP;
  CLOSE c_dbf;
END;

  

临时表空间创建脚本

 
------------------------
-- 获取临时表空间生成脚本 --
------------------------

DECLARE
  CURSOR c_dbf IS
    SELECT tablespace_name,
           file_name,
           bytes,
           maxbytes,
           increment_by,
           autoextensible
      FROM dba_temp_files
     ORDER BY tablespace_name;
  v_tbname_temp dba_temp_files.TABLESPACE_NAME%type;
  v_tbname      dba_temp_files.TABLESPACE_NAME%type;
  v_dbfname     dba_temp_files.file_name%type;
  v_bytes       dba_temp_files.bytes%type;
  v_maxbytes    dba_temp_files.maxbytes%type;
  v_inc         dba_temp_files.increment_by%type;
  v_autoext     dba_temp_files.AUTOEXTENSIBLE%type;
BEGIN
  OPEN c_dbf;
  FETCH c_dbf
    INTO v_tbname, v_dbfname, v_bytes, v_maxbytes, v_inc, v_autoext;
  --  DBMS_OUTPUT.PUT_LINE('create temporary tablespace '|| v_tbname || ' tempfile '||chr(39)||v_dbfname ||chr(39)|| ' size '||v_bytes ||'  autoextend on '  ||' next '||v_inc||' maxsize ' ||v_maxbytes||';' );
  v_tbname_temp := 'a';
  WHILE c_dbf%FOUND LOOP
    IF v_autoext = 'YES' THEN
      IF v_tbname_temp <> v_tbname THEN
        DBMS_OUTPUT.PUT_LINE('create temporary tablespace ' || v_tbname ||
                             ' tempfile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes ||
                             '  autoextend on ' || ' next ' || v_inc ||
                             ' maxsize ' || v_maxbytes || ';');
      ELSE
        DBMS_OUTPUT.PUT_LINE('alter tablespace ' || v_tbname ||
                             ' add tempfile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes ||
                             '  autoextend on next ' || v_inc ||
                             ' maxsize ' || v_maxbytes || ';');
      END IF;
    ELSE
      IF v_tbname_temp <> v_tbname THEN
        DBMS_OUTPUT.PUT_LINE('create temporary tablespace ' || v_tbname ||
                             ' tempfile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes || ';');
      ELSE
        DBMS_OUTPUT.PUT_LINE('alter tablespace ' || v_tbname ||
                             ' add tempfile ' || chr(39) || v_dbfname ||
                             chr(39) || ' size ' || v_bytes || ';');
      END IF;
    
    END IF;
    v_tbname_temp := v_tbname;
    FETCH c_dbf
      INTO v_tbname, v_dbfname, v_bytes, v_maxbytes, v_inc, v_autoext;
  END LOOP;
  CLOSE c_dbf;
END;

  

 

标签:39,temp,creation,bytes,tbname,chr,tablespace,Oracle
From: https://www.cnblogs.com/Jeona/p/17446830.html

相关文章

  • oracle 最大IOPS使用率和IOMBPS使用率监控 19c
    pdb最大iops使用率监控指标获取通过字典DBA_HIST_RSRC_PDB_METRIC分析具体字段为IOPS_THROTTLE_EXEMPT、IOMBPS_THROTTLE_EXEMPT一般最大值超过5就要告警了参数iops_throttle_exempt IndicateshowmuchoftheI/OpersecondinthecurrentPDBwasexemptedfromt......
  • ORACLE 并行度监控 19c
    oracle并行度查看通过v$resource_limit中的parallel_max_servers参数来设置初始值官方对于parallel_max_servers参数设置parallel_max_servers=PARALLEL_THREADS_PER_CPU*CPU_COUNT*concurrent_parallel_users*5Intheformula,thevalueassignedtoconcurrent......
  • Oracle 12c/19c PDB数据库配置自动启动
    在Oracle12c/19c多租户环境中,默认情况下,使用startup命令启动数据库实例后,你会发现PDB数据库的状态为MOUNT状态,PDB不会随着CDB启动而启动。如下例子所示:SQL> startupORACLE instance started.Total System Global Area 2432695872 bytesFixed Size          ......
  • 【Oracle】Clean all objects belong to particular the user but not using drop use
      #--WX:DBAJOE399--DEST_SCHEMA=Expected_user_namesqlplus/assysdba<<!EOFsetserveroutputonsetechooffsetfeedbackoffWHENEVERSQLERROREXIT1WHENEVEROSEEROREXIT1altersessionsetcurrent_schema=${DEST_SCHEMA};purgedba......
  • 【Oracle】Check size of datafiles and tempfile tablespaces used in CDB and PDB
       --WX:DBAJOE399--setline200pages999columnnamefora10columntablespace_namefora15column"MAXSIZE(GB)"format9,999,990.00column"ALLOC(GB)"format9,999,990.00column"USED(GB)"format9,999,990.00selec......
  • docker部署oracle
    docker部署oracle1.拉取镜像dockerpullregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g2.启动容器dockerrun-id-p1521:1521--nameoracle11gregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g3.进行配置,首先执行如下命令进入oracle容器环境中:docker......
  • Oracle 性能慢排查脚本
    查看总消耗时间最多的前100条SQL语句select*from(selectv.sql_id,v.child_number,v.sql_text,last_load_time,v.PARSING_USER_ID,ROUND(v.ELAPSED_TIME/1000000/(CASEWHEN(EXECUTIONS=0ORNVL(EXECUTIONS,1)=1)THEN1ELSEEXECUTIONSEND),2)"执行......
  • 查询Oracle数据字典SQL
    SELECT A.TABLE_NAMEAS"表名", A.COLUMN_NAMEAS"字段名", DECODE( A.CHAR_LENGTH, 0, DECODE( A.DATA_SCALE, NULL, A.DATA_TYPE, A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')' ), ......
  • 【Oracle】Resize your Oracle datafiles down to the minimum without ORA-03297
      --Innon-multitenantDBsetlinesize1000pagesize0feedbackofftrimspoolonwithhwmas(--gethighestblockidfromeachdatafiles(fromx$ktfbueaswedon'tneedalljoinsfromdba_extents)select/*+materialize*/ktfbuesegtsnts......
  • 【Oracle】Check the tbs' usage
    setfeedbackoffsetpagesize70;setlinesize2000setheadonCOLUMNTablespaceformata25heading'TablespaceName'COLUMNautoextensibleformata11heading'AutoExtend'COLUMNfiles_in_tablespaceformat999heading'Files'......