|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
与数据库相关的流程的逐渐标准化,使得解决方案提供商能以更便捷的方式提供服务、部署应用程序、规划容量和管理资源。DBaaS模式还有助于减少数据和数据库的冗余度并提升整体服务质量。oracle|语句-----------------------------------------------------------------------------------
createtable
-----------------------------------------------------------------------------------
createtablebak_dba_tablesapce
(ddl_txtvarchar2(2000));
-----------------------------------------------------------------------------------
procedure
-----------------------------------------------------------------------------------
createorreplaceprocedureget_tabspace_ddlas
typer_curdfisrefcursor;
v_tpnamevarchar2(30);
cursorv_curtpisselect*fromdba_tablespaces;
v_curdfr_curdf;
v_ddlvarchar2(2000);
v_txtvarchar2(2000);
v_tpdba_tablespaces%rowtype;
v_dfdba_data_files%rowtype;
v_countnumber;
begin
OPENV_CURTP;
LOOP
FETCHv_curtpINTOv_tp;
EXITWHENv_CURtp%NOTFOUND;
V_TPNAME:=v_TP.tablespace_name;
IFv_tp.CONTENTS=TEMPORARYTHEN---一时表空间
--DBMS_OUTPUT.PUT_LINE(CREATETEMPORARYTABLESPACE||v_tp.tablespace_name||DATAFILE);
v_txt:=CREATETEMPORARYTABLESPACE||v_tp.tablespace_name||DATAFILE;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
SELECTCOUNT(*)INTOv_count---取得游标v_curtp指向确当前表空间包括的一时数据文件数
FROMDBA_TEMP_FILES
WHEREtablespace_name=v_tp.tablespace_name;
ELSIFv_tp.CONTENTS=UNDOTHEN---回退表空间
--DBMS_OUTPUT.PUT_LINE(CREATEUNDOTABLESPACE||v_tp.tablespace_name||DATAFILE);
v_txt:=CREATEUNDOTABLESPACE||v_tp.tablespace_name||DATAFILE;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
SELECTCOUNT(*)INTOv_count---取得游标v_curtp指向确当前表空间包括的数据文件数
FROMDBA_DATA_FILES
WHEREtablespace_name=v_tp.tablespace_name;
ELSIFv_tp.CONTENTS=PERMANENTTHEN---一般表空间
v_txt:=CREATETABLESPACE||v_tp.tablespace_name||DATAFILE;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
ENDIF;
ifv_tp.CONTENTS=TEMPORARYTHEN----一时数据文件
OPENV_CURDFforselect*fromdba_temp_fileswheretablespace_name=v_tpname;
else
OPENV_CURDFforselect*fromdba_data_fileswheretablespace_name=v_tpname;
endif;
LOOP
FETCHv_curdfINTOv_df;---猎取DATAFILE界说
EXITWHENv_CURdf%NOTFOUND;
IFV_DF.AUTOEXTENSIBLE=YESTHEN
V_DDL:=ON;
ELSE
V_DDL:=OFF;
ENDIF;
IFv_curdf%rowcount=v_countTHEN
v_txt:=||v_df.file_name||||SIZE||(V_DF.BLOCKS*8/1024)||MAUTOEXTEND||V_DDL;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
ELSE
v_txt:=||v_df.file_name||||SIZE||(V_DF.BLOCKS*8/1024)||MAUTOEXTEND||V_DDL||,;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
ENDIF;
ENDLOOP;
CLOSEV_CURDF;
IFv_tp.CONTENTS=UNDOTHEN---回退表空间存储参数
insertintobak_dba_tablesapce(ddl_txt)values(V_TP.STATUS);
ELSE---一般表空间、一时表空间存储参数
IFv_tp.CONTENTS=PERMANENTTHEN---一般表空间存储参数
insertintobak_dba_tablesapce(ddl_txt)values(V_TP.LOGGING);
insertintobak_dba_tablesapce(ddl_txt)values(V_TP.STATUS);
insertintobak_dba_tablesapce(ddl_txt)values(PERMANENT);
ENDIF;
IFv_tp.ALLOCATION_TYPE=UNIFORMTHEN----一致分区尺寸
v_txt:=EXTENTMANAGEMENT||V_TP.EXTENT_MANAGEMENT||UNIFORMSIZE||v_tp.INITIAL_EXTENT/(1024*1024)||M;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
ELSIFv_tp.ALLOCATION_TYPE=SYSTEMTHEN----体系主动办理分区尺寸
v_txt:=EXTENTMANAGEMENT||V_TP.EXTENT_MANAGEMENT||AUTOALLOCATE;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
ENDIF;
IFv_tp.SEGMENT_SPACE_MANAGEMENT=AUTOTHEN----体系主动办理段空间
insertintobak_dba_tablesapce(ddl_txt)values(SEGMENTSPACEMANAGEMENTAUTO);
ENDIF;
ENDIF;
v_txt:=BLOCKSIZE||(V_TP.BLOCK_SIZE/1024)||K;
insertintobak_dba_tablesapce(ddl_txt)values(v_txt);
insertintobak_dba_tablesapce(ddl_txt)values(/);
insertintobak_dba_tablesapce(ddl_txt)values();
commit;
ENDLOOP;
CLOSEV_CURTP;
EXCEPTION
WHENOTHERSTHEN
ifv_curtp%isopenthen
closev_curtp;
ifv_curdf%isopenthen
closev_curdf;
endif;
endif;
RAISE;
ENDget_tabspace_ddl;
---------------------------------------------------------------------
get_tabspace_dll.sh
用于crontab准时备份数据库表空间的ddl
---------------------------------------------------------------------
#!/bin/ksh
#天生bill数据库的表空间ddl语句
#天天实行
#猎取情况变量
./oracle/.profile
username=sys
password=aaa123
########
sqlplususername/password<<EOF
---declarevarhere
begin
get_tabspace_ddl;
end;
/
exit
/
EOF
if[$?-ne0];then
echo"ERROR!executeprocedurefailed!pleasecheckit"
#mail...
exit1
fi
sqlplususername/password<<!
setpages0;
setserveroutputonsize1000000;
setheadingoff;
setfeedbackoff;
setechooff;
spool/ora_backup/orasysbak/bill_tabspace_ddl.sql
selectddl_txtfrombak_dba_tablesapce;
spooloff;
exit
!
if[$?-ne0];then
echo"ERROR!generatetabspaceddlfailed!pleasecheckit"
#mail...
exit1
fi
只需每年花费2000到5000美元。无论你是自掏腰包来创建一个新兴公司,还是得到了风险投资商的赞助,使用MySQL都可以降低你所需要的人力成本。 |
|