밴쿠버에서 IT 직장 잡기(4) – 면접 경험담(BCLC)

by

캐나다에 이민오신 IT 관련 직종 경력자분들을 위해 캐나다에 취업하는 것이 불가능하지 않다는 것을 알려드리고자, 보잘것 없지만 저의 경험담을 알려드리고자 포스팅을 하고 있습니다. 궁금하신 점은 언제든 코멘트 해주세요.

이전 포스팅을 읽고 이글을 보시면 더욱 이해가 빠르실 것 같습니다.

BCLC는 어떤 회사인가요?

BCLC 웹 사이트 : http://corporate.bclc.com/who-we-are.html

BCLC는 British Columbia Lottery Corporation의 약자로서 캐나다 BC주의 준 관공서(Crown corporation)에 해당 됩니다. 한국으로 치면 수자원 공사나 한국 전력 공사 등과 비슷한 급이 아닐까 생각됩니다.  한마디로 준 공무원이 되는 것이지요. 캐나다에서의 공무원 및 준공무원은 따로 공무원 시험을 통해 되는 것이 아니라 일반 회사와 비슷한 방식으로 취업이 됩니다.(다른 방법이 있는지는 모르나 저의 경험상 그렇습니다. 혹시 다른 경험이 있으신분은 코멘트 달아주세요.)

어떻게 응모했을까요

2013년 12월경 eluta 웹 사이트에서 BCLC에서 DBA 모집 광고를 보고 BCLC의 HR 웹사이트에서 apply를 했습니다. (대부분 큰 규모의 회사들은 웹사이트를 통해 Job apply를 합니다.) 모집분야는 역시 DBA(Database Administrator)였는데 Oracle과 Informix를 사용할 줄 아는 사람을 뽑고 있었습니다. Informix는 전에 IBM에 인수되어 영역은 넓지 않지만 꾸준이 사용되고 있는 데이터베이스입니다. 그러므로 전 당연히 경험은 전혀 없었습니다. 사실 Informix 경험이 있는 사람을 뽑는게 더 힘들지요. 하지만 전 Oracle 경험이 충분했기때문에 HR담당자로부터 일단 전화를 받았습니다.

늘 하던데로 가지고 있던 나만의 표준 이력서와 커버레터를 BCLC 구인 포스팅의 내용에 맞추어 커스터마이징 한 후 apply 했습니다.

 

면접제의는 어떻게 받았을까요

제가 BCLC에 Job apply하고 3~4일 후에 BCLC의 HR 담당자로부터 전화를 받았습니다. 보통은 아무때나 그냥 전화해서 바로 전화 인터뷰를 하는데, 고맙게도 이 HR 담당자는 저에게 전화를 해서 내일 간단한 전화 인터뷰를 해도 되겠냐고 물어왔습니다. 저야 당연히 OK 했고, 하루동안 열심히 전화 인터뷰 준비를 했습니다.

다음날 약속한 시간에 전화가 다시 왔고, 차근 차근 전화 인터뷰에 응했습니다. 미리 준비를 했었고, 비교적 쉬운 질문들을 했었기때문에 인터뷰 분위기도 좋았고, IT 매니저와 시간을 협의 해서 면접 날짜를 잡겠다고 말했습니다. 아주 기뻤지요.

근데, 근무 위치가 Kamloops, BC(Vancouver에서 3-4시간 거리, 서울 – 광주 정도의 거리)였기때문에 직접 인터뷰를 하지 않고, Skype를 통해 인터뷰를 하자고 제의 해왔습니다. 저야 감지덕지이지요.

HR 담당자는 이메일로 인터뷰 날짜와 인터뷰를 누가 볼것인지 IT 매니저 이름을 보내왔습니다. 일주일 정도의 시간이 있었고, 저는 열심히 준비를 했습니다.

근데 이 와중에 Translink에서 전화 인터뷰가 갑작스레 온 것입니다. Translink는 다음 포스팅에 자세히 알려드리겠습니다.

면접은 어떻게 진행되었을까요

열심히 준비를 했고, 면접 당일 Skype 인터뷰가 진행되었습니다. 처음 해보는 Skype 인터뷰이고, 사실 직접 보고 이야기 하는게 아니다보니 저쪽에서 말하는 것도 잘 안들리고 하더군요. 제 영어가 짧다보니… 🙁

암튼, Skype로 연결된 후 처음에 간단한 인사와 small talk가 진행되었는데, 사실 무슨 말인지 못알아 들어서 버벅대느라 분위기가 서먹서먹해져버렸지요..

이상한 분위기에서 면접은 진행되었고, 면접은 3명의 Interviewer가 진행하였고, IT 매니저, IT 부매니저, HR 담당자 였습니다. 면접 질문은 무슨 수능 시험문제처럼 생긴 booklet 을 펼쳐보더니 그 중에서 발췌하여 질문을 하더군요. 1시간동안 상당히 많은 질문을 했는데 기술적인 질문은 거의 없었습니다.

90% 이상이 Behavioural question 이었습니다.

예를 들면,

1. 자기 소개를 해봐라.

2. 만일, 일하는 중에 회사 규정을 조금 어기면서 일처리를 하게 됐는데 이 결과가 잘못 되었을 경우가 있었다면 어떤 경우였고, 어떻게 처리 하였으며, 어떻게 느꼈는가?

3. 함께 일하는 동료와 의견 충돌이 있었을 경우 어떻게 대처하였는가?

4. 내가 현재 하고 있는 일이 아주 중요한 일이 있는데 매니저가 긴급한 다른 일을 시킨다면 어떻게 대처하겠는가?

이 외에도 20가지정도의 질문을 했는데 일부 질문은 알아듣기도 힘든 아주 긴 질문도 있었습니다. 사실 질문책자를 보면서 읽으며 저에게 질문을 하는 것이다 보니 질문 속도도 빠르고 더 알아듣기도 힘든부분이 있었습니다. 덕분에 계속 Pardon me? Sorry? 만 하다가 분위기는 점점 안좋아지고 면접은 끝이 났습니다. 분위기를 보아하니 안될 것 같더군요. 상당히 기대를 많이 했었는데….

합격통보는 어떻게 받을까요

역시나 불합격되었습니다. 그래서 이부분은 잘… ㅠ.ㅠ

그럼 다음에는 Translink(Metro Vancouver 산하 관공서)에서 면접한 경험담을 올려드릴께요.

감사합니다.

밴쿠버에서 IT 직장 잡기 (3) – 면접 경험담(Vancouver 시청)

by

캐나다에 이민오신 IT 관련 직종 경력자분들을 위해 캐나다에 취업하는 것이 불가능하지 않다는 것을 알려드리고자, 보잘것 없지만 저의 경험담을 알려드리고자 포스팅을 하고 있습니다. 궁금하신 점은 언제든 코멘트 해주세요.

이전 포스팅을 읽고 이글을 보시면 더욱 이해가 빠르실 것 같습니다.

어떻게 응모했을까요

캐나다에 와서 짧은 영어로 여러 IT관련 분야 멘토분들과 만나서 이야기 하며 정성스럽게 많은 수정을 거친 이력서로 인터넷 잡 포스팅(job posting)을 통해 Job apply를 하다보니 간혹 몇군데서 연락이 오시 시작한 것이 2013년 9월경부터입니다.

불행하게도 가장 처음 연락 온 곳이 밴쿠버 시청(City of Vancouver)입니다. 참고로 말씀 드리면 T-net 웹 사이트를 통해 밴쿠버 시청에서 올린 잡 포스팅을 보게 되었고 그 잡 포스팅에 맞게 나의 표준 이력서와 커버레터를 약간 커스터마이징하여 잡 포스팅을 확인한 다음날 밴쿠버 시청 웹사이트에서 직접 Job apply를 하였습니다.

참고로 밴쿠버 시청에서 올린 Job posting에 의하면 Job apply 기간을 단 2주일로 제한하였고, 2주동안 apply한 지원자에 한해 서류심사를 통해 개인적으로 연락을 준다고 되어 있었습니다.(일반적인 회사에서는 해당 Job 포지션이 채워질때까지 계속 Job apply를 받지만 밴쿠버시청은 그렇지 않았습니다.) 하지만 지금 생각해보면 밴쿠버 시청은 워낙 인기가 있는 일자리이기때문에 2주도 아주 긴 시간이 아닌가 생각됩니다. 그당시 2주동안 100명이 넘는 지원자가 지원했었다고 했었거든요. 그 중에 6명정도만 서류심사에 합격하였고 면접의 기회를 얻게 되었습니다.

이 포지션은 DBA(Database Administrator)였습니다. 시청에서는 쓰는 포지션의 이름은 조금 다르긴 했는데 어차피 하는 일은 DBA 입니다.

참고로 말씀드리면 인터넷을 통해 수많은 Job posting을 확인할때 아주 꼼꼼하게 내용을 읽어볼 필요가 있습니다. 그 Job posting을 아주 정확히 파악해야만 job apply에 사용할 나의 이력서와 커버레터를 적절히 커스터마이징할 수 있기때문이지요. 모든 Job posting에 똑같은 이력서와 커버레터를 보내게 되면 연락올 확률은 아주 희박하답니다.

면접제의는 어떻게 받았을까요

저는 이 6명에 포함되는 행운을 얻었고, 처음 연락은 IT부서 매니저로부터 이메일로 받았습니다. 보통 회사에서는 HR 담당자가 예고없이 전화를 걸어 전화 인터뷰를 하는 것이 일반적이지만, 시청은 조금 방식이 다릅니다. 밴쿠버시청뿐 아니라 버나비 시청도 마찬가지로 일반적으로 서류심사에 합격하면 이메일로 기술시험 제의를 하게 됩니다. 즉, 전화인터뷰는 없습니다.(단, 응시자의 집이 시청건물로부터 너무 멀리 떨어져 있어서 직접 오기 힘들 경우 전화인터뷰를 하기도 한답니다. 예를 들면 밴쿠버 시청에 캘거리에 사는 사람이 응모했을 경우이지요.) 저 같이 영어를 잘 못하는 사람에게는 아주 훌륭한 제도이지요. 🙂

밴쿠버시청의 IT부서 매니저로부터 기술시험 제의 이메일을 받았고, 내용은 아주 간단했습니다. 너의 경력이 맘에 드니 실제 너의 능력을 한번 보자는 내용이고, 특히 저의 DB2 기술에 관심이 많다는 것을 언급하였습니다. Job posting에서는 Oracle, MS SQL, DB2 기술(모두 Database 벤더 이름입니다.)이 모두 열거되어 있었으나, 이 IT 매니저는 DB2를 잘하는 사람을 뽑고 싶어했던 것입니다. 제가 면접때 물어보니 IT팀의 DBA중 DB2 담당자가 은퇴를 하기때문에 그 일을 이어 할 사람이 필요했덧 것입니다.

기술 시험은 어떻게 진행되었을까요

보통 기술 시험은 이메일을 받고 나서 1~2주 후에 보게 됩니다. 이메일로 받은 기술시험 제의 날짜가 괜찮으면 그날 참석하면 되고, 시간을 변경하고 싶으면 이메일 회신을 보내서 시간을 변경하시면 됩니다.

저는 캐나다에 와서 처음 보는 기술시험이었고 아주 긴장이 되었습니다. 사실 저는 Oracle database 전문가였고 DB2는 곁다리로 조금 경험해봤을뿐이기때문에 더욱 긴장이 되어 일단 2주간 닥치는데로 DB2 공부를 하였습니다.

기술시험 당일날, 저는 30분전에 시청건물에 도착하여 주차를 한 후 20분간 다시 한번 내용을 정리한 후 약속시간 10분전에 건물로 들어갔습니다. 현관문을 들어서니 IT 매니저가 응시자들을 직접 기다리고 있었습니다. 매니저의 얼굴은 LinkedIn을 통해 대략 확인을 하고 갔었기때문에 바로 알아볼 수 있었어요.

매니저와 가볍게 인사를 하였고, 매니저는 다른 한명의 응시자가 더 있다고 같이 좀 더 기다리자고 했습니다. 하긴 저는 10분 일찍 왔으니…

좋은 기회였습니다. 짧은 영어로 매니저와 이것저것 small talk를 했습니다. 그 와중에 지나가던 한국사람(밴쿠버 시청에서 일한지 7년쯤 된 IT 개발자)과 인사를 나누게 되었습니다. 같은 한국사람이라며 매니저가 인사를 시켜준 것입니다.

화기애애한 분위기 속에서 다른 응시자가 와서 함께 작은 회의실로 이동하여 그곳에서 1시간동안 기술 시험을 진행했습니다. 시험은 일부 객관식 일부 주관식이며, 일반적인 데이터베이스 상식, DB2 파트, Oracle 파트, MS SQL 파트, 총 4개의 파트로 나뉘어 있었고, 난이도는 중상쯤 되었습니다. 하지만 잘 모르는 내용도 최대한 많이 쓰려고 했습니다. 그렇게 저는 1시간을 딱 채워서 제출을 했습니다. 영어 문법도 엉망이고 글씨도 엉망이었지만, 나중에 알고보니 기술시험은 제가 6명중 1등을 했더군요….

면접은 어떻게 진행되었을까요

기술시험에 통과 하면 면접을 진행하게 됩니다. 저는 기술시험을 보고 3일 후(기술시험이 금요일이었기때문에..) 월요일에 면접 제의 이메일을 받았습니다. 일단 기술시험은 합격했단 얘기지요. 기뻤습니다. 하지만 더 긴장이 되더군요. 영어가 짧아서..

암튼, 최대한 연습을 많이 해서 지난번 기술시험때와 비슷한 방식으로 시청에 방문하였습니다. 이번엔 매니저가 좀 바쁜관계로 조금 늦게 면접이 진행되었습니다. 면접 진행은 3명의 패널과 저, 총 4명이 회의실에서 진행을 했고, 패널로는 매니저, HR 담당자, IT 직원이 참석을 했습니다.

3명의 패널은 미리 준비한 질문지(A4용지로 6페이지 가량)로 돌아가며 질문을 했고, 제가 답변을 하면 모두 그 질문지에 제 답변을 받아 쓰는 방식이었습니다. 면접의 공정성을 기하기 위해 이렇게 하는 것 같았습니다.

면접의 질문들은 제가 미리 준비했던것에서 많이 빗나갔습니다. 사실 일반적으로 식상한 질문들을 하지는 않더군요. 식상한 면접 질문들을 약간씩 변경하거나 꼬아서 내는 방식이었습니다. 영어가 짧은 저에게는 아주 힘든 난관이었지요. 사실 엉뚱한 대답도 많이 했습니다. 덕분에 면접 분위기는 슬슬 싸늘해져가기도 했구요.. ㅠ.ㅠ

면접 질문은 어떤것들이 있었을까요

제가 캐나다 와서 취업 준비를 하는 중에 가장 궁금했던 것 중에 하나가 면접 질문입니다. 과연 어떤질문을 할 것이며, 어떻게 대답해야 하는가? 사실 저의 영어실력이 너무 짧은 탓에 미리 준비를 하지 않으면 제대로 대답할 수 없을 거란 것을 잘 알고 있었기 때문이지요.

면접보고 나서 면접 질문들을 정리해 둔것이 있었는데 지금 찾아보려니 찾을 수가 없네요. 대략 기억나는 것만 적어볼께요.

1. 밴쿠버 시청에서 너의 Objective는 무엇이냐?

2. 너의 단점은 무엇이냐?

3. 일하고 있는 중에, a. 알고 있는 고객으로부터 이메일이 왔고, b. 알고 있는 컨설턴트로부터 전화가 왔고, c. 담당 부서 매니저가 직접 찾아 왔다고 가정한다면, 어떤 일부터 가장 우선적으로 처리하겠는가?(Priority 문제)

4. 왜 Code Standard가 필요한가? (IT 분야에서 Code Standard란 일종의 개발 코딩 표준을 말합니다. 이 기준에 맞추어 개발자들은 개발을 하게 되지요)

5. 이기종간의 두 데이터베이스의 인터페이스를 새로 만든다면 어떻게 처리할 것인가? (두 데이터베이스간 데이터 교환 및 통신을 의미 합니다. 예를 들면, Oracle의 DB Link를 쓴다든지, IBM의 MQ를 쓴다든지 등등)

이 밖에도 더 있는데 대부분의 질문들이 Behavioural question들이었습니다. 이 Behavioural question에 관한 내용은 다음에 따로 정리해드리겠습니다.

합격통보는 어떻게 받을까요

사실 전 불합격되었습니다. 그래서 이부분은 잘… ㅠ.ㅠ

Job posting에는 10월 1일부터 일하는 것으로 되어 있었으나 10월 1일이 지나도 연락이 없어서 매니저에게 이메일로 확인했었지요. 저의 커뮤니케이션이 좀 부족하다며 다른 사람을 뽑았다고 합니다.(말을 좀 돌려서 얘기했지만, 직설적으로는 이런 의미였어요) 암튼 고맙다고 했지요.

사실 지금 이시점에 생각을 해보면 참 안타까웠습니다. 제가 지금 그 면접을 다시 본다면 합격할 자신이 있거든요. 면접을 보는것도 경험이 되고 면접이 많이 볼 수록 그 면접보는 실력도 쌓이는 것 같습니다. 지금 생각해보니 그 면접때 제가 실수했던 부분들이 좀 치명적이었다고 생각이 들더라구요. 아쉽지만 시청에 근무하는 다른 DBA가 은퇴할때까지 기다리는수 밖에요.. ㅠ.ㅠ

그럼 다음에는 BCLC(BC Lottery Corporation – Crown corporation 준 관공서)에서 면접한 경험담을 올려드릴께요.

감사합니다.

 

 

 

 

Restore RMAN backup to another server with different SID

by

Step 0: Prepare

Source database;
Target Database : fopsp
Target Database Server : bdcorap02
Using ASM storage on Windows Server 2008 R2

Destination database;
Auxiliary Database : fopst
Auxiliary Database Server : bdcorat02
Using OS file system on Windows Server 2008 R2

Step 1:

Take the incremental level 0 backup of the Target database using RMAN.
In my case, I had the backup of my target database (fopsp) taken at the location “\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\”

PS Microsoft.PowerShell.Core\FileSystem::\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP> dir | more

Directory: \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP

Mode LastWriteTime Length Name
—- ————- —— —-
-a— 05/10/2015 12:33 PM 9961472 C-1427950135-20151005-00
-a— 05/10/2015 6:22 PM 9961472 C-1427950135-20151005-01
-a— 05/10/2015 12:33 PM 176651264 FOPSP_ARCHLOG_T892298026_S564_P1
-a— 05/10/2015 6:22 PM 318571008 FOPSP_ARCHLOG_T892318958_S566_P1
-a— 22/07/2015 6:20 PM 9961472 C-1427950135-20150722-02
-a— 23/07/2015 12:18 PM 9961472 C-1427950135-20150723-00
-a— 27/06/2015 12:24 PM 213430272 FOPSP_ARCHLOG_FOPSP_T883484670_S88_P1
-a— 27/06/2015 5:48 PM 183261184 FOPSP_ARCHLOG_FOPSP_T883504088_S89_P1
-a— 27/06/2015 11:43 PM 93816832 FOPSP_ARCHLOG_FOPSP_T883525414_S90_P1
-a— 27/06/2015 3:45 AM 3621756928 FOPSP_FULL_FOPSP_2MQAGRGR_1_883453467
-a— 27/06/2015 3:45 AM 9961472 FOPSP_FULL_FOPSP_2NQAGRJH_1_883453553

 

Step 2:

These backup pieces are able to be accessed from Target server and Auxiliary server at the same time.

 

 

Step 3:

On the Auxiliary server, edit the pfile that was copied earlier to the desired entries (dump locations, control file location, datafile locations, if using ASM then specify the desired disk group) and rename it to the desired instance name file (init<SID>.ora). Below is the sample I had it done.

initfopst.ora which is copied from initfopsp.ora

fopsp.__db_cache_size=2113929216
fopsp.__java_pool_size=16777216
fopsp.__large_pool_size=50331648
fopsp.__oracle_base=’C:\Oracle’#ORACLE_BASE set from environment
fopsp.__pga_aggregate_target=419430400
fopsp.__sga_target=3355443200
fopsp.__shared_io_pool_size=0
fopsp.__shared_pool_size=1124073472
fopsp.__streams_pool_size=16777216
*.audit_file_dest=’C:\Oracle\admin\FOPST\adump’
*.audit_trail=’NONE’
*.compatible=’11.2.0.4.0′
*.control_files=’E:\FOPST\control\CONTROLFOPST.CTL’
*.cursor_sharing=’SIMILAR’
*.db_block_size=8192
*.db_domain=’WESTERNFOREST.COM’
*.db_name=’FOPST’
*.db_recovery_file_dest_size=4385144832
*.db_recovery_file_dest=’E:\FOPST\fast_recovery_area’
*.diagnostic_dest=’C:\Oracle’
*.dispatchers='(PROTOCOL=TCP) (SERVICE=FOPSTXDB)’
*.log_archive_dest_1=’LOCATION=E:\FOPST\arch’
*.log_archive_format=’ARC%S_%R.%T’
*.memory_max_target=3774873600
*.memory_target=3774873600
*.open_cursors=300
*.pga_aggregate_target=419430400
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sga_max_size=3250585600
*.sga_target=3250585600
*.shared_pool_size=956301312
*.undo_tablespace=’UNDOTBS1′

Step 4:

a. Create password file

PS H:\> orapwd file=C:\Oracle\product\11.2.0\dbhome_1\database\PWDFOPST.ora password=xxxxx

b. Create Windows Service for Oracle new SID

PS H:\> C:\oracle\product\11.2.0\dbhome_1\bin\oradim -new -sid FOPST -startmode manual -shutmode immediate

 

Step 5:

When you sqlplus login if you get this error message:

ERROR:
ORA-12631: Username retrieval failed

You can try this steps;

a. You can log in as a NT local user.

b. You can disable NTS in sqlnet.ora by setting the following parameter:

SQLNET.AUTHENTICATION_SERVICES = (NONE)

PS H:\> sqlplus sys/xxxxx as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Oct 2 16:12:04 2015

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to an idle instance.

16:12:06 >
16:12:06 > startup nomount;

Total System Global Area 1.7771E+10 bytes
Fixed Size 2288480 bytes
Variable Size 6777996448 bytes
Database Buffers 1.0939E+10 bytes
Redo Buffers 52224000 bytes
16:14:12 >

Step 6:

Connect the auxiliary instance through RMAN and start the duplication.

PS H:\> rman auxiliary sys/xxxxx

Recovery Manager: Release 11.2.0.4.0 – Production on Fri Oct 2 16:15:21 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to auxiliary database: FOPST (not mounted)

RMAN>

Script:
RUN {
set newname for datafile 1 to ‘E:\FOPST\oradata\SYSTEM01.DBF’;
set newname for datafile 2 to ‘E:\FOPST\oradata\SYSAUX01.DBF’;
set newname for datafile 3 to ‘E:\FOPST\oradata\UNDOTBS1_01.DBF’;
set newname for datafile 4 to ‘E:\FOPST\oradata\USERS01.DBF’;
set newname for datafile 5 to ‘E:\FOPST\oradata\forestops_index01.DBF’;
set newname for datafile 6 to ‘E:\FOPST\oradata\forest_ops_data_ts01.DBF’;
set newname for tempfile 1 to ‘E:\FOPST\oradata\TEMP01.DBF’;
duplicate database to ‘FOPST’ backup location ‘\\bdcdr4k01\DBBACKUP\Oracle\Production\FOPSP’;
switch datafile all;
}
Result:
————————————————————————————–
executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting Duplicate Db at 05-OCT-15

contents of Memory Script:
{
sql clone “create spfile from memory”;
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
shutdown clone immediate;
startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area 3240239104 bytes

Fixed Size 2285592 bytes
Variable Size 1107300328 bytes
Database Buffers 2113929216 bytes
Redo Buffers 16723968 bytes

contents of Memory Script:
{
sql clone “alter system set db_name =
”FOPSP” comment=
”Modified by RMAN duplicate” scope=spfile”;
sql clone “alter system set db_unique_name =
”FOPST” comment=
”Modified by RMAN duplicate” scope=spfile”;
shutdown clone immediate;
startup clone force nomount
restore clone primary controlfile from ‘\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\C-1427950135-20151004-01’;
alter clone database mount;
}
executing Memory Script

sql statement: alter system set db_name = ”FOPSP” comment= ”Modified by RMAN duplicate” scope=spfile

sql statement: alter system set db_unique_name = ”FOPST” comment= ”Modified by RMAN duplicate” scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area 3240239104 bytes

Fixed Size 2285592 bytes
Variable Size 1107300328 bytes
Database Buffers 2113929216 bytes
Redo Buffers 16723968 bytes

Starting restore at 05-OCT-15
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=130 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=E:\FOPST\CONTROL\CONTROLFOPST.CTL
Finished restore at 05-OCT-15

database mounted
released channel: ORA_AUX_DISK_1
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=130 device type=DISK

contents of Memory Script:
{
set until scn 4298569114718;
set newname for datafile 1 to
“E:\FOPST\oradata\SYSTEM01.DBF”;
set newname for datafile 2 to
“E:\FOPST\oradata\SYSAUX01.DBF”;
set newname for datafile 3 to
“E:\FOPST\oradata\UNDOTBS1_01.DBF”;
set newname for datafile 4 to
“E:\FOPST\oradata\USERS01.DBF”;
set newname for datafile 5 to
“E:\FOPST\oradata\forestops_index01.DBF”;
set newname for datafile 6 to
“E:\FOPST\oradata\forest_ops_data_ts01.DBF”;
restore
clone database
;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 05-OCT-15
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to E:\FOPST\oradata\SYSTEM01.DBF
channel ORA_AUX_DISK_1: restoring datafile 00002 to E:\FOPST\oradata\SYSAUX01.DBF
channel ORA_AUX_DISK_1: restoring datafile 00003 to E:\FOPST\oradata\UNDOTBS1_01.DBF
channel ORA_AUX_DISK_1: restoring datafile 00004 to E:\FOPST\oradata\USERS01.DBF
channel ORA_AUX_DISK_1: restoring datafile 00005 to E:\FOPST\oradata\forestops_index01.DBF
channel ORA_AUX_DISK_1: restoring datafile 00006 to E:\FOPST\oradata\forest_ops_data_ts01.DBF
channel ORA_AUX_DISK_1: reading from backup piece \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_FULL_H8QIOI7P_1_892
094713
channel ORA_AUX_DISK_1: piece handle=\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_FULL_H8QIOI7P_1_892094713 tag=WE
EKLY_FULL_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:02:05
Finished restore at 05-OCT-15

contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=7 STAMP=892303045 file name=E:\FOPST\ORADATA\SYSTEM01.DBF
datafile 2 switched to datafile copy
input datafile copy RECID=8 STAMP=892303045 file name=E:\FOPST\ORADATA\SYSAUX01.DBF
datafile 3 switched to datafile copy
input datafile copy RECID=9 STAMP=892303045 file name=E:\FOPST\ORADATA\UNDOTBS1_01.DBF
datafile 4 switched to datafile copy
input datafile copy RECID=10 STAMP=892303045 file name=E:\FOPST\ORADATA\USERS01.DBF
datafile 5 switched to datafile copy
input datafile copy RECID=11 STAMP=892303045 file name=E:\FOPST\ORADATA\FORESTOPS_INDEX01.DBF
datafile 6 switched to datafile copy
input datafile copy RECID=12 STAMP=892303045 file name=E:\FOPST\ORADATA\FOREST_OPS_DATA_TS01.DBF

contents of Memory Script:
{
set until scn 4298569114718;
recover
clone database
delete archivelog
;
}
executing Memory Script

executing command: SET until clause

Starting recover at 05-OCT-15
using channel ORA_AUX_DISK_1

starting media recovery

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=590
channel ORA_AUX_DISK_1: reading from backup piece \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892122428_
S554_P1
channel ORA_AUX_DISK_1: piece handle=\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892122428_S554_P1 tag=A
RCHIVELOG_LOG_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=E:\FOPST\ARCH\ARC0000000590_0881072057.0001 thread=1 sequence=590
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000590_0881072057.0001 RECID=1 STAMP=892303048
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=591
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=592
channel ORA_AUX_DISK_1: reading from backup piece \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892146539_
S556_P1
channel ORA_AUX_DISK_1: piece handle=\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892146539_S556_P1 tag=A
RCHIVELOG_LOG_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=E:\FOPST\ARCH\ARC0000000591_0881072057.0001 thread=1 sequence=591
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000591_0881072057.0001 RECID=3 STAMP=892303055
archived log file name=E:\FOPST\ARCH\ARC0000000592_0881072057.0001 thread=1 sequence=592
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000592_0881072057.0001 RECID=2 STAMP=892303054
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=593
channel ORA_AUX_DISK_1: reading from backup piece \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892165775_
S558_P1
channel ORA_AUX_DISK_1: piece handle=\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892165775_S558_P1 tag=A
RCHIVELOG_LOG_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=E:\FOPST\ARCH\ARC0000000593_0881072057.0001 thread=1 sequence=593
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000593_0881072057.0001 RECID=4 STAMP=892303062
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=594
channel ORA_AUX_DISK_1: reading from backup piece \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892209183_
S560_P1
channel ORA_AUX_DISK_1: piece handle=\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892209183_S560_P1 tag=A
RCHIVELOG_LOG_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=E:\FOPST\ARCH\ARC0000000594_0881072057.0001 thread=1 sequence=594
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000594_0881072057.0001 RECID=5 STAMP=892303065
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=595
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=596
channel ORA_AUX_DISK_1: reading from backup piece \\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892230482_
S562_P1
channel ORA_AUX_DISK_1: piece handle=\\BDCDR4K01\DBBACKUP\ORACLE\PRODUCTION\FOPSP\FOPSP_ARCHLOG_T892230482_S562_P1 tag=A
RCHIVELOG_LOG_BACKUP
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=E:\FOPST\ARCH\ARC0000000595_0881072057.0001 thread=1 sequence=595
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000595_0881072057.0001 RECID=7 STAMP=892303071
archived log file name=E:\FOPST\ARCH\ARC0000000596_0881072057.0001 thread=1 sequence=596
channel clone_default: deleting archived log(s)
archived log file name=E:\FOPST\ARCH\ARC0000000596_0881072057.0001 RECID=6 STAMP=892303070
media recovery complete, elapsed time: 00:00:06
Finished recover at 05-OCT-15
Oracle instance started

Total System Global Area 3240239104 bytes

Fixed Size 2285592 bytes
Variable Size 1107300328 bytes
Database Buffers 2113929216 bytes
Redo Buffers 16723968 bytes

contents of Memory Script:
{
sql clone “alter system set db_name =
”FOPST” comment=
”Reset to original value by RMAN” scope=spfile”;
sql clone “alter system reset db_unique_name scope=spfile”;
shutdown clone immediate;
startup clone nomount;
}
executing Memory Script

sql statement: alter system set db_name = ”FOPST” comment= ”Reset to original value by RMAN” scope=spfile

sql statement: alter system reset db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area 3240239104 bytes

Fixed Size 2285592 bytes
Variable Size 1107300328 bytes
Database Buffers 2113929216 bytes
Redo Buffers 16723968 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE “FOPST” RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 SIZE 262145 K ,
GROUP 2 SIZE 262145 K ,
GROUP 3 SIZE 262145 K
DATAFILE
‘E:\FOPST\ORADATA\SYSTEM01.DBF’
CHARACTER SET WE8MSWIN1252
contents of Memory Script:
{
set newname for tempfile 1 to
“E:\FOPST\oradata\TEMP01.DBF”;
switch clone tempfile all;
catalog clone datafilecopy “E:\FOPST\ORADATA\SYSAUX01.DBF”,
“E:\FOPST\ORADATA\UNDOTBS1_01.DBF”,
“E:\FOPST\ORADATA\USERS01.DBF”,
“E:\FOPST\ORADATA\FORESTOPS_INDEX01.DBF”,
“E:\FOPST\ORADATA\FOREST_OPS_DATA_TS01.DBF”;
switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to E:\FOPST\oradata\TEMP01.DBF in control file

cataloged datafile copy
datafile copy file name=E:\FOPST\ORADATA\SYSAUX01.DBF RECID=1 STAMP=892303104
cataloged datafile copy
datafile copy file name=E:\FOPST\ORADATA\UNDOTBS1_01.DBF RECID=2 STAMP=892303104
cataloged datafile copy
datafile copy file name=E:\FOPST\ORADATA\USERS01.DBF RECID=3 STAMP=892303104
cataloged datafile copy
datafile copy file name=E:\FOPST\ORADATA\FORESTOPS_INDEX01.DBF RECID=4 STAMP=892303104
cataloged datafile copy
datafile copy file name=E:\FOPST\ORADATA\FOREST_OPS_DATA_TS01.DBF RECID=5 STAMP=892303104

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=892303104 file name=E:\FOPST\ORADATA\SYSAUX01.DBF
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=892303104 file name=E:\FOPST\ORADATA\UNDOTBS1_01.DBF
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=892303104 file name=E:\FOPST\ORADATA\USERS01.DBF
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=892303104 file name=E:\FOPST\ORADATA\FORESTOPS_INDEX01.DBF
datafile 6 switched to datafile copy
input datafile copy RECID=5 STAMP=892303104 file name=E:\FOPST\ORADATA\FOREST_OPS_DATA_TS01.DBF

contents of Memory Script:
{
Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 05-OCT-15
RMAN>

RMAN>

RMAN>

RMAN>

RMAN> exit
Recovery Manager complete.
PS H:\> sqlplus sys/xxxxx as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Oct 5 14:02:59 2015

Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.4.0 – 64bit Production

14:02:59 fopst> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
14:03:15 fopst> startup
ORACLE instance started.

Total System Global Area 3240239104 bytes
Fixed Size 2285592 bytes
Variable Size 1090523112 bytes
Database Buffers 2130706432 bytes
Redo Buffers 16723968 bytes
Database mounted.
Database opened.
14:03:32 fopst> create spfile from pfile;

File created.

Elapsed: 00:00:00.09
14:03:40 fopst> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
14:03:54 fopst> startup mount;
ORACLE instance started.

Total System Global Area 3240239104 bytes
Fixed Size 2285592 bytes
Variable Size 1090523112 bytes
Database Buffers 2130706432 bytes
Redo Buffers 16723968 bytes
Database mounted.
14:04:09 fopst> alter database noarchivelog;

Database altered.

Elapsed: 00:00:00.04
14:04:15 fopst> alter database open;

Database altered.

Elapsed: 00:00:03.66
14:04:22 fopst> show parameter spfile;

NAME TYPE VALUE
———————————— ——————————– ——————————
spfile string C:\ORACLE\PRODUCT\11.2.0\DBHOM
E_1\DATABASE\SPFILEFOPST.ORA
14:04:27 fopst>

How to connect to Source Control from SSDT

by

If you go to Tools menu choice then Options, you should see a Source Control on the Tree View on left.

On Plug-in Selection you should be able to choice TFS, it not then the TFS connection might have been installed before you setup SSDT. Your software keeper should be able to give you the plug-in needed to activate that.

If  you are not able to choose TFS on the Plug-in Selection, you likely need to download and install Team Explorer for Visual Studio 2012 – this is the plugin that Thomas LeBlanc was talking about. Here’s the download page:

Team Explorer for Visual Studio 2010 : http://www.microsoft.com/en-us/download/confirmation.aspx?id=329

Team Explorer for Visual Studio 2012 : http://www.microsoft.com/en-us/download/details.aspx?id=30656

Team Explorer for Visual Studio 2015 : https://www.microsoft.com/en-us/download/details.aspx?id=47727

 

Oracle RMAN restore until time script

by

When you did any mistake on your Oracle database such as drop tables or drop databases, you can recover it from the backup copy and archive log files with “RMAN restore until time script” as following;

 

 

RMAN> shutdown immediate;

database closed
database dismounted
Oracle instance shut down

RMAN> RUN
2> {
3> startup mount;
4> ALLOCATE CHANNEL c1_restore DEVICE TYPE DISK;
5>
6> set until time= “to_date(’23/09/2015 17:10:00′,’dd/mm/yyyy hh24:mi:ss’)”;
7> RESTORE DATABASE;
8> RECOVER DATABASE;
9> RELEASE CHANNEL c1_restore;
10> }

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area 17771253760 bytes

Fixed Size 2288480 bytes
Variable Size 6777996448 bytes
Database Buffers 10938744832 bytes
Redo Buffers 52224000 bytes

allocated channel: c1_restore
channel c1_restore: SID=263 device type=DISK

executing command: SET until clause

Starting restore at 23-SEP-15

channel c1_restore: starting datafile backup set restore
channel c1_restore: specifying datafile(s) to restore from backup set
channel c1_restore: restoring datafile 00001 to +DATA/limsprod/datafile/system.276.881074097
channel c1_restore: restoring datafile 00002 to +DATA/limsprod/datafile/sysaux.277.881074097
channel c1_restore: restoring datafile 00003 to +DATA/limsprod/datafile/undotbs1.278.881074097
channel c1_restore: restoring datafile 00004 to +DATA/limsprod/datafile/users.279.881074097
channel c1_restore: restoring datafile 00005 to +DATA/limsprod/datafile/lims_archive.286.881076053
channel c1_restore: restoring datafile 00006 to +DATA/limsprod/datafile/lims_base.287.881076073
channel c1_restore: restoring datafile 00007 to +DATA/limsprod/datafile/lims_common.288.881076097
channel c1_restore: restoring datafile 00008 to +DATA/limsprod/datafile/lims_data.289.881076443
channel c1_restore: restoring datafile 00009 to +DATA/limsprod/datafile/lims_data.290.881076535
channel c1_restore: restoring datafile 00010 to +DATA/limsprod/datafile/lims_data.291.881076625
channel c1_restore: restoring datafile 00011 to +DATA/limsprod/datafile/lims_data.292.881076865
channel c1_restore: restoring datafile 00012 to +DATA/limsprod/datafile/lims_data.293.881077055
channel c1_restore: restoring datafile 00013 to +DATA/limsprod/datafile/lims_data.294.881077235
channel c1_restore: restoring datafile 00014 to +DATA/limsprod/datafile/lims_data.295.881077657
channel c1_restore: restoring datafile 00015 to +DATA/limsprod/datafile/lims_data.296.881077735
channel c1_restore: restoring datafile 00016 to +DATA/limsprod/datafile/lims_data.299.881078031
channel c1_restore: restoring datafile 00017 to +DATA/limsprod/datafile/lims_index.300.881078289
channel c1_restore: restoring datafile 00018 to +DATA/limsprod/datafile/lims_index.301.881078439
channel c1_restore: restoring datafile 00019 to +DATA/limsprod/datafile/lims_index.302.881078505
channel c1_restore: restoring datafile 00020 to +DATA/limsprod/datafile/lims_index.303.881078609
channel c1_restore: restoring datafile 00021 to +DATA/limsprod/datafile/lims_index.304.881078723
channel c1_restore: restoring datafile 00022 to +DATA/limsprod/datafile/lims_index.306.881078811
channel c1_restore: restoring datafile 00023 to +DATA/limsprod/datafile/lims_index.308.881078901
channel c1_restore: restoring datafile 00024 to +DATA/limsprod/datafile/lims_index.314.881079053
channel c1_restore: restoring datafile 00025 to +DATA/limsprod/datafile/lims_index.316.881079155
channel c1_restore: restoring datafile 00026 to +DATA/limsprod/datafile/lims_index.324.881079755
channel c1_restore: restoring datafile 00027 to +DATA/limsprod/datafile/lims_index.327.881079851
channel c1_restore: restoring datafile 00028 to +DATA/limsprod/datafile/undotbs1.335.881080165
channel c1_restore: restoring datafile 00029 to +DATA/limsprod/datafile/sysaux.337.883641629
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_1_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_1_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 1
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_2_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_2_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 2
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_3_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_3_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 3
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_4_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_4_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 4
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_5_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_5_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 5
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_6_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_6_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 6
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_7_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_7_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 7
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_8_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_8_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 8
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_9_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_9_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 9
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_10_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_10_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 10
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_11_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_11_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 11
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_12_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_12_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 12
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_13_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_13_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 13
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_14_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_14_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 14
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_15_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_15_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 15
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_16_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_16_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 16
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_17_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_17_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 17
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_18_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_18_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 18
channel c1_restore: reading from backup piece V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_19_891188665
channel c1_restore: piece handle=V:\LIMSPROD\LIMSPROD_FULL_LIMSPROD_G6QHSTDP_19_891188665 tag=TAG20150923T162425
channel c1_restore: restored backup piece 19
channel c1_restore: restore complete, elapsed time: 00:31:19
Finished restore at 23-SEP-15

Starting recover at 23-SEP-15

starting media recovery
media recovery complete, elapsed time: 00:00:10

Finished recover at 23-SEP-15

released channel: c1_restore

RMAN>

PS H:\> sqlplus sys as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Sep 23 19:40:04 2015

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Release 11.2.0.4.0 – 64bit Production
With the Automatic Storage Management option

19:40:15 limsprod> alter database open resetlogs;

Database altered.

Elapsed: 00:00:20.51
19:40:50 limsprod>

 

 

 

The following log is from the alert log of the database while RMAN is recovering the database.

 

 

Wed Sep 23 19:06:32 2015
Shutting down instance (immediate)
Stopping background process SMCO
Shutting down instance: further logons disabled
Stopping background process QMNC
Wed Sep 23 19:06:34 2015
Stopping background process CJQ0
Stopping background process MMNL
Stopping background process MMON
Wed Sep 23 19:06:43 2015
License high water mark = 111
All dispatchers and shared servers shutdown
alter database close
Wed Sep 23 19:06:49 2015
SMON: disabling tx recovery
SMON: disabling cache recovery
Wed Sep 23 19:06:52 2015
NOTE: Deferred communication with ASM instance
NOTE: deferred map free for map id 45
Shutting down archive processes
Archiving is disabled
Wed Sep 23 19:06:52 2015
ARCH shutting down
ARC2: Archival stopped
Wed Sep 23 19:06:52 2015
NOTE: Deferred communication with ASM instance
Wed Sep 23 19:06:52 2015
ARCH shutting down
Wed Sep 23 19:06:52 2015
ARCH shutting down
ARC0: Archival stopped
Wed Sep 23 19:06:52 2015
ARCH shutting down
ARC3: Archival stopped
ARC1: Archival stopped
Thread 1 closed at log sequence 2231
Successful close of redo thread 1
Wed Sep 23 19:06:55 2015
NOTE: Deferred communication with ASM instance
NOTE: deferred map free for map id 3
Wed Sep 23 19:06:59 2015
Completed: alter database close
alter database dismount
Shutting down archive processes
Archiving is disabled
Wed Sep 23 19:06:59 2015
NOTE: Deferred communication with ASM instance
NOTE: deferred map free for map id 2
Completed: alter database dismount
ARCH: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Wed Sep 23 19:07:04 2015
NOTE: Database dismounted; ASMB process exiting
ARCH: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Wed Sep 23 19:07:05 2015
NOTE: Shutting down MARK background process
Wed Sep 23 19:07:05 2015
Stopping background process VKTM
Wed Sep 23 19:07:10 2015
Instance shutdown complete
Wed Sep 23 19:07:53 2015
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Initial number of CPU is 6
Number of processor cores in the system is 6
Number of processor sockets in the system is 2
Picked latch-free SCN scheme 3
Autotune of undo retention is turned on.
IMODE=BR
ILAT =85
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up:
Oracle Database 11g Release 11.2.0.4.0 – 64bit Production.
Windows NT Version V6.1 Service Pack 1
CPU : 6 – type 8664, 6 Physical Cores
Process Affinity : 0x0x0000000000000000
Memory (Avail/Total): Ph:22985M/36863M, Ph+PgF:41931M/73725M
VM name : VMWare Version (6)
Using parameter settings in server-side pfile C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITLIMSPROD.ORA
System parameters with non-default values:
processes = 500
sessions = 774
sga_max_size = 17024M
shared_pool_size = 6016M
java_pool_size = 64M
spfile = “+DATA/limsprod/spfilelimsprod.ora”
sga_target = 17024M
memory_target = 18048M
memory_max_target = 18048M
control_files = “+DATA/limsprod/controlfile/current.280.881074207”
db_block_size = 8192
compatible = “11.2.0.4.0”
log_archive_dest_1 = “LOCATION=Z:\oradata\limsprod\arch”
log_archive_format = “ARC%S_%R.%T”
db_create_file_dest = “+DATA”
db_recovery_file_dest = “Z:\oradata\limsprod\fast_recovery_area”
db_recovery_file_dest_size= 4182M
undo_tablespace = “UNDOTBS1”
remote_login_passwordfile= “EXCLUSIVE”
db_domain = “WESTERNFOREST.COM”
dispatchers = “(PROTOCOL=TCP) (SERVICE=LIMSPRODXDB)”
audit_file_dest = “C:\ORACLE\ADMIN\LIMSPROD\ADUMP”
audit_trail = “NONE”
db_name = “LIMSPROD”
open_cursors = 300
pga_aggregate_target = 1000M
optimizer_secure_view_merging= FALSE
diagnostic_dest = “C:\ORACLE”
Wed Sep 23 19:07:54 2015
PMON started with pid=2, OS id=4328
Wed Sep 23 19:07:54 2015
PSP0 started with pid=3, OS id=2820
Wed Sep 23 19:07:55 2015
VKTM started with pid=4, OS id=3084 at elevated priority
VKTM running at (10)millisec precision with DBRM quantum (100)ms
Wed Sep 23 19:07:55 2015
GEN0 started with pid=5, OS id=4556
Wed Sep 23 19:07:55 2015
DIAG started with pid=6, OS id=4856
Wed Sep 23 19:07:55 2015
DBRM started with pid=7, OS id=6032
Wed Sep 23 19:07:55 2015
DIA0 started with pid=8, OS id=6436
Wed Sep 23 19:07:55 2015
MMAN started with pid=9, OS id=3248
Wed Sep 23 19:07:55 2015
DBW0 started with pid=10, OS id=3896
Wed Sep 23 19:07:55 2015
LGWR started with pid=11, OS id=3584
Wed Sep 23 19:07:55 2015
CKPT started with pid=12, OS id=1280
Wed Sep 23 19:07:55 2015
SMON started with pid=13, OS id=6736
Wed Sep 23 19:07:55 2015
RECO started with pid=14, OS id=5536
Wed Sep 23 19:07:55 2015
RBAL started with pid=15, OS id=6316
Wed Sep 23 19:07:55 2015
ASMB started with pid=16, OS id=2604
Wed Sep 23 19:07:55 2015
MMON started with pid=17, OS id=4000
Wed Sep 23 19:07:55 2015
MMNL started with pid=18, OS id=4544
NOTE: initiating MARK startup
Starting background process MARK
Wed Sep 23 19:07:55 2015
MARK started with pid=19, OS id=6328
NOTE: MARK has subscribed
starting up 1 dispatcher(s) for network address ‘(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))’…
starting up 1 shared server(s) …
ORACLE_BASE from environment = C:\Oracle
Wed Sep 23 19:07:57 2015
ALTER SYSTEM SET local_listener=’ (ADDRESS=(PROTOCOL=TCP)(HOST=10.102.248.172)(PORT=1521))’ SCOPE=MEMORY SID=’limsprod’;
Wed Sep 23 19:07:58 2015
alter database mount
NOTE: Loaded library: System
SUCCESS: diskgroup DATA was mounted
NOTE: dependency between database LIMSPROD and diskgroup resource ora.DATA.dg is established
Successful mount of redo thread 1, with mount id 1278723982
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: alter database mount
Wed Sep 23 19:18:29 2015
Full restore complete of datafile 3 +DATA/limsprod/datafile/undotbs1.278.881074097. Elapsed time: 0:10:21
checkpoint is 4298719146844
last deallocation scn is 3
Undo Optimization current scn is 4298719137466
Full restore complete of datafile 8 +DATA/limsprod/datafile/lims_data.289.881076443. Elapsed time: 0:10:23
checkpoint is 4298719146844
Full restore complete of datafile 9 +DATA/limsprod/datafile/lims_data.290.881076535. Elapsed time: 0:10:23
checkpoint is 4298719146844
Full restore complete of datafile 10 +DATA/limsprod/datafile/lims_data.291.881076625. Elapsed time: 0:10:27
checkpoint is 4298719146844
Full restore complete of datafile 11 +DATA/limsprod/datafile/lims_data.292.881076865. Elapsed time: 0:10:30
checkpoint is 4298719146844
Wed Sep 23 19:18:43 2015
Full restore complete of datafile 12 +DATA/limsprod/datafile/lims_data.293.881077055. Elapsed time: 0:10:35
checkpoint is 4298719146844
Full restore complete of datafile 13 +DATA/limsprod/datafile/lims_data.294.881077235. Elapsed time: 0:10:39
checkpoint is 4298719146844
Full restore complete of datafile 14 +DATA/limsprod/datafile/lims_data.295.881077657. Elapsed time: 0:10:43
checkpoint is 4298719146844
Wed Sep 23 19:22:59 2015
db_recovery_file_dest_size of 4182 MB is 0.00% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Wed Sep 23 19:28:35 2015
Full restore complete of datafile 15 +DATA/limsprod/datafile/lims_data.296.881077735. Elapsed time: 0:10:06
checkpoint is 4298719146844
Full restore complete of datafile 16 +DATA/limsprod/datafile/lims_data.299.881078031. Elapsed time: 0:10:07
checkpoint is 4298719146844
Full restore complete of datafile 17 +DATA/limsprod/datafile/lims_index.300.881078289. Elapsed time: 0:10:07
checkpoint is 4298719146844
Wed Sep 23 19:28:48 2015
Full restore complete of datafile 18 +DATA/limsprod/datafile/lims_index.301.881078439. Elapsed time: 0:10:13
checkpoint is 4298719146844
Wed Sep 23 19:28:58 2015
Full restore complete of datafile 19 +DATA/limsprod/datafile/lims_index.302.881078505. Elapsed time: 0:10:20
checkpoint is 4298719146844
Full restore complete of datafile 20 +DATA/limsprod/datafile/lims_index.303.881078609. Elapsed time: 0:10:25
checkpoint is 4298719146844
Wed Sep 23 19:29:18 2015
Full restore complete of datafile 21 +DATA/limsprod/datafile/lims_index.304.881078723. Elapsed time: 0:10:31
checkpoint is 4298719146844
Full restore complete of datafile 22 +DATA/limsprod/datafile/lims_index.306.881078811. Elapsed time: 0:10:35
checkpoint is 4298719146844
Wed Sep 23 19:31:37 2015
Full restore complete of datafile 6 +DATA/limsprod/datafile/lims_base.287.881076073. Elapsed time: 0:02:11
checkpoint is 4298719146844
Wed Sep 23 19:33:39 2015
Full restore complete of datafile 7 +DATA/limsprod/datafile/lims_common.288.881076097. Elapsed time: 0:02:02
checkpoint is 4298719146844
Wed Sep 23 19:35:51 2015
Full restore complete of datafile 27 +DATA/limsprod/datafile/lims_index.327.881079851. Elapsed time: 0:02:12
checkpoint is 4298719146844
Wed Sep 23 19:37:06 2015
Full restore complete of datafile 1 +DATA/limsprod/datafile/system.276.881074097. Elapsed time: 0:01:15
checkpoint is 4298719146844
last deallocation scn is 895285
Undo Optimization current scn is 4298719142269
Full restore complete of datafile 4 +DATA/limsprod/datafile/users.279.881074097. Elapsed time: 0:00:03
checkpoint is 4298719146844
last deallocation scn is 3
Full restore complete of datafile 5 +DATA/limsprod/datafile/lims_archive.286.881076053. Elapsed time: 0:00:01
checkpoint is 4298719146844
Wed Sep 23 19:38:28 2015
Full restore complete of datafile 2 +DATA/limsprod/datafile/sysaux.277.881074097. Elapsed time: 0:09:20
checkpoint is 4298719146844
last deallocation scn is 896771
Full restore complete of datafile 29 +DATA/limsprod/datafile/sysaux.337.883641629. Elapsed time: 0:09:10
checkpoint is 4298719146844
Wed Sep 23 19:38:57 2015
Full restore complete of datafile 23 +DATA/limsprod/datafile/lims_index.308.881078901. Elapsed time: 0:10:22
checkpoint is 4298719146844
Full restore complete of datafile 24 +DATA/limsprod/datafile/lims_index.314.881079053. Elapsed time: 0:10:19
checkpoint is 4298719146844
Full restore complete of datafile 25 +DATA/limsprod/datafile/lims_index.316.881079155. Elapsed time: 0:10:19
checkpoint is 4298719146844
Full restore complete of datafile 26 +DATA/limsprod/datafile/lims_index.324.881079755. Elapsed time: 0:10:09
checkpoint is 4298719146844
Wed Sep 23 19:39:27 2015
Full restore complete of datafile 28 +DATA/limsprod/datafile/undotbs1.335.881080165. Elapsed time: 0:10:29
checkpoint is 4298719146844
Undo Optimization current scn is 4298719142501
Wed Sep 23 19:39:29 2015
alter database recover datafile list clear
Completed: alter database recover datafile list clear
alter database recover datafile list
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20
Completed: alter database recover datafile list
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20
alter database recover datafile list
21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29
Completed: alter database recover datafile list
21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29
alter database recover if needed
start until time ‘SEP 23 2015 17:10:00’
Media Recovery Start
started logmerger process
Parallel Media Recovery started with 6 slaves
Wed Sep 23 19:39:30 2015
Recovery of Online Redo Log: Thread 1 Group 3 Seq 2229 Reading mem 0
Mem# 0: +DATA/limsprod/onlinelog/group_3.283.881074219
Incomplete Recovery applied until change 4298719150809 time 09/23/2015 17:10:00
Completed: alter database recover if needed
start until time ‘SEP 23 2015 17:10:00’
Wed Sep 23 19:40:14 2015
alter database open
Errors in file C:\ORACLE\diag\rdbms\limsprod\limsprod\trace\limsprod_ora_5844.trc:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
ORA-1589 signalled during: alter database open…
Wed Sep 23 19:40:30 2015
alter database open resetlogs
RESETLOGS after incomplete recovery UNTIL CHANGE 4298719150809
Archived Log entry 2223 added for thread 1 sequence 2231 ID 0x4b9dee9c dest 1:
Resetting resetlogs activation ID 1268641436 (0x4b9dee9c)
Deleted Oracle managed file +DATA/limsprod/onlinelog/group_1.281.881074211
Deleted Oracle managed file +DATA/limsprod/onlinelog/group_2.282.881074215
Deleted Oracle managed file +DATA/limsprod/onlinelog/group_3.283.881074219
Wed Sep 23 19:40:38 2015
Setting recovery target incarnation to 3
Wed Sep 23 19:40:38 2015
Assigning activation ID 1278723982 (0x4c37c78e)
LGWR: STARTING ARCH PROCESSES
Wed Sep 23 19:40:38 2015
ARC0 started with pid=28, OS id=7032
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: STARTING ARCH PROCESSES
Wed Sep 23 19:40:39 2015
ARC1 started with pid=29, OS id=3480
Wed Sep 23 19:40:39 2015
ARC2 started with pid=30, OS id=6808
Wed Sep 23 19:40:39 2015
ARC3 started with pid=31, OS id=5348
ARC1: Archival started
ARC2: Archival started
Thread 1 opened at log sequence 1
Current log# 1 seq# 1 mem# 0: +DATA/limsprod/onlinelog/group_1.281.891200433
Current log# 1 seq# 1 mem# 1: Z:\ORADATA\LIMSPROD\FAST_RECOVERY_AREA\LIMSPROD\ONLINELOG\O1_MF_1_C06RO13Z_.LOG
Successful open of redo thread 1
ARC1: Becoming the ‘no FAL’ ARCH
ARC1: Becoming the ‘no SRL’ ARCH
ARC2: Becoming the heartbeat ARCH
Wed Sep 23 19:40:40 2015
SMON: enabling cache recovery
ARC3: Archival started
Wed Sep 23 19:40:41 2015
[5844] Successfully onlined Undo Tablespace 2.
Undo initialization finished serial:0 start:910193872 end:910194371 diff:499 (4 seconds)
ARC0: STARTING ARCH PROCESSES COMPLETE
Dictionary check beginning
Dictionary check complete
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Database Characterset is WE8MSWIN1252
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
Wed Sep 23 19:40:44 2015
QMNC started with pid=32, OS id=4444
LOGSTDBY: Validating controlfile with logical metadata
LOGSTDBY: Validation complete
Completed: alter database open resetlogs
Wed Sep 23 19:40:51 2015
Starting background process CJQ0
Wed Sep 23 19:40:51 2015
CJQ0 started with pid=33, OS id=4520

Hash Join

by

Execution of Hash Join

Explanation

(1) 개요

JOIN 의 종류는 3가지로 나뉘는데, Sort merge join, Nested loop join, Hash join 이다. 이중 Hash Join (HJ) 은 7.3 부터 사용가능하며 그 주요 기능을 살펴보면
– index 가 여러 level 의 depth 를 가질 때 Sort Merge Join (SMJ) 이나 Nested Loops (NL)보다 좋은 효과를 낸다.
– sort 를 하지 않으므로 SMJ 보다 좋은 성능을 내며, 작은 table 과 큰 table 의 join 시에 유리하다.
– 주의해야 할 것은 hash join 은 equi join 에서만 가능하다는 것이다.
– HJ 은 driving table 에 index 를 필요로 하지 않는다.
– SMJ 나 NL 보다 효율적인데, 이는 SMJ 가 merge 단계에 들어가기 위해 양쪽 table 이 모두 sort 되어야 하기 때문이다. 또 NL은 driving table이 많은 row 의 data 를 갖는 경우 비효율적이서 inner table 을 여러번 probe(탐색)하게 한다. 이에 반해 HJ는 각 table 에 대해 1 번만 pass 한다.

(2) Cost의 비교

편의상 join 되는 sql 문이 다음과 같다고 가정하자.
SELECT S.a, B.a FROM S,B WHERE S.a = B.a
S는 small table 이고, B는 big table 이다.
(* analyze 를 수행하면 CBO 는 이미 S가 out table 이고 B 가 inner table 이며 , S 가 driving table 임을 인식한다. )
NLJ 는 S table 의 모든 row 에 대해 a column 을 B table 의 모든 column 을 match 하기 때문에 rS* rB key 비교가 요구된다.:
Cost(NLJ) 는 Read(S) + [ rS *Read(B) ] 에 비례
또 SMJ 는 S 와 B 를 memory 에 읽어와 join key 를 각각 sort 하고, join 을 수행하므로 cost 는

Cost(SMJ) 는 Read(S) + Write(SortRuns(S))
+ Read(B) + Write(SortRuns(B))
+ Merge(S,B)
+ CPUSortCost(S + B) 에 비례한다.

memory 에서 수행되는 HJ 의 algorithm 은 아래에서 설명된어 지는데 이의 cost 를 미리 check 해 보자면

Cost(HJ) = Read(S) + Build Hash Table in Memory (cpu)
+ Read(B) + Perform In memory Join(cpu)

이 경우 CPU costs를 무시하면, Cost(HJ)는 Read(S) + Read(B) 에 비례한다고 할 수 있다.

(3) Hash join 을 수행하기 위해 Oracle 은 다음의 과정을 거친다.:

이를 수행하기 위해 partition 단계와 join 단계를 거치며 이의 algorithm 을 grace join 이라 한다. 이의 한계는 join value 의 분배가 한쪽으로 치우침이 없이 partition 에 고르게 분포되어야 한다는 것이다. 이 algorithm 은 다음과 같다.

1. partiton 갯수를 결정한다.이를 fan out 이라한다.

high fan out 은 여러개의 작은 partition 을 만들어 i/o 의 효율을 떨어뜨리며,low fan out 은 커다란 partition 을 만들어 hash memory 의 hit율을 떨어뜨린다 . 그러므로 이를 적절히 가져가는 것이 performance 의 주 요점이며(이는 bit map 갯수를 결정) 이의 효율을 높이기 위해 hash area size를 늘리고, hash multi block io 를 줄인다.

2. driving table 을 결정한다.(작은 table 로 결정)

3. small table 의 필요 column 을 읽어들여 hash area 의 partition 에 분배하는데 이는 join column 으로 hash function1을 통과 시키면서 partition 에 hash function2 의 hash value 와 함께 분배한다. 이때 bitmap vector 를 만든다. 이 bitmap 은 2차원 bucket 인데 hash function 1 과 2 를 통과시켜 만든다.즉 partition 이 100 개라면 100* 100 의 10000 개의 cell 로 이루어진다.

4. 각 row 에 대해 bitmap 의 (a,b) 에 marking 을 한다.

5 위의 step 이 모두 끝나면 driving table 이 아닌 큰 table 을 읽어들여 function1,2 를 통과한다. 이때 나온 hash value 를 driving table 이 만들어 놓은 bitmap 과 대조하여 1 이면 join 을 해야 하는 column 으로 인식하고 아니면 join할 필요가 없는 row 이므로 버린다. 이를 bit vector filtering 이라한다. 이때 hash table 을 구성하기 위해 항상 full table 을 scan 하는 것은 아니다. 먼저 where 조건의 index 를 타서 조건에 맞게 row 를 걸러낸 다음 그 결과에 대해 hash table 을 구성한다. 또 hash array size 가 크면 문제가 안되는데, 작으면 disk 의 temp segment 에 내려 보내야 하므로 problem 이 발생한다.

6. B 의 joined value 를 hash function 1 을 통과시켜 이 row 가 bit vector에 있고, memory 위의 partition 에 있으면 join 이 수행되고 결과가 return 된다. memory 에 있지 않으면 disk 에 있는 적절한 S partition 에 씌여진다. 7. 1번째 B 가 pass 된후 S 의 수행되지 않는 partition 들이 최대한 temp segment 에서 memory 로 올려지고 hash table 이 생성된다. 그리고 B 의 partition 이 다시 읽혀져 memory join 이 실행된다. 즉 수행되지 않는 disk 의 partition (S,B) 이 읽혀진다.

(4) parameter

-HASH_JOIN_ENABLED : true 로 지정시 사용가능
-HASH_AREA_SIZE : sort_area_size 의 2배가 기본
-HASH_MULTIBLOCK_IO_COUNT : DB_BLOCK_READ_COUNT 가 기본
-USE_HASH : hint

(5) partition 갯수 결정

첫번째로 우리는 partition (bucket) 의 갯수를 결정해야 한다. 여기에 우리는 hashed row 를 넣을 것이다. 이는 hash_area_size, db_block_size and ash_multiblock_io_count parameters에 의해 결정된다. 또 이 값은 20% 정도의 overhead 를 고려해야 한다.
– storing partitions, the bitmap of unique left input and the hash table

함수 : Partitions 갯수 = (0.8 x hash_area_size) / (db_block_size x hash_multiblock_io_count)

row 가 가장 작은 table 이 읽혀지고 (R 이라고 부르자) , 각 row 는 hash algorithm 을 따른다. 각 row 를 bucket 에 골고루 펼쳐지게 하기 위해 2가지의 algorithm을 따른다. hash 되는 row 가 partition 에 골고루 분산되기 위해 1 번째 hash function 을 따르며, 2 번째 hash value 는 다음 hash 되는 경우를 위해 row 와 함께 저장된다. 이와 동시에 두가지의 hash value 를 이용한 bitmap 이 만들어진다.

(6) Bitmap building 예제 :

Hash
Algorithm 1 ->
1 2 3 4
1 0 0 0 0
Second
Hash 2 0 0 0 0 ------>
Algorithm
| 3 0 0 0 0
V
4 0 0 0 0

driving table 은 hash function 1, 2 를 통과하여 bitmap 을 만든다. 만일 hash area 가 모두 차면 가장 큰 partition 이 disk 로 내려간다. disk 의 partition 은 partition 에 할당되는 row 에 의해 disk 에서 update 되어진다. 만일 hash area 의 부족으로 1 partition 만이 memeory에 올라간다면 나머지 partition 은 모두 disk 에 놓여지게 된다. 이런 경우는 생기지 않도록 조심하여야 한다.
이 작업이 R table 의 모든 row 에 대해 행해진다. 이 작업시 가능한 모든 partition 이 memeory 에 위치하도록 해야 한다.
이 작업이후 B table 을 읽어들인다.이도 역시 hash function 을 통과시켜 hash value 가 memory 에 있는 partition 을 hit 하는지 check 한다.

만일 그러면 이 row 는 joined row 로 반환한다. 만일 아니면 해당 row 를 새로운 partiion 에 write 한다. 이때 S 와 같은 hash function 을 사용하며 이의 의미는 S와 B 의 같은 value는 같은 partition number 를 갖게 하기 위함이다.

(7) unique join keys 의 bitmap

bitmap 은 partition 에 들어있는 value 의 flag 이라 할수 있다. 이는 S 의 row 가 disk 의 partititon 에 씌이기 전에 생성되어 진다.

 

캐나다 교육적금 RESP

by

Registered Education Savings Plans(RESP)

RESP는 한국말로 하면 ‘교육적금’이라고 할 수 있습니다. 이 RESP에는 자녀들의 교육비용 적금 용도 이외에도 세금혜택과 정부지원 및 유연하게 자금을 운용할 수 있도록 하는 몇가지 장점이 있습니다.

RESP에 대한 혜택

  • Tax deferral : RESP 계좌에 투자/운용되어 얻어진 수익(이자)에 대한 세금을 당장 내지 않아도 됩니다. 그 수익금이 RESP 계좌에서 인출하기 전까지는 그 수익금에 대한 세금은 내지 않아도 되며, 자녀가 대학에 가게 되어 RESP 계좌에서 금액을 인출하여 자녀의 학비로 사용하는 경우 해당 자녀 이름 앞으로 인출된 금액만큼의 소득이 잡히기때문에 그 소득에 대해서는 세금을 내야하지만 보통 1년 학비로 사용하기 위해 RESP 계좌에서 인출하는 금액이 30,000불을 넘기 어렵기 때문에 세금은 거의 없다고 생각하면 됩니다.
  • 캐나다 교육채권 CLB (Canada Learning Bond) : CLB는 정부가 저소득 가정이 자녀의 고등학교 졸업 이후 교육을 위한 저축을 시작할 수 있도록 지원 해 주는 것으로 2004년 1월 이후에 태어난 자녀를 가진 가계소득 $42,707 이하의 가정 (NCB: National Child Benefit Supplement 대상자)에 RESP 계좌 개설 시 $500을 지급하며, 추가로 이 가정이 NCB 자격이 있는 동안 자녀가 15세가 될 때까지 매년 $100을 지원합니다. 또한 현재는 CLB 자격이 없는 가정도 추후에 NCB 혜택을 받게 되면 CLB $500와 연간 $100의 CLB 추가보조금을 받을 수 있습니다. 결국 저소득 가정은 교육적금(RESP) 계좌개설만으로도 15년간 최고 $2,000까지 보조금을 받을 수 있습니다.
  • 캐나다 교육저축 보조금 CESG(Canada Education Savings Grant) : CESG는 정부가 교육적금을 장려하기 위해 지급하는 보조금으로 두 부분으로 나누어져 있습니다.

– 기본 교육 저축 보조금(Basic Canada Education Savings Grant) – 가구의 소득에 관계없이 매년 자녀의 교육적금에 저축하는 금액의 최초$2,500까지의 금액에 대해 20%를 직접 보조금으로 지급합니다. (예를 들면, $2,500을 저축하는 경우 $500을 정부에서 교육적금 계좌에 입금해 줍니다.)

– 추가 교육 저축 보조금(Additional Canada Education Savings Grant) – 가구의 소득에 따라 매년 자녀의 교육적금에 저축하는 금액의 최초$500까지의 금액에 대해 추가로 10% 또는 20%를 지급합니다.

RESP 종류

  • Family RESP : 1명 이상의 친자녀 또는 입양자녀를 위해 개설 할 수 있으며, 가족 RESP 한 계좌로 모든 자녀를 위해 저축 할 수 있습니다.
  • Individual RESP : 개별  RESP 계좌를 개설하여, 자녀이건 아니건 1명의 아이를 위해 저축할 수 있습니다.
  • Group RESP : 여러분의 저축이 다른 사람들의 저축과 하나로 묶이며, 학교 등록금을 낼 때에는 저축액이 나뉩니다. 적금마다 규정이 다릅니다.

RESP 계좌는 한 명의 자녀 이름으로 여러 금융기관을 통하여, 여러 개의 계좌를 개설할 수 있으며, 31년간 불입 할 수 있고 35년간 유지할 수 있습니다.

RESP 계좌개설 방법

  • 1단계 : 자녀의 사회보장번호 SIN(Social Insurance Number)를 발급받으십시오. 가까운 Canada Service Center를 방문하시면 무료로 발급 받으실 수 있습니다.
  • 2단계 : RESP 제공자를 선택하여 계좌를 개설하십시오.
  • 3단계 : RESP 계좌를 개설한 다음 RESP 제공자의 기본/추가 교육저축 보조금 및 캐나다 교육 채권 신청서를 작성하십시오.

RESP 개설 기관

RESP 계좌는 대부분 금융기관(은행 및 증권회사)에서 만들 수 있습니다. 하지만, 다음과 같은 사항들을 잘 따져보고 선택해야 합니다.

  • RESP는 family plan, individual plan, group plan등이 있는데, 목적에 맞게 잘 선택해야 합니다.
  • 투자방법을 선택할 때는 GIC로 할지, 주식으로 할지, 뮤추얼 펀드로 할지 등을 상담원과 잘 협의하여 선택해야 합니다.
  • 수혜자가 RESP 계좌에서 찾아 사용할 때는, RESP 공급자가 목적에 맞게 사용하는지 관리감독할 책임이 있습니다. 또한, 수혜자가 고등학교 이상의 교육을 받지 않게 되는 경우에는 그동안 저금/투자된 금액이 얼마인지, 수익은 얼마인지를 정산하여 그동안 적금을 부은 사람에게 되돌려주게 됩니다. 또한, 정부가 그동안 추가로 보조해준 돈도 정부에게 돌려줍니다.

어떤 RESP 개설 기관은 계좌유지비를 내도록 하고, 어떤 개설 기관은 적금의 한도를 정하거나, 얼마나 자주 입금할 수 있는지를 제한할 수가 있습니다. 따라서, RESP 개설 기관을 정할 때는 특별해 이런 부분에 신경 쓰는 것이 좋습니다. 한번 개설하게 되면 개설 기관을 옮기기가 쉽지 않으므로 신중하게 결정할 필요가 있습니다.

기타

교육적금(RESP)의 연간 불입한도의 제한이 없어졌고 평생 불입한도는 5만 달러로, 특정한 한 해에 최대 5만 달러까지 불입이 가능합니다. 연간 보조금 수혜가능 불입금액 $2,500에 대해 사용하지 않은 여분이 있는 경우 연간 최고 $5,000까지 불입금액에 대해 $1,000까지 CESG 보조금을 받을 수 있습니다.  예를 들면, RESP에 가입하지 않은 자녀가 현재 13세인 경우 매년 $5,000씩 5년간 $25,000을 불입하면 보조금(CESG) $5,000을 받을 수 있습니다. CESG는 자녀가 17세가 된 해 말까지 지급되며 평생 받을 수 있는 총 보조금은 $7,200 입니다.  단, 자녀가 15세 이후에도 CESG를 계속 받으려면 15세가 된 해 말까지 적어도 RESP계좌에 $2,000이 불입되었던지, 아니면 그 이전 4년 이상을 년 $100이상씩 불입해야만 합니다.

하지만 Canada Revenue Agency(캐나다 국세청)에서는 이 계좌에서 투자되어 얻어진 수익에 대하여 적금의 수혜자(Beneficiary)가 고등학교 이상의 교육에 사용할 때까지 세금을 부과하지 않기 때문에 복리(?)의 혜택을 누릴 수 있는 특별한 계좌입니다.

은행이나 투자회사에 가서 RESP계좌를 열면, 자녀가 미래에 받을 교육을 위하여 즉각적으로 저금/투자를 할 수 있습니다. 많은 부모가 이 계좌를 언제 열어야 하고 얼마씩 투자해야 하는가 하고 고민을 합니다. 이에 대한 간단한 대답은 ‘지금 당장, 최대한 많이’입니다. 왜냐하면, 일찍 시작할수록 세금을 내지 않고 투자수익이 계속해서 늘어나기 때문입니다.

RESP 인출

아이가 ‘Qualifying educational Program’에 등록하면, RESP로부터 ‘Educational Assistance Payments (EAPs)’를 받게 됩니다.
여기에서 ‘Qualifying education program’이라고 하는 것은 최소한 3주간 연속해서 교육하고, 매주 10시간 이상의 교육을 하는 프로그램을 이야기합니다. 만약에 외국의 교육기관에서 교육을 받는 경우에는 최소한 13주 이상 계속되는 교육이어야 합니다.
RESP는 ‘Apprenticeships’, ‘Trade school에서 진행하는 프로그램’, CEGEP, 대학, 대학교등의 교육을 말합니다. 또한, RESP는 시간제 교육(Part time education)이나 전일제 교육 모두에 사용될 수 있습니다. 이에 관하여 의문사항이 있으시면 국세청에 문의하시면 상세히 알아볼 수 있습니다.

아이가 고등학교 이후의 교육을 받지 않는 경우
만약에 수혜자가 고등교육을 포기하는 경우에는

  • 일정기간 기다리면서 아이가 마음을 돌리길 기대해 보거나
  • 수혜자를 다른 형제/자매로 바꾸거나
  • 본인의 RRSP계좌로 옮기거나
  • 인출 (원금은 세금을 안 내도 되며, 정부가 보조한 돈은 정부에게 돌려줍니다. 수익에 관해서는 세금을 냅니다.)

할 수 있습니다.

참고 링크

http://www.hrsdc.gc.ca/eng/jobs/student/savings/index.shtml

http://www.hrsdc.gc.ca/eng/jobs/student/index.shtml

 

Oracle database script with Windows PowerShell

by

If Oracle database is running on Windows environment, PowerShell would be a very good tool for automated scripting for the database such as monitoring or backup script. So the following script would be an example:

 

Add-Type -Assembly System.Data.OracleClient
$connectionString = "Data Source=HOSTNAME:1521/SID; User ID=USERNAME; Password=PASSWORD"
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)
$connection.Open()

#$queryString = "SELECT db_link FROM dba_db_links"
$queryString = "SELECT instance_name FROM v`$instance"
$command = new-Object System.Data.OracleClient.OracleCommand($queryString, $connection)
$reader = $command.ExecuteReader();
$name = $(
 while ($reader.Read())
 {
 $reader.GetValue(0) 
 }
)

write-host "Instance Name :" $name | ft
$connection.Close()

REDO-LESS Operations (NOLOGGING option) in Oracle

by

REDO-LESS Operations (NOLOGGING option) in Oracle

It is possible not to generate redo data at some operations. The examples would be a direct loader, CREATE TABLE AS SELECT(CTAS), and CREATE INDEX with NOLOGGING option. However, even in these cases, a little redo will be generated when the operation changes data dictionary block and when the delayed block cleanout execute for a source object.

The NOLOGGING option can be used for the following SQL statements from Oracle 8.

Direct-load INSERT
ALTER TABLE … MOVE PARTITION
ALTER TABLE … SPLIT PARTITION
ALTER INDEX … SPLIT PARTITION
ALTER INDEX … REBUILD
ALTER INDEX … REBUILD PARTITION
From the Oracle8 Reference Manual:

With the NOLOGGING option, data is updated with minimal logging which means that it makes newly allocated extent invalid and it generates only logs to change its dictionary information. So in case of media recovery, the extent invalidation record shows some block is logically corrupt status because there no redo log for the recovery.

So, the data in the table should be kept, the backup should be done after the work with NOLOGGING.

The following is the example;
REDO RECORD – Thread:1 RBA: 0x0000cf.0000002a.01c0 LEN: 0x0028 VLD: 0x01
SCN scn: 0x04e2.0023a5da 10/07/98 09:54:20
CHANGE #1 INVLD AFN:8 DBA:0x02007277 BLKS:0x001f SCN:0x04e2.0023a5da SEQ: 1 OP:19.2

When the redo record is applied to this block, the ORA-273 error would be occurred on it.

ORA-00273 “media recovery of direct load data that was not logged”
Cause: A media recovery session encountered a table that was loaded by the direct loader without logging any redo information. Some or all of the blocks in this table are now marked as corrupt.
Action: The table must be dropped or truncated so that the corrupted blocks can be reused. If a more recent backup of the file is available, try to recover this file to eliminate this error.

When any operation try to read the block, the ORA-1578 error would be occurred.

Reference Ducumment : DSI305

 

 

 

 

일부 operation의 경우 redo를 생성시키지 않는 것이 가능하다. 예를 들어 direct loader나, CREATE TABLE AS SELECT 나 CREATE INDEX에 NOLOGGING 옵션을 사용하는 경우를 들 수 있다. 이 경우 redo 생성이 되지 않는다. 주의해야 할 것은 이 경우에도 data dictionary에 대한 변동 사항에 대해서는 operation에 의해 영향을 받는 block들에 대해 여전히 redo 가 생성이 된다는 것이다. 또한 source object에 대해 delayed block cleanout 이 수행될 경우에도 redo가 생성된다.

오라클 8 부터는 다음 SQL 문장들에 NOLOGGING 옵션을 사용 할 수 있는 기능이 추가 되었다.

Direct-load INSERT
ALTER TABLE … MOVE PARTITION
ALTER TABLE … SPLIT PARTITION
ALTER INDEX … SPLIT PARTITION
ALTER INDEX … REBUILD
ALTER INDEX … REBUILD PARTITION
From the Oracle8 Reference Manual:

NOLOGGING 모드에서는, 데이터는 최소한의 logging으로 수정이 된다 ( 최소한의 logging이란, 새로 할당된 extent를 invalid 상태로 만들고, dictionary 정보를 변경하는데 필요한 log 정보를 말한다 ). Media recovery중에는 extent invalidation record는 일정 범위의 block이 논리적으로 corrupt 상태임을 나타내는데, 이것은 복구에 필요한 완전한 redo log가 남아 있지 않기 때문이다.

따라서, 테이블의 내용이 유실되어서는 않되는 상황이라면, NOLOGGING 작업 후 BACKUP을 수행하여야 한다.

LOGGING 옵션을 사용했을 경우와 비교해 NOLOGGING 모드에서는 훨씬 적은 양의 redo log가 생성된다. Redo log에 invalidation record는 일정 범위의 block이 software corrupt상태임을 나타내기 위한 것이다. 이 경우 change vector의 type은 INVALID로 지정이 되며, 범위는 최초 시작 지점인 DBA에 의해 결정된 후, 연속된 block의 개수도 지정이 된다.

다음은 예이다.
REDO RECORD – Thread:1 RBA: 0x0000cf.0000002a.01c0 LEN: 0x0028 VLD: 0x01
SCN scn: 0x04e2.0023a5da 10/07/98 09:54:20
CHANGE #1 INVLD AFN:8 DBA:0x02007277 BLKS:0x001f SCN:0x04e2.0023a5da SEQ: 1 OP:19.2
Redo record가 적용될 경우, 이 블록에 대해서는 ORA-273 에러가 발생한다.

ORA-00273 “media recovery of direct load data that was not logged”
Cause: A media recovery session encountered a table that was loaded by the direct loader without logging any redo information. Some or all of the blocks in this table are now marked as corrupt.
Action: The table must be dropped or truncated so that the corrupted blocks can be reused. If a more recent backup of the file is available, try to recover this file to eliminate this error.

해당 block을 읽으려는 operation 역시 alert log에 ORA-1578이 남는다.

Reference Ducumment : DSI305

캐나다 BC주 구직사이트 모음(job search engine)

by

다음은 제가 한참 구직할때 유용하게 사용하던 구직사이트 모음입니다. 일부는 BC주에만 해당되거나 IT 업종에만 해당되는 사이트도 있으니 참고하세요.
제 경험상 Indeed.ca나 eluta.ca, 그리고 T-Net이 가장 효율이 좋았습니다.

Eluta.ca – www.eluta.ca
A meta-search engine which specializes in finding new job ads from employers in Canada. Besides up-to-date job postings, Eluta also provides employer profiles and information from the publishers of Canada’s Top 100 Employers on top companies, best diversity employers, best employers for newcomers and new graduates, most environmentally conscious companies, etc.

Indeed.ca – www.indeed.ca
Get jobs collected from job boards, newspaper classifieds and corporate sites. Read the Blog for information on trends, company profiles and labour market data from around the world.

BCjobs.ca – www.bcjobs.ca
BC Jobs has been in business for almost 10 years, providing BC job seekers with information about the local labour market and BC-based companies, as well as BC jobs.

T-Net – http://www.bctechnology.com/

Eluta와 Indeed는 일종의 job search 엔진입니다. 즉, company에서 자신의 회사 홈페이지 구인란에 구인공고를 내면 이 job search엔진이 그 내용을 찾아주는 구글과 비슷한 개념의 구직사이트이지요. 즉, 회사에서 구인공고를 Eluta나 Indeed에 직접 올리지 않아도 되는 시스템이지요. 요즘엔 이런 사이트가 많이 사용되고 있다고 합니다.

혹시 찾고자 하는 일자리가 IT 직종이고 BC주에 위치하는 회사라면 T-Net 이라는 웹사이트는 필수로 보셔야 하는 구직 사이트입니다. 구직 정보뿐 아니라 각종 IT 회사 동향에 대한 뉴스도 나오고 아주 선호도가 높은 웹사이트 입니다. IT 회사라면 자신의 회사 홈페이지에 구인 공고를 낼때 꼭 T-Net에도 함께 올리는게 일반화 되어 있습니다. 저도 매일매일 몇번씩 이 사이트를 방문했었고, 저의 현재 일하는 회사도 이 사이트에서 공고를 보고 잡게 된 것입니다.

 

아래는 기타 구직 사이트입니다. 참조하세요.

 

Here is a list of the job boards:

Finance Accounting – www.jobwings.com

Accounting &amp; Bookkeeping – www.accountingjobs.ca

Human Resources – www.hrjob.ca

Sales – www.salesrep.ca

Computer Science – www.itjob.ca

Retail – www.retailjob.ca

Engineering – www.recrutech.ca

Administrative Support – www.adminjob.ca

Call Centers &amp; Customer Service – www.callcenterjob.ca

Project Management – www.pmjob.ca

Business Analysis – www.bajob.ca

Pharmaceutical – www.pharmajob.ca

Healthcare – www.healthcarejob.ca

Legal – www.legaljob.ca

Paralegal – www.paralegaljob.ca

Part-time – www.part-time.ca

 

Other Job Posting Sites:

All Canadian Jobs www.allcanadianjobs.com

Allstar Jobs www.allstarjobs.ca

BetterJobs www.betterjobs.biz

BC Government Jobs  http://employment.gov.bc.ca

BCjobnetwork.com www.bcjobnetwork.com (online job matching)

Canadajobs.com www.canadajobs.com

Canadian Job Search www.webcrew.com/jobs/morejobs.htm

Canjobs.com www.canjobs.com

Careerjet.com www.careerjet.ca

CareerOwl www.careerowl.com

Jobs in Tourism and Hospitality www.cooljobscanada.com

Craigslist Vancouver http://vancouver.craigslist.org/jjj/

eFinancialCareers www.efinancialcareers-canada.com

Elance for Freelancers www.elance.com

Engineering www.recrutech.ca

Find A Job Canada www.find-a-job-canada.com

Groove Job www.groovejob.com

Higher Bracket: Job Postings for Executives www.higherbracket.ca

Job Bank www.jobbank.gc.ca

Jobboom www.jobboom.com

Job Bus Canada www.jobbus.com

Job Shark www.jobshark.ca

JobLineCanada.com www.joblinecanada.ca

Science Jobs Canada www.sciencejobs.ca

Monster.ca – Search Jobs Search for jobs all over Canada and the rest of World! www.monster.ca

Vancouver Vicinity Jobs www.vicinityjobs.com

WorkLink Employment Society www.worklink.bc.ca/temp

Workopolis www.workopolis.com