วันจันทร์ที่ 6 เมษายน พ.ศ. 2552

การ re-index sql server 2000

เป็นวิธีการ re-index ของคุณ insanity จาก thaiadmin
1. เพิ่ม log file ที่ 2 โดยระบุที่อยู่ให้อยู่ใน drive E
- เปิด Enterprise Manager ขึ้นมา แล้วเลือก daabase ตัวที่ต้องการ แล้ว คลิ๊กขวา --> Properties
- คลิ๊ก Tab : Transaction Log จะเห็นไฟล์ log ปัจจุบัน ( ผมเรียกเป็นไฟล์ log ที่ 1 ละกัน)
- ตรงใต้ชื่อไฟล์ log ที่ 1 ให้เพิ่มชื่อไฟล์ log ที่ 2 ที่จะสร้างใหม่ ในช่อง File Name และกำหนด Location เป็น drive E ( ถ้าคิดไม่ออก ก็ตั้งคล้ายๆ ไฟล์ที่ 1 ก็ได้ ไม่ต้องโลเลคิดมาก ) โดยที่ไฟล์ log ที่ 2 นี้ ให้มีค่า maxmimum file size เป็น unlimited

2. กำหนด max size ของ log file ที 1(ใน drive D)
- กลับไปเลือกที่ ไฟล์ log ที่ 1 แล้ว ดูตัวเลขตรง space allocated เอาไว้ แล้วดู maximum file size ข้างล่างว่าเป็นอะไรแล้วจำไว้ ( ถ้าไม่เคยไปแตะต้องมันเลย ควรจะเป็น unlimited )
- สำหรับ ไฟล์ log ที่ 1 นี้ ให้แก้ไข ตรง maximum ให้มากกว่า space allocated แต่ระวังอย่าให้มากจน drive D ไม่พอ ไม่ต้องคิดมาก เช่น ไฟล์ log ที่ 1 ขนาด 10G ก็ใส่ maximum เป็น 11G ก็ได้

หลังจากตรงนี้แล้ว ให้กด OK ๆ ออกไป ผลลัพธ์ที่จะได้ก็คือ เมื่อ sql server บันทึก log จะบันทึกลงไปใน ไฟล์ log ที่ 1 จนเต็ม ถึง max. size ที่กำหนดไว้แล้ว จะขยับขยายไปใช้ไฟล์ log ที่ 2 เพื่อทำงานต่อ ( ต้องทำแบบนี้เพื่อแก้ไขปัญหา drive D ที่มีพื้นที่น้อยอยู )

3. ทำ reindex ( ผมใช้ optimization job ละกัน )
- ไปที่ Enterprise Manager --> Management --> Database Maintenance Plan
- คลิ๊กขวา --> New maintenance plan
- ก็ next จนเจอหน้า Update Data Optimization Information ให้ติ๊กเลือก Reorganize data and index pages ส่วนตรงปุ่ม option ก็เลือกตัวบน (Reorganize page with the original amount of free space) ก็ได้ครับ
- ยังไม่จบหน้านี้นะ.. ให้กดปุ่ม Change เพื่อตั้งเวลาที่จะให้มันทำงาน --> เลือกเวลาตามสะดวก อย่าลืมว่า ขณะที่ทำ reindex อยู่ user จะใช้งานไม่ได้
- หน้าต่อไป เช่น พวก backup ก็ติ๊กออก (uncheck) เพราะว่าไม่ต้องการ backup ส่วนพวก write report file หรือพวก history ก็ให้ write ไว้ก็ได้คร้บ --> แล้วก็ next ๆ จนจบ
- เมื่อทำเสร็จ sql server จะสร้าง job ขึ้นมา 1 ตัว ไปหาดูได้ที่ Management --> SQL Server Agent --> Jobs

เสร็จแล้วครับ แล้วก็รอจนมันทำงานจนจบ หรือจะไป คลิ๊กขวาที่ job ของมัน แล้วสั่ง start เลยก็ได้ ไม่ต้องรอตามเวลาที่ตั้ง
(เมื่อ เสร็จจบทุกอย่างแล้ว คุณควรจะ disable ตัว job ในข้อ 3 นี้ไว้ หรือลบออกก็ได้ เพื่อป้องกันไม่ให้ sql server run มันโดยที่คุณอาจจะไม่ได้ตั้งใจ เพราะระหว่าง run นั้น database จะใช้งานไม่ได้)

4. หลังจากที่เสร็จแล้ว ทำการ truncate log ทิ้งไป เพื่อให้ลบ log file ที่ 2 ( สร้างไว้ในข้อ 1 ) ออกได้
- เปิด Query analyzer ขึ้นมา ใช้คำสั่ง backup database ชื่อดาต้าแบส with truncate_only

ถ้าไม่ truncate ทิ้งก้อน ก็อาจจะมี log บันทึกค้างอยู่ในไฟล์ log ที่ 2 ซึ่งจะทำให้ sql server ไม่ยอมให้ลบไฟล์ log ที่ 2 ทิ้ง

5. ลบ log file ที่ 2 ที่สร้างไว้
- เปิด Enterprise Manager ขึ้นมา แล้วเข้าไปที่ Properties ของ Database แล้วก็ --> Tab: Transaction log --> เลือกไฟล์ log ที่ 2 --> กด Delete

6. แก้ไข max size ของ log file ที่ 1 กลับค่าเดิม
- เลือกไฟล์ log ที่ 1 แล้วแก้ไข maximum file size เป็นค่าเดิม ( น่าจะเป็น unlimited )

จบการทำ reindex ไปนอนละ ( พิมพ์เยอะนะเนี่ย )

แล้วก็สังเกตุว่า user ใช้งานแล้วดีขึ้นแค่ไหน

ที่มา http://www.thaiadmin.org/board/index.php?topic=83142.0