国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle中獲取表空間ddl語句

2024-08-29 13:29:12
字體:
來源:轉載
供稿:網友
-----------------------------------------------------------------------------------
create table
-----------------------------------------------------------------------------------
create table bak_dba_tablesapce
(ddl_txt varchar2(2000));

-----------------------------------------------------------------------------------
procedure
-----------------------------------------------------------------------------------

create or replace procedure get_tabspace_ddl as
type r_curdf is ref cursor;

v_tpname varchar2(30);

cursor v_curtp is select * from dba_tablespaces;
v_curdf r_curdf;

v_ddl varchar2(2000);
v_txt varchar2(2000);
v_tp dba_tablespaces%rowtype;
v_df dba_data_files%rowtype;
v_count number;
begin

open v_curtp;

loop
fetch v_curtp into v_tp;
exit when v_curtp%notfound;

v_tpname:=v_tp.tablespace_name;

if v_tp.contents='temporary' then ---臨時表空間
--dbms_output.put_line('create temporary tablespace '||v_tp.tablespace_name||' datafile ');
v_txt:='create temporary tablespace '||v_tp.tablespace_name||' datafile ';
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);

select count(*) into v_count ---獲得游標v_curtp指向的當前表空間包含的臨時數據文件數
from dba_temp_files
where tablespace_name=v_tp.tablespace_name;

elsif v_tp.contents='undo' then ---回退表空間
-- dbms_output.put_line('create undo tablespace '||v_tp.tablespace_name||' datafile ');
v_txt:='create undo tablespace '||v_tp.tablespace_name||' datafile ';
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);

select count(*) into v_count ---獲得游標v_curtp指向的當前表空間包含的數據文件數
from dba_data_files
where tablespace_name=v_tp.tablespace_name;

elsif v_tp.contents='permanent' then ---普通表空間
v_txt:='create tablespace '||v_tp.tablespace_name||' datafile ';
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);

end if;

if v_tp.contents='temporary' then ----臨時數據文件
open v_curdf for select * from dba_temp_files where tablespace_name=v_tpname;
else
open v_curdf for select * from dba_data_files where tablespace_name=v_tpname;
end if;

loop
fetch v_curdf into v_df; ---獲取datafile定義
exit when v_curdf%notfound;

if v_df.autoextensible='yes' then
v_ddl:='on';
else
v_ddl:='off';
end if;

if v_curdf%rowcount=v_count then
v_txt:=''''||v_df.file_name||''''||' size '||(v_df.blocks*8/1024)||'m autoextend '||v_ddl;
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);

else
v_txt:=''''||v_df.file_name||''''||' size '||(v_df.blocks*8/1024)||'m autoextend '||v_ddl||',';
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);

end if;

end loop;
close v_curdf;

if v_tp.contents='undo' then ---回退表空間存儲參數
insert into bak_dba_tablesapce(ddl_txt) values(v_tp.status);

else ---普通表空間、臨時表空間存儲參數
if v_tp.contents='permanent' then ---普通表空間存儲參數
insert into bak_dba_tablesapce(ddl_txt) values(v_tp.logging);
insert into bak_dba_tablesapce(ddl_txt) values(v_tp.status);
insert into bak_dba_tablesapce(ddl_txt) values('permanent');
end if;

if v_tp.allocation_type='uniform' then ----統一分區尺寸
v_txt:='extent management '||v_tp.extent_management||' uniform size '||v_tp.initial_extent/(1024*1024)||'m';
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);

elsif v_tp.allocation_type='system' then ----系統自動管理分區尺寸
v_txt:='extent management '||v_tp.extent_management||' autoallocate ' ;
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);
end if;

if v_tp.segment_space_management='auto' then ----系統自動管理段空間
insert into bak_dba_tablesapce(ddl_txt) values('segment space management auto');
end if;

end if;
v_txt:='blocksize '||(v_tp.block_size/1024)||'k ';
insert into bak_dba_tablesapce(ddl_txt) values(v_txt);
insert into bak_dba_tablesapce(ddl_txt) values('/');
insert into bak_dba_tablesapce(ddl_txt) values('');
commit;
end loop;
close v_curtp;

exception
when others then
if v_curtp%isopen then
close v_curtp;
if v_curdf%isopen then
close v_curdf;
end if;
end if;
raise;
end get_tabspace_ddl;
---------------------------------------------------------------------
get_tabspace_dll.sh
用于crontab 定時備份數據庫表空間的ddl
---------------------------------------------------------------------
#!/bin/ksh
#生成 bill數據庫的表空間ddl語句
#每天執行
#獲取環境變量
. /oracle/.profile
username=sys
password=aaa123

########
sqlplus username/password<<eof
---declare var here
begin
get_tabspace_ddl;
end;
/
exit
/
eof
if [ $? -ne 0 ];then
echo "error! execute procedure failed! please check it"
#mail ...
exit 1
fi
sqlplus username/password <<!
set pages 0;
set serveroutput on size 1000000;
set heading off;
set feedback off;
set echo off;

spool /ora_backup/orasysbak/bill_tabspace_ddl.sql
select ddl_txt from bak_dba_tablesapce;
spool off;
exit
!
if [ $? -ne 0 ];then
echo "error! generate tabspace ddl failed! please check it"
#mail ...
exit 1
fi
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 横山县| 西和县| 徐水县| 万山特区| 孟州市| 麦盖提县| 从江县| 汉中市| 利辛县| 田东县| 安西县| 鄂托克旗| 庐江县| 林口县| 邓州市| 松阳县| 买车| 石屏县| 武宣县| 梨树县| 洪江市| 石渠县| 昔阳县| 奉贤区| 永修县| 张家界市| 札达县| 长兴县| 赤峰市| 彰化县| 巴彦淖尔市| 永和县| 襄城县| 乐都县| 登封市| 准格尔旗| 城固县| 日喀则市| 吉隆县| 揭东县| 弥勒县|