« June 2006 | 首页

1 2 3 4 5 6 7 (Page 4 of 7)



| August 2006 »

July 22, 2006

见闻 弹琴的孩子与网络精英

拿了一本杂志准备下楼吃晚饭。一起等电梯的还有一个十来岁小姑娘,一个知识分子模样的中年男人,他们应该是父女。小姑娘在那里说"我今天练五个小时总行了吧? 平时才三个小时......"。他父亲很不耐烦:"我不管你几个小时,练会了就行了。你看老师来的时候,你当啷当啷弹的成什么样子?" 小姑娘不说话了。

我一下子知道了每个周末就是这个小姑娘在我们这个楼层弹钢琴。琴说不上好,节奏很单调,初学阶段吧。这么小的孩子这么大强度的练习,有必要么? 真想问问那位父亲这孩子喜欢弹琴么?

出了大门在旁边的小餐馆吃炒饭,临桌的两个学生模样的人(附近就是浙大)在讨论互联网,“媒体内定了,我们是博客网站的最佳...”,还不时有创业、Web 2.0、风险投资、博客之类的字眼传过来。 其中一个应该是另一个眼里的"会家子",在问"一个网站都有哪些开销的"问题。在杭州,每次吃饭的时候都会听到有人在讨论互联网,每次听到讨论互联网都会听到 Web 2.0 啊投资啊之类的,都是急不可耐的迫切心态......

吃过了饭,回到家里刚坐下,钢琴声又响起来了。

July 20, 2006

关于《疯狂的石头》的碎片

这部电影看过好几个星期了。最早从和老那里看到关于《疯狂的石头》的推荐,第一感觉这片子值得一看。刚好第二天老婆也看了公司同事的推荐, 说要去看看, 那天下着雨,肩膀疼的很,为了不扫兴,还是去了。

整个片子看下来,影院里一片笑声。虽然有的地方我感觉并不那么好笑,但有几个情节、台词的确幽默的很。非常喜欢道哥的唐山方言。肩膀疼,想笑的时候又不太敢,有些难受。相比这几年类似大山临盆的大导演的大片,《疯狂的石头》更加实在。咱这样的人就吃"肉夹馍"舒服,别给我整那些"西餐"。

关于《疯狂的石头》很多人都非要把《两杆大烟枪》拉扯进来,甚至更有甚者说什么抄袭。莫名所以。电影的抄袭定义是什么? 谁能告诉我?

主演郭涛绝对是一个性格演员。记得以前有一部电视剧《明星制造》,他在里面演一个问题明星,把那些嘲讽意味表达的很到位。

导演宁浩居然是 77 年出生的,希望他的野心不要太大(陆川就是一个反面教材). 踏踏实实的拍普通人能看的电影就是成功。

《疯狂的石头》一路的飘红,Blog 传播起到了很大作用。网民用鼠标键盘进行投票,远比用钱来搞定媒体实惠。

一点遗憾是正是名字没能使用《贼中贼》。《贼中贼》与很多循环相扣的情节暗合,妙哉。

July 19, 2006

Movable Type 3.3x 的 Tag 功能

把 Blog 升级到了 3.31. 因为模版还是使用的旧模版. 所以 MT 3.31 的 Tag 功能没体现出来. 修改了一下,现在单篇归档的 Tag 已经可以看到了. 记录如下:

1) 修改 CSS 模版 加入:

.entry-tags {
margin: 0 0 5px 5px;
}
.entry-tags-header,
.entry-tags-list,
.entry-tag { display: inline; }
.entry-tags-list {
list-style:none;
padding: 0px;
}

2) URL_rewrite, 美化 URL
编辑根目录下的 .htaccess 文件, 添加:

RewriteEngine on
RewriteRule tag/(.+) /mt/mt-search.cgi?tag=$1&blog_id=1

第一个 mt 是你的 mt 安装的相对目库. 最后的 blog_id 值填入你的具体值即可. 我的是 1.

3) 修改 Individual Entry Archive 的模版
在 < $MTEntryMore > 后面加入:

<MTEntryIfTagged>
<div class="entry-tags">
<h2 class="entry-tags-header">本则 Blog 所属的Tag:</h2>
<ul class="entry-tags-list">
<MTEntryTags>
<li class="entry-tag"><a href="/tag/<$MTTagName encode_url="1"$>"<$MTTagName$></a></li>
</MTEntryTags>
</ul>
</div>
</MTEntryIfTagged>

4) rebuild 所有的单篇归档.

如果不允许做 URL_rewrite ,则 模版中的 Link 修改为:

<a href="<$MTTagSearchLink$>"><$MTTagName$></a></MTEntryTags>

最后效果请参考本则 Blog 全文.

Oracle 10G的Data Pump (Part I)

Oracle 10G的Data Pump技术能够在不同数据库间高速的移动数据库和元数据. 这个技术的基础是两个数据移动工具:Data Pump Export和Data Pump Import.

Oracle的Data Pump是通过一个PL/SQL包来实现的:DBMS_DataPump(也叫Data Pump API).Data Pump使用直接路径装载和外部表机制进行数据的移动. Data Pump使用DBMS_METADATA PL/Sql包进行包括ETL过程在内的所有的数据库对象操作.

Data Pump 是Oracle一些其它关键特性(如基于流的复制、逻辑Standby等、Grid)的基础。

Data Pump特性是集成到Oracle数据库10G中的,但是标准版本10G并行度只有1.

关键概念

Master Table

Master Table(MT)是Data Pump技术的核心.Master Table 用来保存整个过程中的细节信息(也可以说是一些元数据信息).有了MT,导出或者导入的重启动才变为可能.这些细节信息包括:

  • 产生Job状态的报告
  • 重新启动Job
  • 定位在Dump文件中的所有的对象.

主表在进行当前导出或者导入的操作的用户模式中被创建.该用户必须要有足够空间. 主表的名字和创建它的Job名字相同.这也就是说,你不能显式的指定一个和现有的表或者视图重名的Data Pump Job.

导出的时候,主表被创建,并在完成的时候写到Dump文件中.在启动导入的时候,主表从Dump文件集中载入到数据库中,并用来控制操作的顺序.主表也可以用一些参数来进行初始化操作.要注意的是主表不能跨文件存储.所以,指定的 Dump 文件的大小至少要能够容纳得下 MT .

主表依如下情况或被保留或者删除:

  • Job成功完成,MT 被删除.
  • 如果Job是使用STOP_JOB交互命令停掉的,MT将被保留以用来重启动Job.
  • 如果Job是使用KILL_JOB交互命令Kill掉的,MT将被删除,并且Job不能重新启动.
  • 如果Job意外中止,MT总是被保留.

Master Process 主进程

每一个导出或者导入的Job都会产生一个主进程. 主进程控制整个Job,包括和客户端通信,创建并控制worker 进程, 并进行日志操作.

Worker Process

Worker Process 是并行化进行实际的卸载与装载元数据和表数据的进程.进程的数量和PARALLEL指定的数值相等.在整个Job过程中,该数量可以进行调整.我们在前面已经提及,标准版下并行度为1.

网络导出和导入

当你通过网络运行Import操作,源是另一个系统,不是一个Dump的文件集.

基于服务器的处理方式

和原来的Export/Import方式不同的是,Data Pump的导出和导入基本是在服务器.这意味着:

  • 因为文件的读和写大部分都是在服务器端,所以路径的规范和数据库目录对象的解析都是针对服务器而不是客户 端
  • 因为对文件的访问是在操作系统模式下,可能会存在数据安全问题.
  • 如果使用默认的目录信息,可能会产生文件冲突问题.

Dump、Log和SQL文件的默认位置

Dump、Log和SQL文件的默认位置基于服务器的。在你运行Data Pump Export或者Data Pump Import的时候 , 必须由DBA或者是有 CREATE ANY DIRECTORY 权限的用户创建一个目录对象.在该对象创建之后,你需要对其他用户 授权 READ/WRITE对象操作权限.

GRANT READ ON DIRECTORY data_pump_dir TO foo;

注意该目录只有在数据库服务器具有读取权限的时候才可以.

Data Pump根据如下的顺序决定文件的位置:

1. 对该文件指定的目录对象;
2. 如果对一个文件没有指定目录对象,那么将默认使用初始化参数中的DIRECTORY指定的对象.

特权用户和非特权用户

Data Pump识别两类的用户:特权(Privileged)用户和非特权(Nonprivileged)的用户. Privileged用户具有EXP_FULL_DATABASE 和IMP_FULL_DATABASE权限. 非特权用户不具备这些权限.

特权用户可以作如下工作:

  • 导出导入其他用户拥有的数据库对象.
  • 导出导入非基于模式的对象(比如表空间和模式定义等内容).
  • 对其他用户启动的Job进行一些操作.

Data Pump如何访问数据?

直接路径(Direct Path ,DP)和外部表(External Tables ,ET).ET模式下使用ORACLE_DATAPUMP驱动并使用直接 路径API内部数据流格式.Oracle称Data Pump会自动选择最快的方法.

文件分配

Data Pump Job管理三种类型的文件:

  • Dump文件
  • Log文件 记录一个操作的相关信息
  • SQL文件 记录一个SQL_FILE操作输出的记录

指定文件和额外的附件文件

对于导出操作,你可以指定 Dump文件,随着操作的进行你发现文件空间有些不够,你可以使用交互模式下的 ADD_FILE 命令添加额外的文件.对于导入的操作.所有的dump文件必须在Job定义的时候指定. Log文件和SQL文件将覆盖存在的 文件.Dump文件从不覆盖已经存在的文件.

设定并行度

对于导出和导入 ,并行度的设定(通过 PARALLEL 参数指定)应该低于或者等于Dump文件的个数.如果文件个数不足,性 能可能会降低(多线程同时访问一个Dump文件).前面已经提及,标准版本10G并行度只有1,所以,这个参数实际上对企业 版的10G才是有效的.

使用替代变量

在导出和导入操作中,可以使用%U替代变量来匹配文件名字,这样在一定情况下便捷了许多.

Data Pump中的Export和Import的新的特性

相对于旧有的exp/imp,Data Pump中的Export和Import有很多新的特性,包括:

1 Data Pump Job执行到一半的时候指定最大线程数的能力.
2 Data Pump job是完全能重新启动的.
3 从长时间运行的Job分离或者是重新附加上去而不会对Job本身有影响.
4 支持通过网络的导出导入操作.
5 Remap_datafile.
6 支持完美粒度对象选择.
7 支持对Job的交互命令行模式监控和交互.
8 对待导入的对象的空间评估.
9 具备指定数据库版本对象移动能力.

参考信息

注:以前的旧文。

本站相关标签|Tags Cloud