Blame
| 4a9085 | feagor | 2025-12-06 10:05:13 | 1 | ## Datafile. Добавление n файлов |
| 2 | #### Текущие файлы |
|||
| 49f335 | feagor | 2025-12-02 06:58:34 | 3 | |
| 4a9085 | feagor | 2025-12-06 10:05:13 | 4 | ```ora |
| 49f335 | feagor | 2025-12-02 06:58:34 | 5 | SELECT d.file#,d.ts#,t.NAME ts_name,d.NAME file_name,d.STATUS,d.ENABLED,d.bytes,d.BLOCKS |
| 6 | FROM v$datafile d |
|||
| 7 | join v$tablespace t on t.TS# = d.TS# |
|||
| 8 | order by ts_name,file_name; |
|||
| 9 | ||||
| 10 | alter tablespace COLVIR add datafile '/u01/db/data/DW/COLVIR12.DBF' |
|||
| 11 | SIZE 5M REUSE AUTOEXTEND ON NEXT 128M MAXSIZE 32768M; |
|||
| 12 | ``` |
|||
| dd262b | feagor | 2025-12-02 07:45:58 | 13 | |
| 4a9085 | feagor | 2025-12-06 10:05:13 | 14 | #### Добавление новых файлов |
| 15 | ```ora |
|||
| 49f335 | feagor | 2025-12-02 06:58:34 | 16 | declare |
| 17 | l_ts_nm varchar2(30) := 'COLVIR'; -- Tablespace в который добавляем файлы |
|||
| 18 | l_files_add number := 3; -- Количество файлов к добавлению |
|||
| 19 | l_exec_cmd number := 0; -- 0 - вывести команды добавления, 1 - вывести команды и выполнить их |
|||
| 20 | --------------------------------------------- |
|||
| 21 | l_file_dest varchar2(100); |
|||
| 22 | last_idx int; |
|||
| 23 | cmd varchar2(1000); |
|||
| 24 | sl varchar2(1); |
|||
| 25 | begin |
|||
| 26 | if instr(dbms_utility.port_string,'WIN_')>0 then |
|||
| 27 | sl:= '\'; |
|||
| 28 | else |
|||
| 29 | sl:= '/'; |
|||
| 30 | end if; |
|||
| 31 | SELECT substr(file_name ,1,instr(file_name ,sl,-1)-1) into l_file_dest FROM dba_data_files d where d.TABLESPACE_NAME = l_ts_nm and rownum=1; |
|||
| 32 | --Последний номер файла |
|||
| 33 | select nvl(max(to_number(regexp_substr(substr(name,instr(name,sl,-1)+1),'\d+'))),0) max_n |
|||
| 34 | into last_idx |
|||
| 35 | from v$datafile |
|||
| 36 | where regexp_like(upper(name),'^.+'||l_ts_nm||'\d+.DBF$'); |
|||
| 37 | for prn in last_idx+1..last_idx+l_files_add loop |
|||
| 38 | cmd := 'ALTER TABLESPACE '||l_ts_nm ||' ADD DATAFILE '''||l_file_dest|| sl ||l_ts_nm || lpad(prn,2,'0') || '.DBF'' SIZE 2G REUSE AUTOEXTEND ON NEXT 512m MAXSIZE 32g;'; |
|||
| 39 | DBMS_OUTPUT.PUT_LINE( cmd); |
|||
| 40 | if l_exec_cmd = 1 then |
|||
| 41 | EXECUTE IMMEDIATE cmd; |
|||
| 42 | end if; |
|||
| 43 | end loop; |
|||
| 44 | end; |
|||
| 45 | ``` |