分手快乐 发表于 2015-1-16 22:43:46

MYSQL网页设计oracle中猎取表空间ddl语句

与数据库相关的流程的逐渐标准化,使得解决方案提供商能以更便捷的方式提供服务、部署应用程序、规划容量和管理资源。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都可以降低你所需要的人力成本。

再现理想 发表于 2015-1-19 21:47:53

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

柔情似水 发表于 2015-1-25 19:14:49

无法深入到数据库系统层面去了解和探究

小魔女 发表于 2015-2-3 15:12:19

是要和操作系统进行Socket通讯的场景。否则建议慎重!

莫相离 发表于 2015-2-9 03:33:39

你可以简单地认为适合的就是好,不适合就是不好。

爱飞 发表于 2015-2-26 20:40:30

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

透明 发表于 2015-3-8 17:23:39

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。

不帅 发表于 2015-3-16 07:41:21

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

蒙在股里 发表于 2015-3-22 21:10:52

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
页: [1]
查看完整版本: MYSQL网页设计oracle中猎取表空间ddl语句