【analyze】使用PL/SQL 方法完成多使用者資料分析
曾經在下面文章中介紹過使用SQL指令碼方法完成資料分析的內容。
《【實驗】【analyze】分析特定使用者的表和索引》
http://space.itpub.net/519536/viewspace-613551
這篇文章我來將這些分析動作都封裝在一個PL/SQL塊中,以便達到指令碼的簡潔和易用的目的。
1.編寫的指令碼內容如下
DECLARE
v_sqlstring VARCHAR2 (500);
BEGIN
FOR rec IN (SELECT owner, table_name
FROM all_tables
WHERE owner IN ('SECOOLER', 'SEC', 'HOU'))
LOOP
BEGIN
v_sqlstring :=
'begin dbms_stats.gather_table_stats ( wnname => '''
|| rec.owner
|| ''', tabname => '''
|| rec.table_name
|| ''',estimate_percent => null, '
|| 'method_opt => ''FOR ALL COLUMNS SIZE 254'', '
|| 'degree => 6, cascade => TRUE); end;';
DBMS_OUTPUT.put_line (v_sqlstring);
EXECUTE IMMEDIATE v_sqlstring;
END;
END LOOP;
END;
/
【注意】在構造分析語句的時候,注意要以“begin”開頭。
2.指令碼執行效果
sys@ora10g> DECLARE
2 v_sqlstring VARCHAR2 (500);
3 BEGIN
4 FOR rec IN (SELECT owner, table_name
5 FROM all_tables
6 WHERE owner IN ('SECOOLER', 'SEC', 'HOU'))
7 LOOP
8 BEGIN
9 v_sqlstring :=
10 'begin dbms_stats.gather_table_stats ( wnname => '''
11 || rec.owner
12 || ''', tabname => '''
13 || rec.table_name
14 || ''',estimate_percent => null, '
15 || 'method_opt => ''FOR ALL COLUMNS SIZE 254'', '
16 || 'degree => 6, cascade => TRUE); end;';
17 DBMS_OUTPUT.put_line (v_sqlstring);
18
19 EXECUTE IMMEDIATE v_sqlstring;
20 END;
21 END LOOP;
22 END;
23 /
begin dbms_stats.gather_table_stats ( wnname => 'SECOOLER', tabname => 'T',estimate_percent => null, method_opt => 'FOR ALL COLUMNS SIZE 254', degree => 6, cascade => TRUE); end;
…… 省略 ……
begin dbms_stats.gather_table_stats ( wnname => 'SEC', tabname => 'T_SEC',estimate_percent => null, method_opt => 'FOR ALL COLUMNS SIZE 254', degree => 6, cascade => TRUE); end;
…… 省略 ……
begin dbms_stats.gather_table_stats ( wnname => 'HOU', tabname => 'T_HOU',estimate_percent => null, method_opt => 'FOR ALL COLUMNS SIZE 254', degree => 6, cascade => TRUE); end;
…… 省略 ……
PL/SQL procedure successfully completed.
3.小結
這個分析指令碼是可以隨心所欲去定製的。例如,調整需要分析的使用者名稱、調整dbms_stats.gather_table_stats分析指令碼的引數亦或記錄更多有意義日誌資訊等。
維護指令碼最大的好處就是隨需而變,當遇到一個較複雜的需求的時候,可以考慮編寫一段得心應手的指令碼來提高效率。
自動化,簡潔,高可控性都是我們追求的目標。
Good luck.
secooler
10.03.06
-- The End --
《【實驗】【analyze】分析特定使用者的表和索引》
http://space.itpub.net/519536/viewspace-613551
這篇文章我來將這些分析動作都封裝在一個PL/SQL塊中,以便達到指令碼的簡潔和易用的目的。
1.編寫的指令碼內容如下
DECLARE
v_sqlstring VARCHAR2 (500);
BEGIN
FOR rec IN (SELECT owner, table_name
FROM all_tables
WHERE owner IN ('SECOOLER', 'SEC', 'HOU'))
LOOP
BEGIN
v_sqlstring :=
'begin dbms_stats.gather_table_stats ( wnname => '''
|| rec.owner
|| ''', tabname => '''
|| rec.table_name
|| ''',estimate_percent => null, '
|| 'method_opt => ''FOR ALL COLUMNS SIZE 254'', '
|| 'degree => 6, cascade => TRUE); end;';
DBMS_OUTPUT.put_line (v_sqlstring);
EXECUTE IMMEDIATE v_sqlstring;
END;
END LOOP;
END;
/
【注意】在構造分析語句的時候,注意要以“begin”開頭。
2.指令碼執行效果
sys@ora10g> DECLARE
2 v_sqlstring VARCHAR2 (500);
3 BEGIN
4 FOR rec IN (SELECT owner, table_name
5 FROM all_tables
6 WHERE owner IN ('SECOOLER', 'SEC', 'HOU'))
7 LOOP
8 BEGIN
9 v_sqlstring :=
10 'begin dbms_stats.gather_table_stats ( wnname => '''
11 || rec.owner
12 || ''', tabname => '''
13 || rec.table_name
14 || ''',estimate_percent => null, '
15 || 'method_opt => ''FOR ALL COLUMNS SIZE 254'', '
16 || 'degree => 6, cascade => TRUE); end;';
17 DBMS_OUTPUT.put_line (v_sqlstring);
18
19 EXECUTE IMMEDIATE v_sqlstring;
20 END;
21 END LOOP;
22 END;
23 /
begin dbms_stats.gather_table_stats ( wnname => 'SECOOLER', tabname => 'T',estimate_percent => null, method_opt => 'FOR ALL COLUMNS SIZE 254', degree => 6, cascade => TRUE); end;
…… 省略 ……
begin dbms_stats.gather_table_stats ( wnname => 'SEC', tabname => 'T_SEC',estimate_percent => null, method_opt => 'FOR ALL COLUMNS SIZE 254', degree => 6, cascade => TRUE); end;
…… 省略 ……
begin dbms_stats.gather_table_stats ( wnname => 'HOU', tabname => 'T_HOU',estimate_percent => null, method_opt => 'FOR ALL COLUMNS SIZE 254', degree => 6, cascade => TRUE); end;
…… 省略 ……
PL/SQL procedure successfully completed.
3.小結
這個分析指令碼是可以隨心所欲去定製的。例如,調整需要分析的使用者名稱、調整dbms_stats.gather_table_stats分析指令碼的引數亦或記錄更多有意義日誌資訊等。
維護指令碼最大的好處就是隨需而變,當遇到一個較複雜的需求的時候,可以考慮編寫一段得心應手的指令碼來提高效率。
自動化,簡潔,高可控性都是我們追求的目標。
Good luck.
secooler
10.03.06
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-628807/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-使用者定義的PL/SQL子型別SQL資料型別
- 使用PL/Scope分析PL/SQL程式碼SQL
- 資料分析方法——使用者群組分析
- 【Script】使用PL/SQL快速清理當前使用者下所有資料庫物件SQL資料庫物件
- PL/SQL使用匿名塊處理資料SQL
- PL/SQL 10 管理使用者子程式SQL
- 9*9乘法口決pl/sql的多種方法實現(pl/sql實現)SQL
- 【實驗】【analyze】分析特定使用者的表和索引索引
- Analyze 命令的使用方法
- PL/SQL開發中動態SQL的使用方法SQL
- 使用DBMS_PROFILER進行PL/SQL效能分析SQL
- PL/SQl Developer使用SQLDeveloper
- PL/SQL Developer 使用SQLDeveloper
- PL/SQL相關的資料字典SQL
- PL/SQL複合資料型別SQL資料型別
- Oracle 11g PL/SQL 使用者自定義 ExceptionOracleSQLException
- pl/sql--動態SQL常用方法SQL
- SQL SERVER 資料庫遷移孤立使用者的解決方法SQLServer資料庫
- SQL Server資料庫建立新使用者及關聯資料庫的方法教程SQLServer資料庫
- pl/sql developer使用技巧SQLDeveloper
- PL/SQL 中使用DDLSQL
- AnalySDK使用者資料分析使用指南
- 【PL/SQL】向表中插入連續數字之PL/SQL方法SQL
- 使用instantclient和PL/SQL連線oracle遠端資料庫clientSQLOracle資料庫
- PL/SQL精明的呼叫棧分析SQL
- oracle dbms_profiles分析pl/sqlOracleSQL
- ebs系統 客戶端使用 pl/sql developer 無法以sys使用者登入解決方法客戶端SQLDeveloper
- 【PL/SQL】使用變數傳遞方法生成表更名的SQL語句SQL變數
- 【自動化】使用PL/SQL輔助完成表空間的分類調整SQL
- Oracl資料庫+PL/SQL安裝與配置資料庫SQL
- 今天修復資料寫了個pl/sqlSQL
- 使用者畫像資料建模方法
- 設定PL/SQL Developer記住使用者名稱密碼SQLDeveloper密碼
- 【IMPDP】使用IMPDP自動建立使用者並完成資料的匯入
- App資料分析之App使用者留存率分析APP
- 使用者使用大資料的10個方法大資料
- 使用SQL Server過濾資料的方法SQLServer
- pl/sql developer將excel資料匯入到資料庫中SQLDeveloperExcel資料庫