2009年1月30日金曜日

通过解决夫妻分居方式申办上海户口的攻略

经过三个多月的周折,把户口从北京转到上海的努力终于基本尘埃落定。鉴于整个流程的烦琐,想到把我办这个户口的过程记录下来,如果有兄弟姐妹有类似的需要时,也可以参考参考,少走弯路。
  
  首先,已经工作的人想办上海户口,基本上可以有两个政策途经。一是通过引进人才,二是通过解决家庭困难。前者前些年比较好办,有个博士学位就可以了,但最近好像很难了。后者相对比较好操作,夫妻分居也是家庭困难的一种。我就是走的后者,因为我爱人户口在沪,持有硕士学位并在沪工作满三年,而我们夫妻分居满三年,满足相关条件。
    
  一、首先需要了解政策。
相关的政策在人事局主办的网站http://www.21cnhr.com/上有,重要的有
  
  1.上海市人事局、上海市公安局关于进一步解决专业技术人员和管理人员夫妻两地分居问题的通知。这个文件主要说明了要符合什么条件
  2.办理《照顾家庭困难调沪》--夫妻分居。这个文件说明了具体要提交的材料和流程,但实际办下来,要复杂的多,尤其是要交的材料要多的多。
  3.百题问答-照顾家庭困难
  4.咨询中心里也可以搜索一下别人问的相关问题的解答,主持人阿彦还是比较热心的,一般提问一、两天就会有回答。
     
  二、然后准备材料,人事局受理的地方会给你一张详细的所需材料的列表,我这里是凭记忆写的可能会不全。基本上所有的证件都需要带原件并交复印件。所谓的各种“函”都没有固定格式,可以自己拟,把事情说明白,然后请相关单位盖章即可。
  
  1. 申报单位申请函;关于由谁来提出申请,政策文件中规定的比较灵活,但实际上只能由在沪一方所在的单位人事部门提出申请。

  2. 本人书面申请;这里的本人好像是指夫妻中在沪一方,而非实际的本人。

  3. 结婚证复印件;

  4. 双方户籍证明及身份证复印件;注意如果是集体户口,除了本人所在的那页,还需要包含有地址信息的户主那页。但那页一般借不出来,所以复印件或传真也可以

  5. 照顾困难调沪人员情况登记表;这个表格21cnhr网站上有一个电子版,有人说可以用,但也有人说只能用在人事办理窗口那儿领的版本。不过我爱人单位人事那儿正好以前办过,所以有现成的。这个表格上需要迁移一方的原单位、现在接收单位和在沪一方的单位的意见和盖章。

  6. 双方的学历、学位证书。注意你得先去人事局指定的地方办理文凭真实性鉴定,一个证书80元,每个证书都得办,所以一下被砍去320元。这个在大木桥123号人事局某个窗口办,递进去后,一周后去取,320大洋换来的是两张鉴定证书。落款的是上海市职业能力考试院,不知道和人事局是怎样的渊源。

  7. 如果你申请的条件中有涉及职称一条的,还要提供职称证书复印件

  8. 外省市商调函。这个是迁移一方的上海接收单位开给原档案保管单位的,自己拟一个,大意就是说要从你单位调某某人(需注目身份证号和目前户口所在地址)来我单位就可以,需要双方单位盖章

  9.上海接收单位函。这里的接收单位是指是将要接收并保管你的档案的地方,所以对外企来说很可能是上海市人才服务中心,请单位人事去开即可。大意说明将会接收并保管此人的档案即可。

  10.三年以上期限的聘用合同或劳动合同。这里的三年就我个人的经验,是指合同签订之日算起的有效期。因为如果按我递交材料之日算的话,实际我的合同只有两年半多了,但办理人员也没有异议。

  11.调沪人员三个月内体检表

  12.在原户口所在地缴纳社会保险的证明。该证明需由原户口所在地的社保部门开具。按我的情况,因为正好我在北京离职后,单位人事已经从社保部门开具了社会保险关系转移的证明,我就直接用此证明代替了。

  13.上海户口落户地址的户主同意你转入的证明信,我的情况就是我爱人写一个了。

  14.在上海落户地址的房产证

  15.有孩子的好像还要独生子女证,还要复印户口本上孩子那页

  16.原档案所在单位出具的业务、政治素质表现的证明信。

  17. 夫妻双方上海工作单位的营业执照和组织代码机构证的复印件。需要复印后在复印件上盖单位的章以示证明。
    
  三、流程
  
  1. 由在沪一方单位的人事出面将你的所有材料拿到上海人事局(大木桥路123号办事大厅进去右侧一个柜台,放着“解决家庭困难”字样的牌子)。一定要单位人事去,自己去不接待,不过可以一块去。材料一定要全,我就因此跑了两趟。接待的是位姓蒋的女士,态度还不错。可以电话先咨询一下她64045568-6121。
  2. 大约2周后会将结果通知在沪一方单位的人事。办下来的话,就可以去取调令了,也需单位人事去。会拿到一组材料,包括

  a. 一式四份的红头《调令》。这是由上海人事局出具给原档案所在单位的,大意是请其协助办理工作转移,并写明了让原单位把档案寄到哪里。对于由人才服务中心保管的情况,应该是寄到大木桥路123号上海市人事局业务受理处。

  b. 《调动人员情况登记表》,已打印好的

  c. 《迁户落户确认单》

  d. 《申办常住户口登记表》,这个要自己填好内容。

  此时需缴纳150元手续费。
  
  3. 然后你要带着上面这些材料以及身份证、落户地址的户口本、房产证、结婚证去所在区的公安分居户政部门办理《准予迁入证明》,当场可取到。

  4. 拿着这些材料,你要到原档案所在单位办理人事办关系调出手续,主要就是档案的转移。有些单位会通过邮局寄档案,有些会密封后交给你自己带。我的就是后者。再到原户口所在派出所户籍部门办理销户和《户口迁移证》。都可以当场取。

  5. 拿着档案和材料到大木桥123号10号窗口(档案业务受理处)办理档案存档,需缴纳每年120元的保管费。拿到一张《存档凭证》。同时,请其在《申办常住户口登记表》上档案接收单位处盖章。

  6. 到提出申请的单位人事处,请其在《申办常住户口登记表》上申请单位处盖章。

  7. 拿着这些材料到大木桥123号人事局原受理窗口换领一张《申报户口证明信》

  8. 拿着这些材料和户口本到落户地址派出所办理入户手续,会在户口本上加上你的登记页。当场可办。入户一周后,即可去办新身份证。至此你的户口算落下了,不过还没完。还要办社保和公积金的转移手续。

  9. 请你的单位人事帮你建立上海的社保和公积金帐户。

  10. 同时你要到户口所在街道的社保服务中心办理劳动手册(现在社保社区化了,可以自己直接去街道办),拿着户口本、身份证和一张1寸照片(黑白彩色均可)就可以了,不需要工作合同。当场可办。不需要钱。比较奇怪的是劳动手册的钢印我所在街道的社保服务中心需要我自己再去金桥职业介绍所那里敲。

  11. 把户口本复印件和劳动手册交给单位人事,请其帮助办理原户口所在地的养老金帐户资金到上海的养老金帐户的转移。 这一步也又很多细节,本人还要提供原地原单位的厚厚的一份相关资料,邮寄过来,再提供人事局人才服务中心的证明材料,由单位人事去社保中心办理待批,直至转入,通过12333网站查到自己的养老账户打入金额、年限,才算结束。

  12. 带上身份证到上海公积金管理中心(在金陵东路靠西藏南路附近)办理公积金从外地转移来沪的证明(不知道是否要等你已经开始在上海缴纳公积金后还是建立帐户后就可以,我是已经缴纳了几个月了)。他们很清楚这个流程,所以不用太多解释。当场可开到一个你的上海公积金帐户的证明,写明了你的帐号、你单位的帐号和开户银行等信息。

  13. 把这个证明交给单位人事,请其帮助办理原户口所在地的公积金转移来沪。
  
  四.关于单位归属的困惑
  
  外企一般没有人事权,而由第三方代理。这时很多表格的章应该是谁来敲就是个很头疼的问题,好像谁都不能给一个明确的答复。我的实际经历也许有些参考价值。
  
  我在北京的工作单位和现在上海的单位是同一个外企,上海的是其分公司。而且在两地我们单位都是由Fesco提供人事代理服务的,但在北京时我的档案是保管在Fesco北京公司的,而在上海是直接保管在人事局下属的上海市人才服务中心的。这种情况下,我的所有原工作单位的章都是北京Fesco盖的。上海这边就比较乱。商调函和照顾困难调沪人员情况登记表上的接收单位是盖的我们公司上海分公司的章。而上海接收单位函和《申办常住户口登记表》表上盖的上海市人才服务中心的章。

2009年1月29日木曜日

EmEditor:在记事本与Word之间跳舞

豆豆看到同事水晶在Windows自带的记事本软件中吭哧吭哧地打字写稿,不禁惊叹一声:“你也太老土了,居然还在用记事本”。“简单的文本处理我用记事本,主要图个方便,稍微复杂一点的文档我会用Word的”,豆豆辩解道。“呵呵,记事本软件虽然小巧,只是功能太简单,而Word的功能虽然很强,但是操作复杂并且非常消耗资源。我推荐你还是用EmEditor吧,它正好处于记事本与Word之间,既小巧灵珑,功能还很丰富,完全可以替代记事本或写字板程序。”

先提供一个下载地址http://www.rj100.com/?fsid=71&id=244, 安装好了就试试下面的例子吧

实例1:EmEditor单挑写字板
看到水晶不相信的样子,豆豆说道:如果让EmEditor与记事本相比,未免有点以强欺弱,下面就让它跟素有“简化版Word”之称的写字板程序较量一下吧。

第一回合:单文档对多文档
写字板:水晶正在写一份年终总结报告,其中要引用不少其他的文本资料。不过写字板一次只能打开一个文本,引用资料时需要不停地切换到别的文档中,很不方便。
EmEditor:豆豆用EmEditor就比较轻松了,打开的多个文本文件以标签的形式显示,点击标签就可以快速在不同文本中轻松切换了。如果某篇稿件没有保存,标签上还会显示出“*”号来提示。将光标停放在标签上,则可以显示出该篇文档的保存位置。

让双击关闭标签
若想让EmEditor像傲游一样,双击即可关闭标签,可作如下设置:在标签栏空白处右击,选择“自定义标签”,在打开的对话框中点击“鼠标选项”按钮,在接下来弹出的对话框中,将“鼠标左键双击”设置为“关闭”即可。

第二回合:同一文档巧比较
写字板:为了比较同一篇超长文章的前后表述是否统一,需要来回地前后翻看比照,很不方便。
EmEditor:执行“窗口→分割”命令,此时窗口被划分为四格,单击鼠标使分割框固定。拖拉各窗口的滚动条,就可以同时查看同一篇文章的不同部分了。按Ctrl+F12键,可将四格窗口变成左右或上下排列的两格,按Shift+F12键,则可以移去分割条。

第三回合:因“文”而异,文档显示各不同
写字板:豆豆业余时间也帮忙维护着公司的网站,时常要编写修改些HTML、PHP的代码等。写字板包含一些非文本的格式符,容易出错。
EmEditor:用EmEditor打开一个HTML网页文件,会发现它使用不同的颜色来显示网页中的各项标志,这样在编辑修改代码时,就不容易出错了。EmEditor支持HTML、PHP、C++、Java、VBScript、JavaScript等多种流行的编程语言,是程序员不可多得的利器。

★在“工具→选择配置”菜单下,可将你经常使用的文件类型设置为默认打开类型,比如你是一个C++程序员,则选择C++项,这样在你新建文件时,它将自动以C++的语言格式来显示。
★为了便于查看文档,EmEditor提供了多种文档显示方式,我最喜欢的是第三种(按Ctrl+3组合键),文字会自动随着窗口边缘折行,看起来非常方便。
★执行“窗口→总在最上面”,这样EmEditor的窗口就不会被其他窗口掩盖了。



第四回合:便捷书签,一键定位
写字板:没有书签功能,需要自己手工翻页才能找到上次所看的文档位置。
EmEditor:按Ctrl+F2组合键,即可在当前位置建立一个书签,同样方法可在同一文档中建立多个书签,这样就不用担心在长文档中迷航了,只要按F2键(或Shift+F2键)即可快速在书签之间跳转了。

实例2:轻轻绘制课程表——插件的威力
在文本文件中用制表符画表是非常麻烦的,不过有了EmEditor插件,画表格就成了小事一桩。
第一步:EmEditor有着丰富的第三方插件支持,我们不用自己一个一个收集,早有热心的网友将它们收集整理,并打包成可安装程序了。按前文提供的地址下载安装后,再点击“工具→插件”,会发现多出了许多命令。
第二步:执行“工具→插件→绘制表格”命令,在打开的对话框中,设置好表格的行数、列数、表格线样式等参数,再点击“执行”按钮,即可在当前光标处绘制出一个字符型的表格来。
第三步:上面绘制的还只是一个空的表格,如果选中了多行文字(可以包括)空行,再执行“工具→插件→转换为表格”命令,在弹出对话框中稍加设置,点击“执行”按钮即可生成表格了。

★插件是EmEditor最吸引人的特点之一,上面仅举一例,实际上还有许多实用的插件,如计算文字数、简繁互转、插入数字序列、删除重复行、删除行首行尾空格等,它们的操作方法很简单,这里不再细述。
★插件太多严重影响到我们的操作,可以将那些很少用到的插件隐藏起来:执行“工具→插件→自定义插件”,在打开的对话框中,点击取消无用插件前面的对钩号,它们就不会在菜单中显示了。点选某一插件,再点击“卸载”按钮则可以完全删除该插件。
★在工具栏空白处右击,选中“插件工具栏”项,即可让所有插件以按钮图标的方式显示在工具栏上,这样我们在操作的时候,只要简单地点击相应按钮就可以了。

实例3:自动签名——善用EmEditor的宏
在日常的办公稿件或一些联络书信中,末尾往往留有同样一个签名,包括姓名、住址、电话等联系信息。每次都要重复输入,非常麻烦,有了EmEditor的自定义宏,我们就能一键输入了。
第一步:(快捷键Shift+F4)命令,此时光标下面会多出一个摄像机图标。
第二步:开始输入你的具体签名内容,如:
李看,资深IT自由撰稿人
善长多媒体、办公、网络应用、IT评论
QQ:XXXXX
MSN:XXXXXX
第三步:再次执行“宏→开始/停止录制”命令停止录制。此时按F4键试运行一次,上述的签名内容,果然自动输入完成。执行“宏→另存为”命令将宏保存下来(比如存为“自动签名.jsee”),以后只要执行“宏→自动签名”命令,就可快速输入你定义的签名内容了。

★如果建立了多个自定义宏,可以为最常用的宏设置一个运行快捷键。执行“宏→选择”命令,选择打开常用的那个宏文件,确定后,按F4键就可以快速运行该宏了。
★自定义宏文件默认保存在系统“我的文档”下的“My Macros”文件夹中,这在重装系统时很容易丢失。可执行“宏→自定义”命令调出自定义宏对话框,点选“选项”标签,重新设置宏保存的文件夹位置就可以了。

实例4:给当前文件在桌面建立快捷方式
对于经常要打开修改的文件,要是在桌面上为它建立一个快捷方式,打开的时候就方便多了。下面的这个宏,可以让你在桌面上为当前正在编辑的文件建立快捷方式,非常有用。
第一步:这个实例需要我们对JavaScript或VBScript脚本语方言有所了解,大家可以参看EmEditor的帮助文件。不过看不懂下面的代码也没关系,直接按下面的方法复制使用即可。在EmEditor中新建一个文件,输入以下代码:
if( document.FullName == "" ) {
alert( "The file is untitled." );
}
else {
WshShell = new ActiveXObject( "WScript.Shell" );
strDesktop = WshShell.SpecialFolders("Desktop");
oShellLink = WshShell.CreateShortcut(strDesktop + "\\Shortcut to My File.lnk");
oShellLink.TargetPath = document.FullName;
oShellLink.WindowStyle = 1;
oShellLink.Description = "Shortcut to My File";
oShellLink.WorkingDirectory = strDesktop;
oShellLink.Save();
}
第二步:将该文件另存为后缀为“.jsee”的文件(比如存为“在桌面建立快捷方式.jsee”,如果是使用VBScript编制的脚本,则后缀为“.vbee”),保存到“My Macros”文件夹中。执行“宏→选择”命令,选择打开上面建立的宏文件。以后,执行“宏→在桌面建立快捷方式”命令就可以为当前文件在桌面建立快捷方式了。

游标是什么

游标字面理解就是游动的光标。

用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等。

二 游标的分类

显式游标和隐式游标

显式游标的使用需要4步:

1. 声明游标

CURSOR mycur(vartype number) is

select emp_no,emp_zc from cus_emp_basic

where com_no = vartype;


2. 打开游标

open mycur(000627)

注:000627是参数

3. 读取数据

fetch mycur into varno, varprice;

4. 关闭游标

close mycur;

三 游标的属性

oracle 游标有4个属性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。

%ISOPEN判断游标是否被打开,如果打开%ISOPEN等于true,否则等于false;

%FOUND %NOTFOUND判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false;

%ROWCOUNT返回当前位置为止游标读取的记录行数。

四 示例

set serveroutput on;

declare

varno varchar2(20);

varprice varchar2(20);



CURSOR mycur(vartype number) is

select emp_no,emp_zc from cus_emp_basic

where com_no = vartype;

begin



if mycur%isopen = false then

open mycur(000627);

end if;



fetch mycur into varno,varprice;

while mycur%found

loop

dbms_output.put_line(varno||','||varprice);

if mycur%rowcount=2 then

exit;

end if;

fetch mycur into varno,varprice;

end loop;



close mycur;

end;


PL/SQL记录的结构和C语言中的结构体类似,是由一组数据项构成的逻辑单元。

PL/SQL记录并不保存在数据库中,它与变量一样,保存在内存空间中,在使用记录时候,要首先定义记录结构,然后声明记录变量。可以把PL/SQL记录看作是一个用户自定义的数据类型。

set serveroutput on;

declare



type person is record

(

empno cus_emp_basic.emp_no%type,

empzc cus_emp_basic.emp_zc%type);



person1 person;



cursor mycur(vartype number)is

select emp_no,emp_zc from cus_emp_basic

where com_no=vartype;



begin

if mycur%isopen = false then

open mycur(000627);

end if;



loop

fetch mycur into person1;

exit when mycur%notfound;

dbms_output.put_line('雇员编号:'||person1.empno||',地址:'||person1.empzc);

end loop;



close mycur;

end;


典型游标for 循环

游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当form循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)。使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。

set serveroutput on;

declare



cursor mycur(vartype number)is

select emp_no,emp_zc from cus_emp_basic

where com_no=vartype;



begin

for person in mycur(000627) loop

dbms_output.put_line('雇员编号:'||person.emp_no||',地址:'||person.emp_zc);

end loop;

end;

2009年1月19日月曜日

日本签证全攻略(讨论去日本问题)技术签证全攻略

日本签证全攻略(讨论去日本问题)技术签证全攻略

一、申请篇

我想很多人来日本都是打工赚钱的,如果你的主要目的不是在留学而是赚钱,那么技术签证是你最好的选择,相比留学签证,技术签证有如下
优点
1、真正的工作签证,享受各种保险待遇
2、多次往返,如果有老婆孩子也可以一起接过来
3、工资高,刚出去会低点可能就220W/年,但是随着年限工资会逐渐增加,基本上可以达到330w-720W/年
4、签证不需要日语基础(当然如果不会日语的话别人也不会请你)
5、如果不幸被抓去面签也不用担心日语,因为用中文对答
6、签证成功率高
那么技术签证有什么样的条件呢,我本身是做软件开发的,就以这个方向来说吧~,
条件(满足一个即可):
1、正规大学大专以上学历,大学专业对口,并持有相关的IT证书(成人大学,自学考试不在之列)
2、持有国家信息产业部颁发的IT证书之一:北大青鸟的ACCP证书,或者程序员 ,高级程序员(现在分为软件设计师,数据库管理员等)系统分析师 (满足该条件则不用考虑学历以及工作经验了,所以学历不好的朋友最好是去考一门这样的证书,其他的IT证书例如mcse啊之类的都不行)
3、10年以上该行业经验 (满足该条件则不用考虑学历和证书的问题了)
以上就是申请技术签证的条件,只要你满足其中的一条就有可能申请到签证(不是一定,因为能不能签证成功,运气占很大的成分)
接下来就是如何寻找机会了~~,如果你细心的话会发现上海、大连等地有很多的赴日软件公司,只要你日语达到了3及的水平就可以送到日本,但是找公司的时候要注意这个公司是中介性质还是日本公司在中国的分公司,如果是前者,那么中介费可能就很高,基本上是在3WRMB-8WRMB左右,但是很大一部分是在日本工作后在收取中介费,另外基本还有5W左右的押金,因此准备10W-15W的资金是必须的,,但是如果是后者即该公司是日本的分公司,那么就不用花一分钱了~,推荐大家找这样的公司。
找到公司后就开始办理在留,材料包括:最高学历公证书,在留申请表,照片,身份证复印件,以及一些附加的IT证书(如果有的话尽量提供),
但是根据各个地方不同材料也不一样,有的地方还需要提供公司的合同书等。
在留的办理时间一般是1-4个月,主要看是不是高峰期,一般1个月就能下来,但是偶很不幸遇到今年10月生特别多,所以等了4个月才申请到在留证书。在留资格证书的申请成功与否除了申请人自身的原因外很大一部分要看对方公司的条件,如果公司不具备有招收外国人的条件的话,那么在留就无法下来,如果该公司具备的话,在申请者达到偶刚才说的条件之一,并且材料真实无误的情况下下在留的几率达到90%,这点比留学,就学的高多了
等在留下来后就是签证了,签证材料包括:护照,在留证书、申请书、户口本复印件、身份证复印件。等,值得一提的是,户口本上的学历如果和目前的学历不一样的话要赶紧改过来,否则后果很严重,会被抓去面签,,一般1-3个星期就能下来。
接下来就是赴日准备了,偶就不多说了。。。。。

二、经历篇
本人5月申请再留资格证书,但是由于10月生多(入管这么解释)所以一直到了9月初才拿到再留,后来通过代签机构申请签证,两个星期后,由于户口本上学历和现在的不符合,所以被抓去面签,面签过程全中文对话,主要内容是关于公司以及个人问题,据实回答就好,然后就被T回家等消息,大概过了1个星期的漫长等待,也就是今天,偶的签证终于下来了,过程就是这么简单,比起就学或留学的,简单了很多,因为由日本公司做担保,所以我们只要提供个人的证件就好了。在条件真实且符合时签证率可以达到90%,基本上就是如果你运气不是特别特别的差签证肯定是没问题的

2009年1月15日木曜日

SAP BW职位剧增,移民就业新机遇

SAP BW职位剧增,移民就业新机遇

讲座内容:企业管理软件有着几十年的发展历史,erp系统无疑是最为成功的企业应用软件,被企业界广泛接受,并成为不少成功企业提高经营管理效益的关键事务处理系统。sap bw(business information warehouse),它被认为是满足用户需求数据仓库系统中功能最强的一个:满足sap和非sap系统的整合,丰富的数据转换工具,强大的 staging mechanisms,易于使用的前台报表,整合的web报表,通过不同的工具将数据转换到非sap系统中,使得信息分析员和决策者都可以迅速获得来自不同系统的高度集成化信息,进行数据的分析,提供准确的综合性报表以及商务智能功能等,特别是sap将r/3的报表和分析功能转移到bw后,使bw更具优势。

sap bw工作稳定、收入丰厚、不受经济影响而起伏。而且bw是sap一个相当新的产品,与其他传统的fi/co/mm/pp/sd等模块比,还有很大发展空间,而且相对需要工作经验也不是很长,就业机会又多。但是真正拥有bw实践经验的人并不多,所以拥有bw证书将使你在就业市场上更具有竞争力,目前全职的 bw技术人员年收入在8万至12万之间, 而独立的咨询顾问更高达时薪为$70至$140。

目前,市场急需的sap bw 工作职位共有4种:

1)bw architect(时薪$100-$140):负责全面数据及系统的设计以及所有bw项目的整合和审核管理符合业务需求分析的开发标准以及企业级bw系统模型等。
2)bw administrator(时薪$80-$120) :负责bw整体形能的监控、调试和优化,审核数据模型和系统框架,核查用户权限,审阅及安装oss notes,协调bw系统升级和测试,质量检控等。
3)bw etl developer (时薪$80-$100) : 设计、开发、实现数据仓库方案及数据转换等。
4)bw report developer (时薪$70-$90) : 开发queries, reports, charts 和reporting variables,进行数据分析及业务分析等。

朋友,sap bw都应该是您应该郑重考虑的就业方向。因为在北美生存,永远都是逆水行舟,不进则推,其实除了语言能力之外,技术知识的更新和就业方向的把握就是最为关键的了。在求职的道路上,sap bw显然为广大的华人技术移民提供了一次难得的、可以利用的就业机遇,强占先机,才能始终从容!

主讲人:mr. wang;

-- 被业界公认为 “sap bw第一名师 ”;
-- 王者风范!多市真正的sap bw课程缔造者;
-- 王老师具有15年深厚的it工作经验,拥有sap bw证书,目前就职于“top 5 consulting firm”;
-- 曾多次被citpac (chinese it professionals at canada)邀请为sap技术的主持人。

活动时间:2008年8月14日 19:00 - 22:00
所在地区:north york
联 系 人:david
联系电话:416-665-1888
电邮地址:发送电子邮件
相关地址:200 consumers road,suite 118

来源:中明出国网(移民频道)

2009年1月9日金曜日

希赛教育--我的学习计划

1、感谢您对希赛教育的信任。

2、请您准备以下教材/资料:
(1)数据库系统工程师考试培训视频教程,张友生、王勇、李成主讲,希赛IT教育研发中心出版

(2)数据库系统工程师考试串讲视频教程,张友生主讲,希赛IT教育研发中心出版

(3)数据库系统工程师考试考点分析与真题详解(信息系统综合知识篇),希赛IT教育研发中心组编,张友生、殷建民主编,电子工业出版社

(4)数据库系统工程师考试考点分析与真题详解(数据库设计与管理篇),希赛IT教育研发中心组编,周峻松、张友生主编,电子工业出版社

(5)数据库系统工程师考试试题分类精解与题型练习(第2版),希赛IT教育研发中心组编,张友生主编,电子工业出版社

(7)数据库系统工程师考试考前串讲,希赛IT教育研发中心组编,王勇主编,电子工业出版社

3、必须学习:
(1)学习教材《数据库系统工程师考试考点分析与真题详解》(信息系统综合知识篇、数据库设计与管理篇),这2本教材涉及了考试大纲规定的所有知识点。学习时间:2009年1月6日-2009年3月5日。

(2)学习教材《数据库系统工程师考试培训视频教程》,该教材是整个考试的基础,一定要熟练掌握其中的内容。学习时间:2009年3月6日-2009年3月31日。

(3)学习教材《数据库系统工程师考试试题分类精解与题型练习(第2版)》,该教材包含对历年试题的分析与解答。由于考试试题有很大的重复性和相似性,所以,一定要掌握其中的知识点。特别是针对自己的弱点认真学习对应章节。学习时间:2009年4月1日-2009年4月20日。

(4)学习教材《数据库系统工程师考试考前串讲》,该教材包含整个考试的核心知识。学习时间:2009年4月21日-2009年5月18日。

(5)学习教材《数据库系统工程师考试串讲视频教程》,该教材包含考试的重点和难点问题的讲解,特别是对解题方法和技巧的讲解。学习时间:2009年5月19日-2009年5月21日。

(6)在线模拟测试:从2009年4月份开始,就可以进行在线模拟测试。通过模拟测试来检查自己的学习状况,查漏补缺。

4、建议学习:
上午考试中英语占5分,考查内容是计算机英语,所以平时要注意多看与数据库技术和软件技术有关的英文文章。为了方便学员复习英语,学赛网IT英语频道(http://www.educity.cn/ite/)里提供了一些有用的文章,如果有空,建议每天阅读1篇。

5、希赛教育已经为您提供了模拟试题(2009年3月15日开放),跟踪您的学习进展。具体做模拟试题的时间由您自己把握(建议您最好在把教材和资料读得差不多的时候再做模拟试题,这样效果会好些),但最迟不超过2009年5月19日,超过规定时间再做模拟试题的,老师不再批改。

6、以上复习进度仅供参考。您可根据自己的实际水平和空余时间的安排,调整学习计划。

7、在答疑栏目中提问前,请先学习已有问题,或者搜索是否已经有您要问的问题。

8、如有任何问题,请及时联系。有关技术和考试方面的疑问,请在远程辅导平台答疑栏目中提出;有关商务方面的问题,请与tr@csai.cn联系。如果您对本辅导不满意或有好的建议,请告诉edu@csai.cn。

2009年1月8日木曜日

oracle 高手必读

1. 删除表的注意事项
在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM
表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。

2.having 子句的用法
  having 子句对 group by 子句所确定的行组进行控制,having
子句条件中只允许涉及常量,聚组函数或group by 子句中的列.
3.外部联接"+"的用法
  外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被返回.若二者均不带’+’,则二者中无法匹配的均被返回.利用外部联接"+",可以替代效率十分低下的
not in 运算,大大提高运行速度.例如,下面这条命令执行起来很慢
用外联接提高表连接的查询速度
在作表连接(常用于视图)时,常使用以下方法来查询数据:
SELECT PAY_NO, PROJECT_NAME
FROM A
WHERE A.PAY_NO NOT IN (SELECT PAY_
NO FROM B WHERE VALUE >;=120000);
---- 但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,主要因为NOT
IN要进行一条一条的比较,共需要10000*10000次比较后,才能得到结果。该用外联接后,可以缩短到1分左右的时间:
SELECT PAY_NO,PROJECT_NAME
FROM A,B
WHERE A.PAY_NO=B.PAY_NO(+)
AND B.PAY_NO IS NULL
AND B.VALUE >;=12000;

4.set transaction 命令的用法
在执行大事务时,有时oracle会报出如下的错误:
ORA-01555:snapshot too old (rollback segment too small)
  这说明oracle给此事务随机分配的回滚段太小了,这时可以为它指定一个足够大的回滚段,以确保这个事务的成功执行.例如

set transaction use rollback segment roll_abc;
delete from table_name where ...
commit;
  回滚段roll_abc被指定给这个delete事务,commit命令则在事务结束之后取消了回滚段的指定.

5.数据库重建应注意的问题
  在利用import进行数据库重建过程中,有些视图可能会带来问题,因为结构输入的顺序可能造成视图的输入先于它低层次表的输入,这样建立视图就会失败.要解决这一问题,可采取分两步走的方法:首先输入结构,然后输入数据.命令举例如下
(uesrname:jfcl,password:hfjf,host
stingra1,数据文件:expdata.dmp):
imp [email=jfcl/hfjf@ora1]jfcl/hfjf@ora1[/email] file=empdata.dmp rows=N
imp [email=jfcl/hfjf@ora1]jfcl/hfjf@ora1[/email] file=empdata.dmp full=Y buffer=64000
commit=Y ignore=Y
  第一条命令输入所有数据库结构,但无记录.第二次输入结构和数据,64000字节提交一次.ignore=Y选项保证第二次输入既使对象存在的情况下也能成功.

select a.empno from emp a where a.empno not in
(select empno from emp1 where job=’SALE’);
  倘若利用外部联接,改写命令如下:
select a.empno from emp a ,emp1 b
where a.empno=b.empno(+)
and b.empno is null
and b.job=’SALE’;
  可以发现,运行速度明显提高.

6.从已知表新建另一个表:
CREATE TABLE b
AS SELECT * (可以是表a中的几列)
FROM a
WHERE a.column = ...;

7.查找、删除重复记录:
法一: 用Group by语句 此查找很快的
select count(num), max(name) from student
--查找表中num列重复的,列出重复的记录数,并列出他的name属性
group by num
having count(num) >;1 --按num分组后找出表中num列重复,即出现次数大于一次
delete from student(上面Select的)
这样的话就把所有重复的都删除了。-----慎重
法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:
---- 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录
SELECT * FROM EM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D
--D相当于First,Second
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
EM5_PIPE_PREFAB.DSNO=D.DSNO);
---- 执行下面SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录
DELETE FROM EM5_PIPE_PREFAB
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
EM5_PIPE_PREFAB.DSNO=D.DSNO);
8.返回表中[N,M]条记录:
取得某列中第N大的行
select column_name from
(select table_name.*,dense_rank() over (order by column desc)
rank from table_name)
where rank = &N;
 假如要返回前5条记录:
  select * from tablename where rownum<6;(或是rownum <= 5
或是rownum != 6)
假如要返回第5-9条记录:
select * from tablename
where …
and rownum<10
minus
select * from tablename
where …
and rownum<5
order by name
 选出结果后用name排序显示结果。(先选再排序)
注意:只能用以上符号(<、<=、!=)。
select * from tablename where rownum != 10;返回的是前9条记录。
不能用:>;,>;=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件
不成立,查不到记录.
另外,这个方法更快:
select * from (
select rownum r,a from yourtable
where rownum <= 20
order by name )
where r >; 10
这样取出第11-20条记录!(先选再排序再选)
要先排序再选则须用select嵌套:内层排序外层选。
rownum是随着结果集生成的,一旦生成,就不会变化了;同时,生成的结果是依次递加的,没有1就永远不会有2!
rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:
1: 假如 判定条件是常量,则:
只能 rownum = 1, <= 大于1 的自然数, = 大于1 的数是没有结果的, 大于一个数也是没有结果的
即 当出现一个 rownum 不满足条件的时候则 查询结束   this is stop key!
2: 当判定值不是常量的时候
若条件是 = var , 则只有当 var 为1 的时候才满足条件,这个时候不存在 stop key ,必须进行 full
scan ,对每个满足其他where条件的数据进行判定
选出一行后才能去选rownum=2的行……

9.快速编译所有视图
----
当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。

SQL >;SPOOL ON.SQL
SQL >;SELECT ‘ALTER VIEW ‘||TNAME||’
COMPILE;’ FROM TAB;
SQL >;SPOOL OFF
然后执行ON.SQL即可。
SQL >;@ON.SQL
当然,授权和创建同义词也可以快速进行,如:
SQL >;SELECT ‘GRANT SELECT ON ’
||TNAME||’ TO USERNAME;’ FROM TAB;
SQL >;SELECT ‘CREATE SYNONYM
‘||TNAME||’ FOR USERNAME.’||TNAME||’;’ FROM TAB;

10.读写文本型操作系统文件
---- 在PL/SQL 3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下:
DECALRE
FILE_HANDLE UTL_FILE.FILE_TYPE;
BEGIN
FILE_HANDLE:=UTL_FILE.FOPEN(
‘C:\’,’TEST.TXT’,’A’);
UTL_FILE.PUT_LINE(FILE_HANDLE,’
HELLO,IT’S A TEST TXT FILE’);
UTL_FILE.FCLOSE(FILE_HANDLE);
END;

11.在数据库触发器中使用列的新值与旧值
----
在数据库触发器中几乎总是要使用触发器基表的列值,如果某条语句需要某列修改前的值,使用:OLD就可以了,使用某列修改后的新值,用:NEW就可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。


12.数据库文件的移动方法
当想将数据库文件移动到另外一个目录下时,可以用ALTER DATABASE命令来移动(比ALTER
TABLESPACE适用性强):
1. 使用SERVER MANAGER关闭实例.
SVRMGR >; connect internal;
SVRMGR >; shutdown;
SVRMGR >;exit;
2. 使用操作系统命令来移动数据库文件位置(假设这里操作系统为SOLARIS 2.6). 在UNIX中用
mv命令可以把文件移动到新的位置,
#mv /ora13/orarun/document.dbf /ora12/orarun
3. 装载数据库并用alter database命令来改变数据库中的文件名.
SVRMGR >; connect internal;
SVRMGR >; startup mount RUN73;
SVRMGR >; alter database rename file
>; ‘/ ora13/orarun/document.dbf’
>; ‘/ ora12/orarun/document.dbf’;
4. 启动实例.
SVRMGR >; alter database open;

13.连接查询结果:
表a 列 a1 a2
记录 1 a
1 b
2 x
2 y
2 z
用select能选成以下结果:
1 ab
2 xyz
下面有两个例子:
1.使用pl/sql代码实现,但要求你组合后的长度不能超出oracle varchar2长度的限制
create or replace type strings_table is table of varchar2(20);

/
create or replace function merge (pv in strings_table) return
varchar2
is
ls varchar2(4000);
begin
for i in 1..pv.count loop
ls := ls || pv(i);
end loop;
return ls;
end;
/
create table t (id number,name varchar2(10));
insert into t values(1,'Joan');
insert into t values(1,'Jack');
insert into t values(1,'Tom');
insert into t values(2,'Rose');
insert into t values(2,'Jenny');
column names format a80;
select t0.id,merge(cast(multiset(select name from t where t.id
= t0.id) as strings_table)) names
from (select distinct id from t) t0;
drop type strings_table;
drop function merge;
drop table t;

2.纯粹用sql:
表dept, emp
要得到如下结果
deptno, dname, employees
---------------------------------
10, accounting, clark;king;miller
20, research, smith;adams;ford;scott;jones
30, sales, allen;blake;martin;james;turners
每个dept的employee串起来作为一条记录返回
This example uses a max of 6, and would need more cut n
pasting to do more than that:
SQL>; select deptno, dname, emps
2 from (
3 select d.deptno, d.dname, rtrim(e.ename ||', '||
4 lead(e.ename,1) over (partition by d.deptno
5 order by e.ename) ||', '||
6 lead(e.ename,2) over (partition by d.deptno
7 order by e.ename) ||', '||
8 lead(e.ename,3) over (partition by d.deptno
9 order by e.ename) ||', '||
10 lead(e.ename,4) over (partition by d.deptno
11 order by e.ename) ||', '||
12 lead(e.ename,5) over (partition by d.deptno
13 order by e.ename),', ') emps,
14 row_number () over (partition by d.deptno
15 order by e.ename) x
16 from emp e, dept d
17 where d.deptno = e.deptno
18 )
19 where x = 1
20 /
DEPTNO DNAME EMPS
------- ----------- ------------------------------------------

10 ACCOUNTING CLARK, KING, MILLER
20 RESEARCH ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH
30 SALES ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD

14.在Oracle中建一个编号会自动增加的字段,以利于查询
1、建立序列:
CREATE SEQUENCE checkup_no_seq
NOCYCLE
MAXVALUE 9999999999
START WITH 2;
2、建立触发器:
CREATE OR REPLACE TRIGGER set_checkup_no
BEFORE INSERT ON checkup_history
FOR EACH ROW
DECLARE
next_checkup_no NUMBER;
BEGIN
--Get the next checkup number from the sequence
SELECT checkup_no_seq.NEXTVAL
INTO next_checkup_no
FROM dual;
--use the sequence number as the primary key
--for the record being inserted
:new.checkup_no := next_checkup_no;
END;

15.查看对象的依赖关系(比如视图与表的引用)
查看视图:dba_dependencies 记录了相关的依赖关系
查东西不知道要查看哪个视图时,可以在DBA_Objects里看,
select object_name from dba_objects where object_name like
'%ROLE%'(假如查看ROLE相关)
然后DESC一下就大体上知道了。

16.要找到某月中所有周五的具体日期
select to_char(t.d,'YY-MM-DD') from (
select trunc(sysdate, 'MM')+rownum-1 as d
from dba_objects
where rownum < 32) t
where to_char(t.d, 'MM') = to_char(sysdate, 'MM')
--找出当前月份的周五的日期
and trim(to_char(t.d, 'Day')) = '星期五'
--------
03-05-02
03-05-09
03-05-16
03-05-23
03-05-30
如果把where to_char(t.d, 'MM') = to_char(sysdate,
'MM')改成sysdate-90,即为查找当前
月份的前三个月中的每周五的日期。

2009年1月7日水曜日

怎样成长为一个真正的Oracle DBA

怎样成长为一个真正的Oracle DBA

Oracle分两大块,一块是开发,一块是管理。

开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭;管理则需要对Oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会 down掉整个数据库,相对前者来说,后者更看重经验。因为数据库管理的责任重大,很少公司愿意请一个刚刚接触Oracle的人去管理数据库。

对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。

二、学习方法

我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记。看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。

学习的过程也是从点到线,从线到网,从网到面的过程。当点变成线的时候,你会有总豁然开朗的感觉。当网到面的时候,你就是高手了。很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性。

由别人来回答你的问题,会让你在短时间内不费劲地弄懂这个知识点,然而通过自己的努力去研究它,不但会更深入的了解这个知识点,更重要的是在研究的过程会提高你解决问题和分析问题的能力。总的来说,没有钻研的学习态度,不管学什么东西,都不会成功的。当然,初学的人很多时候是因为遇到问题时,无从下手,也不知道去哪里找资料,才会到论坛上提问题的。但我认为,在提问的时候,是不是可以问别人是如何分析这个问题?从哪里可以找到相关的资料?而不是这个问题的答案是什么?授人以鱼不如授人以渔。

下面我讲下,我处理问题的过程。首先要知道Oracle的官方网站:www.oracle.com。这里有Oracle的各种版本的数据库、应用工具和权威的官方文档。

其次,还要知道http://metalink.Oracle.com/。这里是买了Oracle服务或是Oracle的合作伙伴才可以进去的,里面有很多权威的解决方案和补丁。

然后就是一些著名网站:asktom.Oracle.com www.orafaq.net, www.dbazine.com。这里有很多遇到问题了的经验之谈。

如果是概念上的问题,第一时间可以找tahiti.Oracle.com,这里会给你最详细的解释。如果在运行的过程中出了什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言。

三、Oracle的体系

Oracle的体系很庞大,要学习它,首先要了解Oracle的框架。在这里,简要的讲一下Oracle的架构,让初学者对Oracle有一个整体的认识。

1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)

控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件。

数据文件:存储数据的文件。

重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件。 参数文件:定义Oracle例程的特性,例如它包含调整SGA中一些内存结构大小的参数。

归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。

密码文件:认证哪些用户有权限启动和关闭Oracle例程。

2、逻辑结构(表空间、段、区、块)

表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。

段:是对象在数据库中占用的空间。

区:是为数据一次性预留的一个较大的存储空间。

块:Oracle最基本的存储单位,在建立数据库的时候指定。

3、内存分配(SGA和PGA)

SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反PGA是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收。

4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)

数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件。

日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件。

系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复。

进程监控:负责在一个Oracle进程失败时清理资源。

检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。 归档进程:在每次日志切换时把已满的日志组进行备份或归档。

服务进程:用户进程服务。

用户进程:在客户端,负责将用户的SQL语句传递给服务进程,并从服务器段拿回查询数据。

5、Oracle例程

Oracle 例程由SGA内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。

6、SCN(System Change Number)

系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。

四、深入学习

管理:可以考OCP证书,对Oracle先有一个系统的学习,然后看Oracle Concepts、Oracle online document,对Oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、STATSPACT、 DATAGUARD、TUNING、BACKUP&RECOVER等等。

开发:对于想做Oracle开发的,在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。PL /SQL主要是包括怎么写SQL语句,怎么使用Oracle本身的函数,怎么写存储过程、存储函数、触发器等。Oracle的开发工具主要就是 Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer这些),学会如何熟练使用这些工具。

介绍几个网站

http://tahiti.Oracle.com Oracle的官方文档

http://metalink.Oracle.com/Oracle的技术支持网站。需要购买Oracle服务才能有一个帐号,才能登陆,有大量的Knowledge Base,大量问题解决经验。

http://www.Oracle.com Oracle的官方网站,可以在这里down Oracle的软件、官方文档和获得最新的消息

http://www.dbazine.com/Oracle的杂志