ใช้แนวทางต่อไปนี้เพื่อจัดการหรือแก้ไขปัญหาลูกบาศก์ Essbase ด้วยพาร์ติชันแบบรวมศูนย์
หัวข้อนี้สมมติว่าคุณได้สร้างพาร์ติชันแบบรวมศูนย์แล้ว และตรวจสอบข้อมูลที่แสดงในรายละเอียดไว้ในหัวข้อก่อนหน้าแล้ว
เมื่อออกแบบลูกบาศก์พาร์ติชันแบบรวมศูนย์ ให้ทำตามคำแนะนำในการทดสอบเหล่านี้หากการสร้างพาร์ติชันใช้เวลานานเกินไป คำแนะนำเหล่านี้อาจเป็นประโยชน์สำหรับการใช้วิธีแบบแบ่งช่วงเพื่อแก้ไขปัญหาหรือตรวจสอบประสิทธิภาพ
เริ่มโปรเจคพาร์ติชันแบบรวมศูนย์ในสภาวะแวดล้อมการทดสอบ
เริ่มต้นด้วยโมเดลลูกบาศก์ที่มีลักษณะดังต่อไปนี้:
มีระดับไม่มาก
มีสมาชิกหรือแอททริบิวที่ใช้ร่วมกันเป็นจำนวนไม่มาก
ขณะที่สร้างพาร์ติชันแบบรวมศูนย์ ให้วางกำหนดการการปฏิบัติงานแบบออฟไลน์ที่ไม่อนุญาตให้ทำการสืบค้นต่ออินสแตนซ์
ทยอยถอนการเชื่อมต่อเซสชันของผู้ใช้ Essbase ที่มีการใช้งานอยู่ โดยใช้เลิกใช้คำสั่ง
MaxL แก้ไขแอปพลิเคชัน และ/หรือเลิกใช้การเชื่อมต่อ
(เพื่อป้องกันกิจกรรมผู้ใช้ใหม่) ตามด้วยแก้ไขระบบ เซสชันล็อกเอาต์
และ/หรือคำขอหยุดการทำงาน
(หากคุณจำเป็นต้องยกเลิกเซสชันใดที่มีการใช้งานอยู่ที่ไม่จำเป็นต้องเสร็จสิ้น) โปรดทราบว่า MaxL ไม่สามารถยกเลิกคำขอใดๆ ที่อาจทำงานอยู่ใน Autonomous Data Warehouse หากคุณเลิกใช้คำสั่งในแอปพลิเคชัน อย่าลืมใช้งานคำสั่งอีกครั้งหลังจากสร้างพาร์ติชันแบบรวมศูนย์
/etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
/etc/httpd/conf.d/00_base.conf:Timeout 1260
olap.server.netRetryCount
เป็น 9000หมายเหตุ:
หากคุณพบข้อผิดพลาด "บันทึกเอาต์ไลน์ล้มเหลว" ขณะสร้างพาร์ติชันแบบรวมศูนย์ ให้รอจนเซสชันเสร็จสมบูรณ์ แล้วจึงรีเฟรชเบราเซอร์ หากสร้างพาร์ติชันแบบรวมศูนย์แล้ว ให้ตรวจสอบใน SQL Developer หากตรวจสอบแล้วถูกต้องใน SQL Developer พาร์ติชันแบบรวมศูนย์ก็พร้อมใช้งานแล้ว หากตรวจสอบแล้วไม่ถูกต้องใน SQL Developer โมเดลก็ต้องมีการแก้ไขและต้องมีการปรับไทม์เอาต์ตามที่อธิบายไว้ในขั้นตอนที่ 3เมื่อ Essbase มีพาร์ติชันแบบรวมศูนย์ โปรดระมัดระวังขณะแก้ไขเอาต์ไลน์ลูกบาศก์ หากคุณเพิ่มหรือเปลี่ยนชื่อสมาชิก โปรดตรวจสอบว่าการเปลี่ยนแปลงเมตะดาต้าปรากฏอยู่ในตารางแฟคท์ที่ Autonomous Data Warehouse ด้วย
หากเอาต์ไลน์ Essbase ไม่สอดคล้องกับตารางแฟคท์ใน Autonomous Data Warehouse พาร์ติชันแบบรวมศูนย์จะไม่ถูกต้องหรือทำงานได้อย่างไม่ถูกต้อง วิธีแก้ไขให้ลบพาร์ติชันแบบรวมศูนย์ ทำการเปลี่ยนแปลงเอาต์ไลน์และตารางแฟคท์ จากนั้นสร้างพาร์ติชันแบบรวมศูนย์อีกครั้ง
หากพาร์ติชันแบบรวมศูนย์ไม่ถูกต้อง คุณอาจพบข้อผิดพลาดที่ขึ้นต้นด้วย Essbase Error(1040235): Remote warning from federated partition
ประเภทการเปลี่ยนแปลงต่อไปนี้ในเอาต์ไลน์ Essbase จะทำให้พาร์ติชันแบบรวมศูนย์ไม่ถูกต้อง:
การเพิ่ม การเปลี่ยนชื่อ หรือการลบไดเมนชัน
การเพิ่ม การเปลี่ยนชื่อ หรือการลบสมาชิกที่จัดเก็บไว้ของไดเมนชันจุดอ้างอิง
การเปลี่ยนสมาชิกใดๆ จากที่จัดเก็บไว้เป็นแบบไดนามิก
สำหรับประเภทการเปลี่ยนแปลงอื่นๆ ในเอาต์ไลน์ Essbase ที่ไม่มีการระบุไว้ข้างต้น (เช่น การเพิ่มหรือการเปลี่ยนชื่อสมาชิกที่ไม่ได้อยู่ในไดเมนชันจุดอ้างอิง) คุณควรทำการเปลี่ยนแปลงที่เกี่ยวข้องกับแถวข้อมูลที่ได้รับผลกระทบในตารางแฟคท์ ไม่เช่นนั้น พาร์ติชันแบบรวมศูนย์จะทำงานไม่ถูกต้อง
หากคุณทราบล่วงหน้าว่าจะมีการเปลี่ยนแปลงเมตะดาต้าเอาต์ไลน์ Essbase ขอแนะนำให้ลบพาร์ติชันแบบรวมศูนย์ก่อน จากนั้นทำการเปลี่ยนแปลงเอาต์ไลน์ อัปเดตตารางแฟคท์ แล้วสร้างพาร์ติชันแบบรวมศูนย์อีกครั้ง
อย่างไรก็ตาม หากมีการเปลี่ยนแปลงเมตะดาต้า Essbase และทำให้พาร์ติชันแบบรวมศูนย์ไม่ถูกต้อง ให้ดำเนินการดังต่อไปนี้:
ลบพาร์ติชันแบบรวมศูนย์ และการเชื่อมต่อที่เกี่ยวข้องกับพาร์ติชัน (หรือหากไม่ได้ใช้) ตามที่อธิบายไว้ใน ย้ายพาร์ติชันแบบรวมศูนย์ออก
จากสคีมาผู้ใช้พาร์ติชันแบบรวมศูนย์ใน Autonomous Data Warehouse ให้ลบตารางที่ Essbase สร้างขึ้นและออบเจกต์อื่นๆ ที่ย้ายออกไม่สำเร็จด้วยพาร์ติชันแบบรวมศูนย์
ตรวจสอบว่ามีการเปลี่ยนแปลงเอาต์ไลน์ในลูกบาศก์ Essbase
สร้างตารางแฟคท์อีกครั้ง โปรดดู สร้างตารางแฟคท์
ทำการเชื่อมต่อกับ Autonomous Data Warehouse อีกครั้ง อาจเป็นการเชื่อมต่อร่วม (ภายใต้ไอคอนที่มาหลักในเว็บอินเตอร์เฟซ Essbase) หรืออาจอยู่ในที่มาที่ระบุไว้สำหรับแอปพลิเคชันโดยเฉพาะ ทำตามคำแนะนำใน สร้างการเชื่อมต่อสำหรับพาร์ติชันแบบรวมศูนย์
สร้างพาร์ติชันแบบรวมศูนย์อีกครั้ง ตามที่อธิบายไว้ใน สร้างพาร์ติชันแบบรวมศูนย์
หากรายละเอียดการเชื่อมต่อ Autonomous Data Warehouse ที่ Essbase ใช้สำหรับพาร์ติชันแบบรวมศูนย์มีการเปลี่ยนแปลง คุณจะต้องลบและสร้างพาร์ติชันแบบรวมศูนย์อีกครั้ง แล้วล้างข้อมูลออบเจกต์และตารางเมตะดาต้าที่เชื่อมโยงออกจากสคีมาฐานข้อมูล
คุณจะต้องลบและสร้างพาร์ติชันแบบรวมศูนย์อีกครั้ง หากอีเวนต์ใดต่อไปนี้เกิดขึ้นหลังจากที่สร้างพาร์ติชันแบบรวมศูนย์แล้ว:
มีการเปลี่ยนแปลงพอร์ต Autonomous Data Warehouse
มีการเปลี่ยนแปลงชื่อ การเชื่อมต่อ
การเชื่อมต่อ จะใช้วอลเล็ต และคุณได้สลับจากชื่อเซอร์วิสหนึ่งไปยังอีกชื่อหนึ่ง (เพื่อแก้ไขประสิทธิภาพหรือการทำงานพร้อมกัน)
การอัปเดตเอาต์ไลน์เปลี่ยนแปลงสมาชิกที่แมปไปยังตารางแฟคต์ ส่งผลให้พาร์ติชันแบบรวมศูนย์ไม่สอดคล้องกัน โปรดดูรายละเอียดที่ ข้อควรระวังเกี่ยวกับเมตะดาต้าสำหรับลูกบาศก์พาร์ติชันแบบรวมศูนย์
หากคุณทราบล่วงหน้าว่าจะมีการเปลี่ยนแปลงรายละเอียดการเชื่อมต่อ ขอแนะนำให้ลบพาร์ติชันแบบรวมศูนย์ก่อนการเปลี่ยนแปลง แล้วจึงสร้างใหม่ในภายหลัง อย่างไรก็ตาม หากมีการเปลี่ยนแปลงการเชื่อมต่อและทำให้พาร์ติชันแบบรวมศูนย์ไม่ถูกต้อง ให้ดำเนินการตามขั้นตอนดังต่อไปนี้:
ลบพาร์ติชันแบบรวมศูนย์
ลบพาร์ติชันแบบรวมศูนย์ และการเชื่อมต่อที่เกี่ยวข้องกับพาร์ติชัน (หรือหากไม่ได้ใช้) ตามที่อธิบายไว้ใน ย้ายพาร์ติชันแบบรวมศูนย์ออก
ล้างข้อมูลออบเจกต์และตารางเมตะดาต้าที่เกี่ยวข้องกับพาร์ติชันแบบรวมศูนย์
จากสคีมาผู้ใช้พาร์ติชันแบบรวมศูนย์ใน Autonomous Data Warehouse ให้ลบตารางที่ Essbase สร้างขึ้นและออบเจกต์อื่นๆ ที่ย้ายออกไม่สำเร็จด้วยพาร์ติชันแบบรวมศูนย์
ssh ไปยังโฮสต์เซิร์ฟเวอร์ Essbase ในฐานะผู้ใช้ opc
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
เปลี่ยนเป็นผู้ใช้ oracle (และไปที่โฮมไดเรคทอรี)
sudo su - oracle
นาวิเกตไปที่ไดเรคทอรีของแอปพลิเคชัน
cd /u01/data/essbase/app
ใช้ชื่อแอปพลิเคชันและลูกบาศก์ Essbase เพื่อระบุคำนำหน้าที่ไม่ซ้ำกันที่เชื่อมโยงกับออบเจกต์และเมตะดาต้าของพาร์ติชันแบบรวมศูนย์ของคุณ
รับชื่อแอปพลิเคชัน (AppName) ชื่อเป็นแบบตรงตามตัวพิมพ์เล็กและใหญ่ ดังนั้นโปรดบันทึกให้ตรงตามนั้น ในตัวอย่างนี้ AppName = Sample
ls
Sample
นับจำนวนอักขระ (appx) ในชื่อแอปพลิเคชัน
ตัวอย่าง: appx = 6
นาวิเกตไปที่ไดเรคทอรีลูกบาศก์และรับชื่อลูกบาศก์ (DbName) ชื่อเป็นแบบตรงตามตัวพิมพ์เล็กและใหญ่ ดังนั้นโปรดบันทึกให้ตรงตามนั้น ในตัวอย่างนี้ DbName = Basic
cd /Sample
ls
Basic
นับจำนวนอักขระ (dby) ในชื่อลูกบาศก์
ตัวอย่าง: dby = 5
สร้าง Prefix เป็น:
ESSAV_<appx><AppName>_<dby><DbName>_
ตัวอย่าง:
<Prefix> = ESSAV_6Sample_5Basic_
ใช้ SQL Developer หรือเครื่องมืออื่นเพื่อเชื่อมต่อกับ Oracle Database ในฐานะผู้ใช้ของสคีมาที่พาร์ติชันแบบรวมศูนย์เชื่อมต่ออยู่
รันคำสั่ง SELECT เพื่อสร้างลิสต์ของออบเจกต์ที่เชื่อมโยงกับแอปพลิเคชันพาร์ติชันแบบรวมศูนย์ของคุณ รายการเหล่านี้เป็นออบเจกต์ที่คุณจะล้างข้อมูลในขั้นตอนถัดไป
รูปแบบคำสั่ง SELECT คือ:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';
ตัวอย่าง:
SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
รันโปรซีเจอร์ PL/SQL ที่จัดเก็บไว้ซึ่งจะล้างข้อมูลวิวการวิเคราะห์ แพ็คเกจ ลำดับชั้น ตาราง และออบเจกต์อื่นๆ ทั้งหมดที่เชื่อมโยงกับ Prefix
ตัวอย่าง
แทนที่ ESSAV_6Sample_5Basic_
ด้วย Prefix ของคุณ
SET SERVEROUTPUT ON; declare prefix_str varchar2(70) := 'ESSAV_6Sample_5Basic_'; BEGIN FOR c IN ( SELECT ANALYTIC_VIEW_NAME FROM user_analytic_views WHERE ANALYTIC_VIEW_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP ANALYTIC VIEW "' || c.ANALYTIC_VIEW_NAME || '" '; DBMS_OUTPUT.PUT_LINE('ANALYTIC VIEW ' || c.ANALYTIC_VIEW_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct OBJECT_NAME FROM USER_PROCEDURES WHERE OBJECT_TYPE='PACKAGE' and OBJECT_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP PACKAGE "' || c.OBJECT_NAME || '" '; DBMS_OUTPUT.PUT_LINE('PACKAGE ' || c.OBJECT_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct HIER_NAME FROM USER_HIERARCHIES WHERE HIER_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP HIERARCHY "' || c.HIER_NAME || '" '; DBMS_OUTPUT.PUT_LINE('HIERARCHY ' || c.HIER_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct DIMENSION_NAME FROM USER_ATTRIBUTE_DIM_TABLES_AE WHERE DIMENSION_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP ATTRIBUTE DIMENSION "' || c.DIMENSION_NAME || '" '; DBMS_OUTPUT.PUT_LINE('ATTRIBUTE DIMENSION ' || c.DIMENSION_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP TABLE "' || c.TABLE_NAME || '" purge'; DBMS_OUTPUT.PUT_LINE('TABLE ' || c.TABLE_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct VIEW_NAME FROM USER_VIEWS WHERE VIEW_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP VIEW "' || c.VIEW_NAME || '" '; DBMS_OUTPUT.PUT_LINE('VIEW ' || c.VIEW_NAME || ' dropped successfully.'); END LOOP; FOR c IN ( SELECT distinct TYPE_NAME FROM USER_TYPES WHERE TYPE_NAME like prefix_str || '%' ) LOOP EXECUTE IMMEDIATE 'DROP TYPE "' || c.TYPE_NAME || '" FORCE'; DBMS_OUTPUT.PUT_LINE('TYPE ' || c.TYPE_NAME || ' dropped successfully.'); END LOOP; END; /
ลบและอัปเดตตารางเกี่ยวกับเมตะดาต้าที่เชื่อมโยง ก่อนอื่น คุณต้องรับค่าสำหรับ ESSBASE_INSTANCE_UNIQUE_ID และ OTL_ID
ssh ไปยังโฮสต์เซิร์ฟเวอร์ Essbase ในฐานะผู้ใช้ opc
ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
เปลี่ยนเป็นผู้ใช้ oracle (และไปที่โฮมไดเรคทอรี)
sudo su - oracle
ค้นหากระบวนการเอเจนต์ Essbase
ps -ef | grep ESSS | grep -v "grep"
คำสั่งข้างต้นควรจะส่งคืนลิสต์กระบวนการที่ขึ้นต้นด้วย oracle
ตามด้วย ID กระบวนการสองรายการ เช่น
oracle 10769 19563 ...
ลองใช้ ID กระบวนการแรกเป็น <PID>
ซึ่งคุณจะใช้ในขั้นตอนถัดไป
ใช้คำสั่ง strings เพื่อบันทึกค่า ESSBASE_INSTANCE_UNIQUE_ID
strings /proc/<PID>/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
ตัวอย่าง:
strings /proc/10769/environ | grep ESSBASE_INSTANCE_UNIQUE_ID
คำสั่งข้างต้นควรส่งคืนค่า ESSBASE_INSTANCE_UNIQUE_ID เช่น
ESSBASE_INSTANCE_UNIQUE_ID=EWRnHFlQteCEzWUhF7P3TPKunf3bYs
ใช้ SQL Developer หรือเครื่องมืออื่นเพื่อเชื่อมต่อกับ Oracle Database ในฐานะผู้ใช้ของสคีมาที่พาร์ติชันแบบรวมศูนย์เชื่อมต่ออยู่
รันคำสั่ง SELECT เพื่อรับค่า OTL_ID
รูปแบบคำสั่ง SELECT คือ:
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='<AppName>' and "JAGENT_INSTANCE_ID"='<ESSBASE_INSTANCE_UNIQUE_ID>';
ตัวอย่าง
แทนที่ ESSAV_6Sample_5Basic
ด้วย AppName ของคุณ และแทนที่ 'EWRnHFlQteCEzWUhF7P3TPKunf3bYs'
ด้วย ESSBASE_INSTANCE_UNIQUE_ID ของคุณ
SELECT OTL_ID FROM ESSAV_OTL_MTD_VERSION where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs';
การสืบค้นข้างต้นควรส่งคืนค่า OTL_ID เช่น
62
รันโปรซีเจอร์ PL/SQL ที่จัดเก็บไว้เพื่อลบตารางเกี่ยวกับเมตะดาต้าที่เชื่อมโยงกับ OTL_ID
ตัวอย่าง
แทนที่ 62
ด้วย OTL_ID ของคุณ
SET SERVEROUTPUT ON; BEGIN FOR c IN ( SELECT distinct TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME like 'ESSAV_MTD_62_%' ) LOOP EXECUTE IMMEDIATE 'DROP TABLE "' || c.TABLE_NAME || '" purge'; DBMS_OUTPUT.PUT_LINE('TABLE ' || c.TABLE_NAME || ' dropped successfully.'); END LOOP; END; /
รันคำสั่ง UPDATE เพื่อตั้งค่าตาราง ESSAV_OTL_MTD_VERSION ให้อยู่ในสถานะไม่ใช้งาน
ตัวอย่าง
แทนที่ ESSAV_6Sample_5Basic
ด้วย AppName ของคุณ และแทนที่ EWRnHFlQteCEzWUhF7P3TPKunf3bYs
ด้วย ESSBASE_INSTANCE_UNIQUE_ID ของคุณ
UPDATE "ESSAV_OTL_MTD_VERSION" SET "OTL_STATUS" = 'INACTIVE' where APPNAME ='ESSAV_6Sample_5Basic' and "JAGENT_INSTANCE_ID"='EWRnHFlQteCEzWUhF7P3TPKunf3bYs'; commit;
สร้างการเชื่อมต่อและพาร์ติชันแบบรวมศูนย์อีกครั้ง
ทำการเชื่อมต่อกับ Autonomous Data Warehouse อีกครั้ง อาจเป็นการเชื่อมต่อร่วม (ภายใต้ไอคอนที่มาหลักในเว็บอินเตอร์เฟซ Essbase) หรืออาจอยู่ในที่มาที่ระบุไว้สำหรับแอปพลิเคชันโดยเฉพาะ ทำตามคำแนะนำใน การเชื่อมต่อ อย่าลืมทดสอบและบันทึกการเชื่อมต่อ
สร้างพาร์ติชันแบบรวมศูนย์อีกครั้ง ตามที่อธิบายไว้ใน สร้างพาร์ติชันแบบรวมศูนย์
หากคุณยังคงเห็นข้อผิดพลาดการเชื่อมต่อ Essbase Error(1350012): Attempt to connect to OCI failed
ให้ดูที่ https://support.oracle.com/rs?type=doc&id=2925030.1
พาร์ติชันแบบรวมศูนย์ไม่ได้ย้ายข้อมูลกับแอปพลิเคชัน Essbase ขณะที่กำลังเตรียมย้ายแอปพลิเคชันและลูกบาศก์ของคุณไปยังเซิร์ฟเวอร์อื่น หรือย้ายไปยัง Essbase เวอร์ชันอื่น คุณต้องลบพาร์ติชันแบบรวมศูนย์และสร้างขึ้นใหม่ในสภาวะแวดล้อมใหม่
ในการสำรองข้อมูลลูกบาศก์พาร์ติชันแบบรวมศูนย์ของคุณ
สำรองแอปพลิเคชันโดยไม่ต้องสำรองข้อมูล แต่รวมสิ่งอื่นๆ ทั้งหมดที่คุณต้องการ (เช่น คุณสมบัติการกำหนดค่า ฟิลเตอร์ ตัวแปร สคริปต์การคำนวณ และอาร์ติแฟคต์อื่นๆ) วิธีดำเนินการดังกล่าว ให้ใช้ การเอ็กซ์ปอร์ต LCM (หรืองาน เอ็กซ์ปอร์ต LCM ในเว็บอินเตอร์เฟซ Essbase)
สำรองข้อมูลตารางแฟคท์ โปรดดู การสำรองข้อมูลและการเรียกคืน Autonomous Database
ลบการกำหนดพาร์ติชันแบบรวมศูนย์จากลูกบาศก์ โดยทำตามขั้นตอนใน ย้ายพาร์ติชันแบบรวมศูนย์ออก
ในการเรียกคืนลูกบาศก์พาร์ติชันแบบรวมศูนย์ของคุณจากการสำรองข้อมูล
สร้างแอปพลิเคชันอีกครั้งโดยใช้ LcmImport: เรียกคืนไฟล์ลูกบาศก์ (หรืองาน อิมปอร์ต LCM ในเว็บอินเตอร์เฟซ Essbase)
หากจำเป็น ให้เรียกคืนตารางแฟคท์ใน Autonomous Data Warehouse
สร้างการเชื่อมต่ออีกครั้ง ไปยัง Autonomous Data Warehouse ขอแนะนำให้ใช้ชื่อการเชื่อมต่อใหม่เพื่อหลีกเลี่ยงไม่ให้เกิดข้อผิดพลาด
สร้างอีกครั้ง พาร์ติชันแบบรวมศูนย์