分享
 
 
 

为数据库建立HTML分段使用映射

王朝html/css/js·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

在Oracle数据库中,管理tablespaces通常很难实现从SQL查询得到数据的可视化。一种实现tablespaces可视化且更加容易管理的方法是建立类似于碎片重组功能(defragmentation utilities)的分段使用映射(block usage maps)。

不需要任何图表或者图形功能,你可以使用简单的由Oracelmodplsql包产生的HTML,而modplsql包可在安装Oracle8i和9i时安装。

这其中也包含着风险,因为这一程序必须由一个DBA帐号来运行,所以DBA帐号必须将使用权限赋予每一个操作计划,而操作计划必须包含在wdbsvr.app文件中。为了保护这一文件,你必须确保这一文件只能被Oracle用户和DBA组查阅。如果你愿意把这一程序编写成一个JSP页或者servlet,你也应该非常小心,以防止外部能够使用DBA帐号。

DBA视不能在一个PL/SQL查询,所以你必须将PL/SQL安装为SYS,然后将使用权限分配给允许运行PL/SQL的帐号:

connect sys/<password

@blkmap.sql

grant execute on blkmap to system;

connect system/<password

create synonym blkmap for sys.blkmap;

在这个例子中,我们建立一个名为blkmap包,这一blkmap包具有两个入口点。其中一个是显示tablespaces列表的一个菜单,另一个是实际使用的tablespace分段映射:

create or replace package blkma

as

procedure ts_menu;

procedure ts_map(p_name varchar2);

end blkmap;

/

show errors;

Tablespace菜单的代码可以是一个与分段映射(block map)页关联的tablespaces列表:

procedure ts_menu

is

begin

htp.p('<html');

htp.p('<body bgcolor="white"');

htp.p('<h2Tablespaces</h2');

htp.p('<ul');

for ts in (select tablespace_name from dba_tablespaces) loop

htp.p('<li<a href="blkmap.ts_map?p_id='||ts.tablespace_name||'"'

||ts.tablespace_name||'</a</li');

end loop;

htp.p('</ul');

htp.p('</body');

htp.p('</html');

end ts_menu;

对于tablespace映射,可以生成一个tablespace名称,并请求包含tablespace的每一文件的分段映射。

procedure ts_map(p_name varchar2)

is

begin

page_open;

-- open the page

htp.p('Tablespace: '||p_name);

htp.p('<hr /');

for file in

(

select file_id

from dba_data_files

where tablespace_name = p_name

order by file_id

)

loop

filemap(file.file_id);

-- generate a block map for the file

htp.p('<hr /');

end loop;

info_form;

-- generate a form for segment info

legend;

-- generate a legend for color mappings

page_close;

-- close the page

end ts_map;

对于实际使用的分段映射,我们通常需要显示一个“block”并用颜色表示。使用<table标签比较复杂。一个更好的方法是生成字符次序,即一段时间之后是间隔,这一间隔允许在任何位置给文本以颜色化。

为了使得分段映射更加有用,我们想列出鼠标位置的block信息,并且突出组成这一片段的block,我们可以使用<a标签。首先,生成一个指定a和a:hover的类型,然后建立每一Oracle数据库段的类型:

<style type="text/css"

a

{

text-decoration: none;

font-family: monospace;

font-size: 6pt;

}

a:hover {background-color: yellow}

a.free {background-color: white}

a.cache {background-color: #FFCC00}

a.cluster {background-color: #9A0000}

a.index {background-color: #009900}

a.lobindex {background-color: #9AFE66}

a.lobsegment {background-color: #9A99FF}

a.rollback {background-color: #FF3300}

a.temporary {background-color: #DFFEFF}

a.table {background-color: #003399}

a.other {background-color: magenta}

body

{

background-color: white;

font-family: sans-serif;

font-size: 10pt;

}

</style

我们可以列出有关鼠标位置的block使用者、名称、类型、block数量、以及片段的长度。为了实现这一目的,我们需要两个JavaScript函数,包含以上信息的这两个函数被调用,并传递到表单的域内:

<script language="javascript"

function hover(own,nam,typ,bid,len)

{

document.form.owner.value = own;

document.form.name.value = nam;

document.form.type.value = typ;

document.form.block_id.value = bid;

document.form.length.value = len;

return true;

}

function leave()

{

document.form.owner.value = "";

document.form.name.value = "";

document.form.type.value = "";

document.form.block_id.value = "";

document.form.length.value = "";

return true;

}

</script

. . .

<form name="form"

<table border=0

<tr<tdOwner:</td<td<input name="owner" /</td</tr

<tr<tdName:</td<td<input name="name" /</td</tr

<tr<tdType:</td<td<input name="type" /</td</tr

<tr<tdBlock#:</td<td<input name="block_id" /</td</tr

<tr<tdLength:</td<td<input name="length" /</td</tr

</table

</form

对于每一片段,我们需要建立一个block的<a标签。最后,建立一个显示不同颜色含义的图表:

<table border=0

<tr<thcolspan="2"Legend</th</tr

<tr<td<a name="free" class="free". </a</td

<tdFree Space</td</tr

<tr<td<a name="cache" class="cache". </a</td

<tdCache</td</tr

<tr<td<a name="cluster" class="cluster". </a</td

<tdCluster</td</tr

<tr<td<a name="index" class="index". </a</td

<tdIndex</td</tr

<tr<td<a name="lobindex" class="lobindex". </a</td

<tdLobIndex</td</tr

<tr<td<a name="lobsegment" class="lobsegment". </a</td

<tdLobSegment</td</tr

<tr<td<a name="rollback" class="rollback". </a</td

<tdRollback</td</tr

<tr<td<a name="temporary" class="temporary". </a</td

<tdTemporary</td</tr

<tr<td<a name="table" class="table". </a</td

<tdTable</td</tr

<tr<td<a name="other" class="other". </a</td

<tdOther</td</tr

</table

以下是完整代码:

create or replace package blkmap

authidcurrent_user

as

procedure ts_menu;

procedure ts_map(p_name varchar2);

end blkmap;

/

show errors;

create or replace package body blkmap

as

procedure page_open;

procedure info_form;

procedure filemap(p_id number);

procedure legend;

procedure page_close;

--

procedure ts_menu

is

begin

htp.p('<html');

htp.p('<body bgcolor="white"');

htp.p('<h2Tablespaces</h2');

htp.p('<ul');

for ts in (select tablespace_name from dba_tablespaces) loop

htp.p('<li<a href="blkmap.ts_map?p_name='||ts.tablespace_name||'"'

||ts.tablespace_name||'</a</li');

end loop;

htp.p('</ul');

htp.p('</body');

htp.p('</html');

end ts_menu;

--

procedure ts_map(p_name varchar2)

is

begin

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有