Stored Outline存储提纲介绍
第一篇:outline是什么? outline设计来提供稳定的执行计划,以消除执行环境或对象统计信息的改变造成的影响。这个特性叫做计划稳定性。其实outline就是一堆hint的集合。 查询优化器接收到sql后,在选择是否使用OUTLINE时的逻辑。 a.对SQL语句进行标准化去除
第一篇:outline是什么? outline设计来提供稳定的执行计划,以消除执行环境或对象统计信息的改变造成的影响。这个特性叫做计划稳定性。其实outline就是一堆hint的集合。 查询优化器接收到sql后,在选择是否使用OUTLINE时的逻辑。 a.对SQL语句进行标准化去除空白大小写差异 b.计算签名 c.对比数据字典,看是否已存在一样的签名 d.如果是,再进一步比较sql语句是否相同(避免hash冲突) e.如果SQL一样,就可以将这个outline的相关hint收入郎中,以影响执行计划的生成了。9i开始就可以用outline,但10g开始才可以从共享池的一个游标来手动创建outline。 要使用use_stored_outlines,必须开启use_stored_outlines参数 alter system set use_stored_outlines = test; 当一条SQL语句有sql profile又有outline时,查询优化器会有限选择outline。 何时使用: 每当调优一条特殊的SQL并且无法在应用程序里修改它时(比如,不能使用hint),就可以使用这项技术。但如果加了hint也不走一些执行计划,那用outline也木有用。 比如id列是varchar2(1)并且有索引,而sql用where to_number(id)=1,此时加了/*+index(t ind)*/也不走索引,用outline也无补于事。
第二篇:创建outline
1.自创创建outline ALTER [SESSION | SYSTEM] SET create_stored_outlines=TRUE|类别名; 例子:alter session set create_stored_outlines=fwy; --true模式的category是default 这个参数无法在参数文件指定,只能起库后再人工或触发器指定。
2.手动创建outline 2.1 基于文本 create or replace outline out_1 --for category test on select 3+8 from dual;
2.2.基于hash_value begin dbms_outln.create_outline( hash_value=>'1812086974', child_number =>0 -- category => 'test' ); end; /
第三篇:查询outline select * from dba_outlines where timestamp>sysdate-1/24;--过去一小时刚建的outline select * from dba_outlines where timestamp>sysdate-5/(24*60); --过去5分钟建的outline select hint from dba_outline_hints where name='OUTLINE_FROM_TEXT';--查询某个outline的hint集合
查看outline是否有被使用 1. 10gR2起,dbms_xplan函数看执行计划,会看到是否有使用Outline 2. 所有版本通行: execute dbms_outln.clear_used(name=> 'OUT_1'); --重置outline使用标记 select used from dba_outlines where name='OUT_1';--显示UNUSED 然后执行SQL select used from dba_outlines where name='OUT_1';--此时如果显示为used,则上述SQL有用到该OUTLINE了。
第四篇:更改OUTLINE --Rename outline alter outline SYS_OUTLINE_13090110433120101 rename to out2;
--更改单个outline的类别 alter outline out2 change category to default;
--更改多个outline类别,属于类别TEST的整体替换为类别default execute dbms_outln.update_by_cat(oldcat=>'TEST',newcat=>'DEFAULT');
--重建存储提纲 当你希望query optimizer根据新环境产生一个新的hint集合,可以使用它。比如改变了outline相关对象的访问结构时。 alter outline out_1 rebuild;
--query optimizer只考虑激活的outline,outline有两个条件符合才可以被激活 --第一,要处于enable状态。 创建时默认就是。如果不是可以通过以下语句做状态变换。 alter outline out_1 enable; alter outline out_1 disable; --第二,初始化参数use_stored_outlines在session级别或system级别激活。 true就是用default类别,false就是不用outline,或者某个类别名。 alter session set use_stored_outlines=true; alter system set use_stored_outlines=true; --这个参数一次只能激活一个类别,也就是跟sql profile一样,一个会话一次只能用一个类别。 十分奇怪的是,这个参数无法在pfile或者spfile中设置,只能实例系统后再设置。也可以借助触发器完成。
第五篇:移动outline --------------------------------------- vi exp.par userid="/ as sysdba" file=exp01.dmp log=exp_outline.log tables=(outln.ol$,outln.ol$hints,outln.ol$nodes) query="where ol_name ='FWY_3'" ---------------------------------------------------- exp parfile=exp.par ------------------------------vi imp.par userid="/ as sysdba" file=exp01.dmp log=imp_outline.log full=y ignore=y -----------------------------imp parfile=imp.par
--移动单个outline或者单个类别,在上述基础上加上以下语句 query="where ol_name ='OUT_1'" query="where category='TEST'" 比如,如果一个给定的 SQL语句的执行计划使用了一个你本想避免的索引扫描,那么你可以在测试系统中删除索引,在那里生成一个Outline,然后再将其转移到生产环境。
第六篇:编辑outline 想要编辑outline里面的hint,对数据字典中的公有outline用一些普通的SQL进行update是不行的,而对私有outline进行编辑是可行的。私有outline是存储在工作表中的,经过创建、编辑、测试后,我们可以将私有outline发布成公有outline。
1创建的两种方法 1.1. create or replace private outline out_3 on select * from dual; 1.2 create private outline p_out_1 from public out_1;
--10g后,默认工作表就是在system用户下的ol$,ol$hints,ol$nodes,还有默认的三个公共同义词指向它们。对于这三个表,在outln中也是有的,这才是作为公有的outline而存在的表。 如果用9i,就要手动创建工作表与公共同义词。 sqlplus '/as sysdba' alter session set current_schema=system; execute dbms_outln_edit.create_edit_tables;
create or replace public synonym ol$ for system.ol$;
create or replace public synonym ol$hints for system.ol$hints; create or replace public synonym ol$nodes for system. ol$nodes ;
grant select,insert,update,delete on system.ol$ to public; grant select,insert,update,delete on system.ol$hints to public; grant select,insert,update,delete on system.ol$nodes to public;
一旦私有outline创建完毕,就可以列出私有outline相关的Hint select hint#,hint_text from system.ol$hints where ol_name='OUT_4';
--然后用普通的sql语句可以更新它的hint --本来HINT#的1的hint_text是 INDEX(@"SEL$1" "T"@"SEL$1" ("T"."N")) --现在要变成走全表扫描 update ol$hints set hint_text='FULL(@SEL$1 T)' where hint#=1 and ol_name='P_OUTLINE_EDITING'; --为了确保这个outline在内存中的副本也同步进行了更改,执行如下 execute dbms_outln_edit.refresh_private_outline('OUT_1') --接着,激活并测试这个private outline. alter session set use_private_outlines =true; explain plan for select * from t where n=1970; select * from table(dbms_xplan.display(null,null,'basic +note)')); --如果对private outline满意,就可以使用下面这个sql将它发布成public outline. create public outline out_1 from private p_out_1;
第七篇 删除存储提纲 删除单个 drop outline out_1; 删除整类别 dbms_outln.drop_by_cat(cat=>'TEST'); 删除私有提纲 drop private outline out_1;
第八篇:OUTLINE互换 --将BEFORE与AFTER两个outline互换 UPDATE OUTLN.OL$HINTS SET OL_NAME=DECODE(OL_NAME,'AFTER','BEFORE','BEFORE','AFTER') WHERE OL_NAME IN ('AFTER','BEFORE');
exec dbms_outln.update_signatures; --更新签名
drop outline after;--更换完后,可以将不用的outline删除
第九篇:其他事项 在10gr1之前,outline是不能覆盖初始化参数,为了成功用outline,这几个初始化参数要与执行化境设置保持一致才可以噢。 optimizer_features_enable query_rewrite_enabled star_transformation_enabled
A用户创建的outline,B用户也可以用,不用授权。 OUTLINE在RAC环境下,每个实例都需要开启使用参数,才能用OUTLINE。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









インターネットを利用する際に「wapi」という言葉を目にしたことはあるかもしれませんが、「wapi」が何なのかよく分からないという方もいると思いますので、以下で詳しくご紹介します。 wapi とは: 回答: wapi は、無線 LAN の認証と機密性を確保するためのインフラストラクチャです。一般的にオフィスビルなどの近くでカバーされる赤外線やBluetoothなどの機能と似ています。基本的にこれらは小さな部門によって所有されているため、この機能の範囲はわずか数キロメートルです。 wapi の関連紹介: 1. Wapi は無線 LAN の伝送プロトコルです。 2. この技術により、狭帯域通信の問題を回避し、より良好な通信が可能になります。 3. 信号の送信に必要なコードは 1 つだけです

PlayerUnknown's Battlegrounds としても知られる Pubg は、2016 年の人気以来、多くのプレイヤーを魅了してきた非常に古典的なシューティング バトル ロイヤル ゲームです。最近win11システムがリリースされた後、多くのプレイヤーがwin11でpubgをプレイしたいと考えています。編集者に従ってwin11でpubgをプレイできるかどうかを確認してみましょう。 win11 で pubg をプレイできますか? 回答: Win11 で pubg をプレイできます。 1. win11の開始当初、win11ではtpmを有効にする必要があったため、多くのプレイヤーがpubgから追放されました。 2. しかし、プレイヤーのフィードバックに基づいて、Blue Hole はこの問題を解決し、win11 で pubg を正常にプレイできるようになりました。 3.居酒屋に出会ったら

このウェブサイトは3月7日、ファーウェイのデータストレージ製品ラインの社長である周岳峰博士が最近MWC2024カンファレンスに出席し、特にウォームデータ(WarmData)とコールドデータ(ColdData)用に設計された新世代のOceanStorArctic磁電ストレージソリューションをデモンストレーションしたと報じた。ファーウェイのデータストレージ製品ラインの社長である周岳峰氏は、一連の革新的なソリューションをリリースした 画像出典: このサイトに添付されているファーウェイの公式プレスリリースは次のとおりです: このソリューションのコストは磁気テープのコストより 20% 低く、そのコストは磁気テープのコストよりも 20% 低くなります。消費電力はハードディスクよりも90%低いです。外国のテクノロジーメディアのblocksandfilesによると、ファーウェイの広報担当者も磁気電子ストレージソリューションに関する情報を明らかにした:ファーウェイの磁気電子ディスク(MED)は磁気ストレージメディアの主要な革新である。初代ME

Python 関数の紹介: exec 関数の概要と例 はじめに: Python では、exec は、文字列またはファイルに格納されている Python コードを実行するために使用される組み込み関数です。 exec 関数はコードを動的に実行する方法を提供し、プログラムが実行時に必要に応じてコードを生成、変更、実行できるようにします。この記事では、exec 関数の使い方と実用的なコード例を紹介します。 exec 関数の使用方法: exec 関数の基本的な構文は次のとおりです。

マザーボード上の SPDIFOUT 接続線の順序 最近、ワイヤの配線順序に関する問題に遭遇しました。ネットで調べたところ、1、2、4がアウト、+5V、グラウンドに相当するという情報もあれば、1、2、4がアウト、グラウンド、+5Vに相当するという情報もありました。最善の方法は、マザーボードのマニュアルを確認することです。マニュアルが見つからない場合は、マルチメーターを使用して測定できます。最初にアースを見つけてから、残りの配線の順序を決定します。マザーボードの VDG 配線の接続方法 マザーボードの VDG 配線を接続するときは、VGA ケーブルの一端をモニターの VGA インターフェイスに差し込み、もう一端をコンピューターのグラフィックス カードの VGA インターフェイスに差し込む必要があります。マザーボードの VGA ポートに差し込まないよう注意してください。接続すると、次のことが可能になります

i5 は Intel が所有するプロセッサのシリーズで、第 11 世代 i5 にはさまざまなバージョンがあり、世代ごとに性能が異なります。したがって、i5 プロセッサーが win11 をインストールできるかどうかは、プロセッサーの世代によって異なりますので、エディターに従って個別に学習しましょう。 i5 プロセッサーは win11 にインストールできますか: 回答: i5 プロセッサーは win11 にインストールできます。 1. 第 8 世代以降の i51、第 8 世代以降の i5 プロセッサは、Microsoft の最小構成要件を満たすことができます。 2. したがって、Microsoft Web サイトにアクセスして「Win11 インストール アシスタント」をダウンロードするだけで済みます。 3. ダウンロードが完了したら、インストール アシスタントを実行し、プロンプトに従って Win11 をインストールします。 2. i51 8世代以前と8世代以降

最新の win11 にアップデートした後、システムのサウンドが少し変わったように感じますが、調整方法がわからないという人が多いので、このサイトでは、最新の win11 サウンド調整方法を紹介します。操作は難しくなく、選択肢も豊富ですので、ぜひダウンロードして試してみてください。最新のコンピュータ システム Windows 11 のサウンドを調整する方法 1. まず、デスクトップの右下隅にあるサウンド アイコンを右クリックし、「再生設定」を選択します。 2. 次に設定を入力し、再生バーの「スピーカー」をクリックします。 3. 次に、右下の「プロパティ」をクリックします。 4. プロパティの「拡張」オプションバーをクリックします。 5. この時、「すべての効果音を無効にする」の前にある√にチェックが入っている場合は、チェックを外します。 6. その後、以下の効果音を選択して設定し、クリックします。

PyCharm は、開発効率を大幅に向上させる豊富な機能とツールを備えた強力な Python 統合開発環境です。その中でも置換機能は開発プロセスで頻繁に使用される機能の 1 つであり、開発者がコードを迅速に修正し、コードの品質を向上させるのに役立ちます。この記事では、初心者がこの関数をよりよく習得して使用できるように、特定のコード例と組み合わせて PyCharm の置換関数を詳細に紹介します。置換関数の概要 PyCharm の置換関数は、開発者がコード内の指定されたテキストを迅速に置換するのに役立ちます
