ITPUX技术网

交流 . 资讯 . 分享
Make progress together!
Oracle数据库DBA高级工程师培训视频
Oracle数据库培训-备份恢复-性能优化-集群容灾
mysql数据库视频教程

获取表空间生成脚本

内容发布:deagle999| 发布时间:2020-1-7 11:42:59
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;
/



上一篇:Oracle最重要的6个后台进程
下一篇:设置Oracle数据库为归档模式
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表