תחזוקה ופתרון בעיות של קוביית מחיצה מאוחדת

השתמש בהנחיות הבאות כדי לתחזק או לפתור בעיות בקוביות של Essbase עם מחיצות מאוחדות.

נושא זה מניח ש-צור מחיצה מאוחדת ובדקת את המידע המפורט בנושאים הקודמים.

מדל ובחן קוביות מחיצות מאוחדות

בעת תכנון קוביית מחיצה מאוחדת, פעל לפי הנחיות הבדיקה האלו אם היצירה נמשכת זמן רב מדי. הנחיות אלו יכולות להיות שימושיות לנקיטת גישה בשלבים לפתרון בעיות או לניטור ביצועים.

  • התחל את פרויקט המחיצה המאוחדת בסביבת בדיקות.

  • התחל עם מודלי קובייה שכוללים את המאפיינים הבאים:

    • אין רמות רבות

    • אין איברים משותפים או תכונות רבות

  1. בעת יצירת מחיצה מאוחדת, תזמן פעולות לא מקוונות כאשר לא ניתן לבצע שאילתות כנגד המופע.

  2. נתק בהדרגה מושבי עבודת משתמש פעילים של Essbase, באמצעות פקודות חסימה של MaxL שנה יישום ו/או חסום חיבורים (למניעת פעילות משתמש חדש), ולאחר מכן שנה מערכת התנתקות ממושב עבודה ו/או בקשה להפסיק (אם אתה צריך להפסיק מושבי עבודה פעילים שאין צורך להשלים). שים לב שMaxL אינו יכול להפסיק בקשות שעשויות לרוץ ב-Autonomous Data Warehouse. אם אתה חוסם פקודות ביישום, זכור לאפשר מחדש פקודות לאחר יצירת מחיצה מאוחדת.

  3. בצע כוונון של זמן קצוב:
    • HTTPS proxy ברשת לקוח - כוונן את ערכי הזמן הקצוב של רשת הלקוח
    • מאזן עומסים - הגדל את הזמן הקצוב של LoadBalance timeout ל-1260 שניות (21 דקות)
    • מגדיל את ערכי הזמן הקצוב של HTTPD ל-21 דקות
      /etc/httpd/conf.d/00_base.conf:ProxyTimeout 1260
      /etc/httpd/conf.d/00_base.conf:Timeout 1260
    • זמן קצוב של APS/JAPI:
      • בדף קונסולה בממשק האינטרנט של Essbase, בחר תצורה וציין את הערך של olap.server.netSocketTimeOut. ערך של 200 מ"ש מציין שכל ספירה של 5 עבור מאפיינים אלה מעניקה שנייה אחת לזמן המתנה.
      • כדי להגדיר את מגבלת הזמן הקצוב של APS/JAPI ל-30 דקות, הגדר את olap.server.netRetryCount ל-9000.
  4. יצירה המחיצה המאוחדת.
  5. בטל את התאמות הזמן הקצוב בשלב 3.
  6. אפשר למשתמשים לחזור למערכת באמצעות שנה יישום אפשר פקודות ו/או חיבורים, אם הם נחסמו בעבר.
  7. בדוחות בקובייה של Essbase עם מחיצה מאוחדת, כוונן את QRYGOVEXECTIME כך שיהיה גדול יותר מהזמן הצפוי לביצוע שאילתות כנגד מחיצות מאוחדות. שים לב ש-QRYGOVEXECTIME אינו יכול להפסיק בקשות שעשויות לרוץ ב-Autonomous Data Warehouse.
  8. בסיום הבדיקות והכוונון בסביבת הפיתוח, השתמש בשלבים 1 עד 7 לעיל כדי להוסיף את המחיצה המאוחדת לסביבת ייצור.

הערה :

אם תראה שגיאה כגון "שמירת המתווה נכשלה" בעת יצירת המחיצה המאוחדת, המתן לסיום מושבי העבודה ולאחר מכן רענן את הדפדפן. אם המחיצה המאוחדת נוצרה, אמת אותה ב-SQL Developer. אם היא אומתה ב-SQL Developer, המחיצה המאוחדת מוכנה לשימוש. אם היא לא אומתה ב-SQL Developer, יש לתקן את המודל ולכוונן את הזמן הקצוב כמתואר בשלב 3 לעיל.

אמצעי זהירות של מטאדטה בשביל קוביות מחיצות מאוחדות

כאשר ל-Essbase יש מחיצה מאוחדת, שים לב בעת עריכת מתאר הקובייה. אם אתה מוסיף או משנה שם איברים, ודא ששינויי המטאדטה מיוצגים גם בטבלת העובדות ב-Autonomous Data Warehouse.

אם מתווה Essbase לא מסונכרן עם טבלת העובדות ב-Autonomous Data Warehouse, המחיצה המאוחדת תהפוך לבלתי תקפה או לא תפעל כראוי. כדי לתקן את זה, תצטרך להסיר את המחיצה המאוחדת, לבצע שינויים במתווה ובטבלת העובדות, ולאחר מכן ליצור מחדש את המחיצה המאוחדת.

אם מחיצה מאוחדת הופכת ללא תקפה, אתה עלול להיתקל בשגיאה שמתחילה ב-Essbase Error(1040235): אזהרה מרחוק ממחיצה מאוחדת.

הסוגים הבאים של שינויי מתווה Essbase יגרמו למחיצה מאוחדת להפוך ללא תקפה:

  • הוספה, שינוי שמות או הסרה של ממדים

  • הוספה, שינוי שם או הסרה של איברים מאוחסנים בממד הציר

  • שינוי כל איבר ממאוחסן לדינמי

לסוגים אחרים של שינויי מתאר של Essbase שלא צוינו למעלה (לדוגמה, הוספה או שינוי שם של איבר שאינו ממד ציר), עליך לבצע את השינוי המתאים בשורת הנתונים המושפעות בטבלת העובדות. אחרת, ייתכן שהמחיצה המאוחדת לא תפעל כראוי.

אם אתה יודע מראש שמטאדטה של Essbase ישתנו, עדיף להסיר תחילה את המחיצה המאוחדת, לבצע את השינויים במתווה, לעדכן את טבלת העובדות ולאחר מכן ליצור מחדש את המחיצה המאוחדת.

עם זאת, אם המטאדטה של Essbase השתנו וגרמו למחיצה מאוחדת להיות לא תקפה, בצע את הפעולה הבאה:

  1. הסר את המחיצה המאוחדת ואת החיבור המשויך אליה (אם לא נעשה בו שימוש אחר), כמתואר ב-הסר מחיצה מאוחדת.

    מסכמת המשתמש של מחיצה מאוחדת במחסן נתונים אוטונומי, מחק את כל הטבלאות שנוצרו על-ידי Essbase ואובייקטים אחרים שהסרתם עם המחיצה המאוחדת נכשלה.

  2. ודא ששינויי המתווה הושלמו בקוביית Essbase.

  3. צור את טבלת העובדות שוב. ראה צור את טבלת העובדות.

  4. צור מחדש את החיבור אל Autonomous Data Warehouse. זה עשוי להיות חיבור גלובלי (תחת סמל המקורות הראשי בממשק האינטרנט של Essbase), או שהוא עשוי להיות במקורות שהוגדרו רק בשביל היישום. בצע את ההוראות ב-צור חיבור למחיצות מאוחדות.

  5. צור מחדש את המחיצה המאוחדת, כמתואר ב-צור מחיצה מאוחדת.

מה לעשות אם פרטי החיבור למסד הנתונים השתנו

אם פרטי החיבור של Autonomous Data Warehouse שבהם Essbase משתמש בשביל מחיצה מאוחדת השתנו, יהיה עליך לשחרר וליצור מחדש את ה-מחיצה מאוחדת, ולמחוק אובייקטים וטבלאות מטאדטה משויכים מסכמת מסד הנתונים.

יהיה עליך להסיר וליצור מחדש את המחיצה המאוחדת אם אחד מהאירועים הבאים מתרחש לאחר יצירת המחיצה המאוחדת:

אם אתה יודע מראש שפרטי החיבור ישתנו, עדיף להסיר את המחיצה המאוחדת לפני השינוי, וליצור אותה שוב לאחר מכן. עם זאת, אם החיבור השתנה וגרם להמחיצה המאוחדת להיות לא תקפה, בצע את הצעדים הבאים.

שחרר את המחיצה המאוחדת

הסר את המחיצה המאוחדת ואת החיבור המשויך אליה (אם לא נעשה בו שימוש אחר), כמתואר ב-הסר מחיצה מאוחדת.

מחק אובייקטים וטבלאות מטאדטה הקשורים למחיצה מאוחדת

מסכמת המשתמש של מחיצה מאוחדת במחסן נתונים אוטונומי, שחרר את כל הטבלאות שנוצרו על-ידי Essbase ואובייקטים אחרים שהסרתם עם המחיצה המאוחדת נכשלה.

  1. ssh למארח Essbase Server בתור משתמש opc.

                      ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                   
  2. שנה למשתמש oracle (ועבור לספריית הבית שלו).

                      sudo su - oracle
                   
  3. נווט אל ספריית היישומים.

                      cd /u01/data/essbase/app
                   
  4. באמצעות יישום Essbase ושם הקובייה, זהה את הקידומת הייחודית המשויכת לאובייקטי המחיצה המאוחדת ולמטאדטה שלך.

    1. קבל את שם היישום (AppName). השם הוא רגיש לרישיות, אז קלוט את הרישיות המדויקות. בדוגמה זו, AppName = Sample.

      ls
      Sample
    2. ספור את מספר התווים (appx) בשם היישום.

      דוגמה: appx = 6.

    3. נווט אל ספריית הקובייה וקבל את שם הקובייה (DbName). השם הוא רגיש לרישיות, אז קלוט את הרישיות המדויקות. בדוגמה זו, DbName = Basic.

      cd /Sample
      ls
      Basic
    4. ספור את מספר התווים (dby) בשם הקובייה.

      דוגמה: dby = 5.

    5. בנה את הקידומת בתור:

      ESSAV_<appx><AppName>_<dby><DbName>_

      דוגמה:

      <Prefix> = ESSAV_6Sample_5Basic_
  5. באמצעות SQL Developer או כלי אחר, התחבר אל Oracle Database כמשתמש של סכמת מסד הנתונים שאליה מחוברת המחיצה המאוחדת.

  6. הרץ משפט SELECT כדי ליצור רשימה של אובייקטים המשויכים ליישום המחיצה המאוחדת שלך. אלו החפצים שתנקה בשלב הבא.

    פורמט משפט SELECT הוא:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like '<Prefix>%';

    דוגמה:

    SELECT * FROM user_OBJECTS WHERE OBJECT_NAME like 'ESSAV_6Sample_5Basic_%';
  7. הרץהליך PL/SQL מאוחסן שמנקה את כל התצוגות האנליטיות, החבילות, ההיררכיות, הטבלאות ואובייקטים אחרים המשויכים לקידומת.

    דוגמה

    החלף את ESSAV_6Sample_5Basic_ בקידומת שלך.

    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;
    /
    
  8. שחרר ועדכן טבלאות הקשורות למטאדטה. ראשית, עליך לקבל ערכים ל-ESSBASE_INSTANCE_UNIQUE_ID ו-OTL_ID.

    1. ssh למארח Essbase Server בתור משתמש opc.

                              ssh -i MPOCI_KEY.pem opc@100.xxx.xxx.xxx
                           
    2. שנה למשתמש oracle (ועבור לספריית הבית שלו).

                              sudo su - oracle
                           
    3. חפש את תהליך Essbase Agent.

                              ps -ef | grep ESSS | grep -v "grep"
                           

      הפקודה לעיל צריכה להחזיר רישום תהליך שמתחיל ב-oracle ואחריו שני מזהי תהליך; לדוגמה,

      oracle   10769  19563 ...

      שקול את מזהה התהליך הראשון כ-<PID>, שבו תשתמש בשלב הבא.

    4. השתמש בפקודה מחרוזות כדי לקלוט את הערך של 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
    5. באמצעות SQL Developer או כלי אחר, התחבר אל Oracle Database כמשתמש של סכמת מסד הנתונים שאליה מחוברת המחיצה המאוחדת.

    6. הרץ משפט 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';
    7. השאילתה שלמעלה צריכה להחזיר את הערך של OTL_ID; לדוגמה,

      62
    8. הפעל פרוצדורת 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;
      /
      
    9. הרץ משפט 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;

צור מחדש את החיבור ואת המחיצה המאוחדת

  1. צור מחדש את החיבור אל Autonomous Data Warehouse. זה עשוי להיות חיבור גלובלי (תחת סמל המקורות הראשי בממשק האינטרנט של Essbase), או שהוא עשוי להיות במקורות שהוגדרו רק בשביל היישום. בצע את ההוראות ב-חיבור. הקפד לבדוק ולשמור את החיבור.

  2. צור מחדש את המחיצה המאוחדת, כמתואר ב-צור מחיצה מאוחדת.

  3. אם אתה ממשיך לראות שגיאת חיבור כגון Essbase Error(1350012): ניסיון להתחבר ל-OCI נכשל, בדוק את https://support.oracle.com/rs?type=doc&id=2925030.1.

גבה ושחזר יישום מחיצה מאוחדת

מחיצות מאוחדות אינן מועברות עם יישומי Essbase. כשאתה מתכונן להעביר את היישום והקובייה שלך לשרת אחר או לעבור לגרסת Essbase אחרת, עליך למחוק את המחיצה המאוחדת וליצור אותה מחדש בסביבה החדשה.

כדי לגבות את קוביית המחיצה המאוחדת,

  1. גבה את היישום, ללא הנתונים, אך כולל את כל שאר הדברים שלהם אתה עשוי להזדקק (כגון מאפייני תצורה, מסננים, משתנים, תסריטי חישוב וארטיפקטים אחרים). לשם כך, השתמש ב-יצוא LCM (או בעבודה ייצא LCM בממשק האינטרנט של Essbase).

  2. גבה את טבלת העובדות. ראה גיבוי ושחזור מסד נתונים אוטונומי.

  3. מחק את הגדרת המחיצה המאוחדת מהקובייה, תוך ביצוע השלבים ב-הסר מחיצה מאוחדת.

כדי לשחזר את קוביית המחיצה המאוחדת שלך מהגיבוי.

  1. צור מחדש את היישום, באמצעות LcmImport: שחזור קובצי קובייה (או העבודה ייבא LCM בממשק האינטרנט של Essbase).

  2. במידת הצורך, שחזר את טבלת העובדות בAutonomous Data Warehouse.

  3. צור את החיבור מחדש אל Autonomous Data Warehouse. מומלץ להשתמש בשם חיבור חדש כדי להימנע מהיתקלות בשגיאות.

  4. צור מחדש את המחיצה המאוחדת.