蒙在股里 发表于 2015-1-16 22:37:44

MSSQL教程之怎样找出数据文件的HWM

闪回的目的是要让数据库在commit之后,还能恢复到之前的某个状态,整库或指定的表。数据
常常在resize数据文件的时分,resize的尺寸欠好把握,上面供应一个办法:



SQL>declare

2cursorc_dbfileis

3selecttablespace_name

4,file_name

5,file_id

6,bytes

7fromsys.dba_data_files

8wherestatus!=INVALID

9orderbytablespace_name,file_id;

10cursorc_space(v_file_idinnumber)is

11selectblock_id,blocks

12fromsys.dba_free_space

13wherefile_id=v_file_id

14orderbyblock_iddesc;

15blocksizebinary_integer;

16filesizebinary_integer;

17extsizebinary_integer;

18begin

19selectvalue

20intoblocksize

21fromv$parameter

22wherename=db_block_size;

23forc_rec1inc_dbfile

24loop

25filesize:=c_rec1.bytes;

26<<outer>>

27forc_rec2inc_space(c_rec1.file_id)

28loop

29extsize:=((c_rec2.block_id-1)*blocksize+c_rec2.blocks*blocksize);

30ifextsize=filesize

31then

32filesize:=(c_rec2.block_id-1)*blocksize;

33else

34exitouter;

35endif;

36endloopouter;

37iffilesize=c_rec1.bytes

38then

39dbms_output.put_line(Tablespace:

40||||c_rec1.tablespace_name||Datafile:||c_rec1.file_name);

41dbms_output.put_line(Cannotberesized,nofreespaceatendoffile.)

42;

43dbms_output.put_line(.);

44else

45iffilesize<2*blocksize

46then

47dbms_output.put_line(Tablespace:

48||||c_rec1.tablespace_name||Datafile:||c_rec1.file_name);

49dbms_output.put_line(Canberesizeduptil:||2*blocksize

50||Bytes,Actualsize:||c_rec1.bytes||Bytes);

51dbms_output.put_line(.);

52else

53dbms_output.put_line(Tablespace:

54||||c_rec1.tablespace_name||Datafile:||c_rec1.file_name);

55dbms_output.put_line(Canberesizeduptil:||filesize

56||Bytes,Actualsize:||c_rec1.bytes);

57dbms_output.put_line(.);

58endif;

59endif;

60endloop;

61end;

62/



Tablespace:DRSYSDatafile:/usr/oracle/data/oradata/cint208/drsys01.dbf

Canberesizeduptil:4333568Bytes,Actualsize:5242880

.

Tablespace:INDXDatafile:/usr/oracle/data/oradata/cint208/indx01.dbf

Canberesizeduptil:16384Bytes,Actualsize:5242880Bytes

.

Tablespace:RBSDatafile:/usr/oracle/data/oradata/cint208/rbs01.dbf

Canberesizeduptil:57155584Bytes,Actualsize:57671680

.

Tablespace:SYSTEMDatafile:/usr/oracle/data/oradata/cint208/system01.dbf

Canberesizeduptil:280182784Bytes,Actualsize:283115520

.

Tablespace:TEMPDatafile:/usr/oracle/data/oradata/cint208/temp01.dbf

Canberesizeduptil:16384Bytes,Actualsize:5242880Bytes

.

Tablespace:TESTSPACEDatafile:/usr/oracle/data/oradata/cint208/testspace1.dbf

Canberesizeduptil:16384Bytes,Actualsize:5242880Bytes

.

Tablespace:TOOLSDatafile:/usr/oracle/data/oradata/cint208/tools01.dbf

Canberesizeduptil:16384Bytes,Actualsize:5242880Bytes

.

Tablespace:USERSDatafile:/usr/oracle/data/oradata/cint208/users01.dbf

Canberesizeduptil:23076864Bytes,Actualsize:23592960

.



PL/SQLproceduresuccessfullycompleted.



SQL>

SQL>

SQL>


在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。

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

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

小魔女 发表于 2015-1-26 22:54:37

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。

莫相离 发表于 2015-2-4 22:18:18

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。

兰色精灵 发表于 2015-2-10 20:54:32

学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!

灵魂腐蚀 发表于 2015-3-10 18:49:13

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

活着的死人 发表于 2015-3-17 09:10:21

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.

admin 发表于 2015-3-24 05:16:02

一个是把SQL语句写到客户端,可以使用DataSet进行加工;
页: [1]
查看完整版本: MSSQL教程之怎样找出数据文件的HWM