2017年1月 9日 (月)

CDBとPDBの間で迷子になりそう PART3 - SQL*PlusのAutotrace編

今回迷子になったのは、昔からあるSQL*PlusのAutotraceで.

Autotraceの使い方は、$ORACLE_HOME/sqlplus/admin/plustrce.sqlをSYSユーザーで実行し、PLUSTRACEロール作成されたら必要なユーザーへ該当ロールを付与。
あとは、SQL*Plusでautotraceを有効にする。

これだけです。

が、

マルチテナント(シングルテナント含む)化した途端に、迷子になりそうな場面に出会います!
(これにハマったことのあるかたは、#ローカルロール! ってハッシュタグでtw...しなくてもいいですw)

マルチテナントでは、共通ユーザー、共通ロール、ローカルユーザー、ローカルロールという2つのタイプのユーザーとロールが登場しました。
CDB$ROOT/各PDBのディクショナリービュー同様、頭では理解したつもりでも指が勝手タイプして迷子になっちゃいうこともあるw (実はOracleさんも?。。。だったりしてね。

余談はこれぐらいにして、とにかく試して見ましょう。

バージョンは以下のとおり

SYS@orcl12c> select * from v$version;

BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0
PL/SQL Release 12.1.0.2.0 - Production 0
CORE 12.1.0.2.0 Production 0
TNS for Linux: Version 12.1.0.2.0 - Production 0
NLSRTL Version 12.1.0.2.0 - Production 0

マルチテナントにしてあります。(シングルテナントでも同じですが)

SYS@orcl12c> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBORCL12C READ WRITE NO
4 PDBORCL12CLONED READ WRITE NO


今日の主役、共通ユーザを作成します。
共通ユーザーとするためには、c##(デフォルト)という接頭子をユーザ名に付加する必要があります。(なれるまで辛いw)

SYS@orcl12c> create user c##hoge identified by hoge
2 default tablespace users
3 temporary tablespace temp
4 quota unlimited on users
5 container=all;

ユーザーが作成されました。


CDB$ROOT含む全PDBにC##HOGEユーザが作成されました。
(実はシステム定義の管理ユーザーは共通ユーザー扱になっていることも忘れちゃいけないんですよね。おそらく同じというか特徴はあるはず)

SYS@orcl12c> select con_id,username,common from containers(dba_users) where username in ('SYS','C##HOGE')

CON_ID USERNAME COM
---------- ------------------------------ ---
1 SYS YES
1 C##HOGE YES
4 SYS YES
4 C##HOGE YES
3 SYS YES
3 C##HOGE YES

※さりげなく、PDB CONTAINER句(赤字部分)を使ってますが、もともとそれで遊びたかっただけなんです。


今後のお遊び向けにいくつかのシステム権限の付与...

SYS@orcl12c> grant create session ,resource to c##hoge container=all;

権限付与が成功しました。

SYS@orcl12c> grant create table, create view to c##hoge container=all;

権限付与が成功しました。

SYS@orcl12c> grant create synonym to c##hoge container=all;

権限付与が成功しました。


共通ユーザーでもSQL*Plusのautotrace使いたいな〜と。
(最近はアダプティブな実行計画の影響で影が薄いAutotraceやExplain planですが、とりあえず見たい時や、実行統計を軽く見たいときには便利なんで)

と、思ったとことから、迷子になりまして、、はいw

続きを読む "CDBとPDBの間で迷子になりそう PART3 - SQL*PlusのAutotrace編"

| | コメント (0) | トラックバック (0)

2016年12月30日 (金)

昔、Mac OSがやってようなことを... VirtualBox の GuestOS起動スプラッシュ

こんなスプラッシュ表示するようにしていたのかVirtualBox :)

https://www.virtualbox.org

20161230_194848


ほんとに、ほんとうの2016年最後のエントリー。

良いお年をお迎え下さい。

http://discus-hamburg.cocolog-nifty.com/mac_de_oracle/2011/01/post-77fa.html

| | コメント (0) | トラックバック (0)

2016年12月24日 (土)

わすれられない言葉 - Unforgettable word

Jonathan LewisがOracle ACEDを辞されたというニュースはショックだった。
So Long ACED - Oracle Scratchpad / Jonathan Lewis

Oracle ACEDだけでなく、Oracle ACE全体で同様の手続きが必要になったということについて、日本在住のOracle ACEには最近、しかも一部の方のみに連絡されたのみという不手際が影響して混乱している状況となっている。2016/12/24現在


Jonathan LewisはOracle ACEDではなくても、ワクワクする記事を書いてくれると思います。


そして、

彼のサインに添えられた、忘れられない一言。

Img_3179_1









追伸

私がこのような壇上に上がるようになれたのも、ユーザーグループのみんな、ユーザーグループイベントを盛り上げてくれるみんな、そして、Oracle ACEに推薦してくれた友人たちのおかげです。 

今年一年、ありがとうございました。

続きを読む "わすれられない言葉 - Unforgettable word"

| | コメント (0) | トラックバック (0)

2016年12月17日 (土)

スタースキーマを扱う実行計画の特徴

JPOUG Advent Calendar 2016の17日目のエントリです。
昨日は、id:kenken08さんのMySQLのsql_modeにあるORACLEとは - kenken0807_DBメモでした。

第三の柴田さんのネタを見て、急遽内容を変更しました。:)
SQLチューニングと対戦格闘ゲームの類似性について語る。- JPOUG Advent Calendar 2016 Day 15 - - ねら~ITエンジニア雑記


DWH系のスタースキーマを扱う実行計画の特徴を簡単にまとめておきたいと思います。(個人的には、in-memory aggregationが今年のハイライトだったのでw)

※サンプルスキーマ:SHスキーマを利用しています。
Installing Sample Schemas

まず、ハッシュ結合とBloom Filterを利用した実行計画です。面倒な準備もなく、癖も少ないので力技でなんとかする系ではよく見かける実行計画です。
Right-Deep Join + Bloom Filter
Right-Deep Joinが可能なのはHash Joinのみです。 意図的に行う場合は、LEADING/USE_HASH/SWAP_JOIN_INPUTSを利用します。
Right-Deep Join Trees and Star Schema Queries
津島博士のパフォーマンス講座 - 第46回 パーティション・プルーニングとハッシュ結合について

スタースキーマでない結合や、NLJではLeft-Deep Joinとなるのが一般的なので見慣れない実行計画だと思う方もいると思いますが、巨大なファクト表よりサイズの小さいディメンジョン表が常にハッシュ結合のビルド表(外部表)になるように結合順序が入れ替えられています。

ハッシュ結合の実行計画としては理にかなっているのですが、超巨大なファクト表との結合がある場合、Exadataをもってしても倒すことができない敵に出会うこともありますw
弱点といえば弱点ですが、方式上難しいところでもあります。
パラレル度を増加させたとしても太刀打ちできないケースもね。。。。とほほ。

Execution Plan
----------------------------------------------------------
Plan hash value: 2503647845

------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1546 | 137K| 3879 (1)| 00:00:01 | | | | | |
| 1 | PX COORDINATOR | | | | | | | | | | |
| 2 | PX SEND QC (ORDER) | :TQ10003 | 1546 | 137K| 3879 (1)| 00:00:01 | | | Q1,03 | P->S | QC (ORDER) |
| 3 | SORT GROUP BY | | 1546 | 137K| 3879 (1)| 00:00:01 | | | Q1,03 | PCWP | |
| 4 | PX RECEIVE | | 1546 | 137K| 3879 (1)| 00:00:01 | | | Q1,03 | PCWP | |
| 5 | PX SEND RANGE | :TQ10002 | 1546 | 137K| 3879 (1)| 00:00:01 | | | Q1,02 | P->P | RANGE |
| 6 | HASH GROUP BY | | 1546 | 137K| 3879 (1)| 00:00:01 | | | Q1,02 | PCWP | |
|* 7 | HASH JOIN | | 580K| 50M| 3875 (1)| 00:00:01 | | | Q1,02 | PCWP | |
| 8 | PX RECEIVE | | 23 | 621 | 2 (0)| 00:00:01 | | | Q1,02 | PCWP | |
| 9 | PX SEND BROADCAST | :TQ10000 | 23 | 621 | 2 (0)| 00:00:01 | | | Q1,00 | P->P | BROADCAST |
| 10 | PX BLOCK ITERATOR | | 23 | 621 | 2 (0)| 00:00:01 | | | Q1,00 | PCWC | |
| 11 | TABLE ACCESS INMEMORY FULL | COUNTRIES | 23 | 621 | 2 (0)| 00:00:01 | | | Q1,00 | PCWP | |
|* 12 | HASH JOIN | | 580K| 35M| 3872 (1)| 00:00:01 | | | Q1,02 | PCWP | |
| 13 | PX RECEIVE | | 55500 | 541K| 8 (13)| 00:00:01 | | | Q1,02 | PCWP | |
| 14 | PX SEND BROADCAST | :TQ10001 | 55500 | 541K| 8 (13)| 00:00:01 | | | Q1,01 | P->P | BROADCAST |
| 15 | PX BLOCK ITERATOR | | 55500 | 541K| 8 (13)| 00:00:01 | | | Q1,01 | PCWC | |
| 16 | TABLE ACCESS INMEMORY FULL| CUSTOMERS | 55500 | 541K| 8 (13)| 00:00:01 | | | Q1,01 | PCWP | |
|* 17 | HASH JOIN | | 580K| 29M| 3864 (1)| 00:00:01 | | | Q1,02 | PCWP | |
|* 18 | TABLE ACCESS INMEMORY FULL | CHANNELS | 2 | 42 | 2 (0)| 00:00:01 | | | Q1,02 | PCWP | |
|* 19 | HASH JOIN | | 1161K| 36M| 3862 (1)| 00:00:01 | | | Q1,02 | PCWP | |
| 20 | PART JOIN FILTER CREATE | :BF0000 | 1845 | 22140 | 2 (0)| 00:00:01 | | | Q1,02 | PCWP | |
|* 21 | TABLE ACCESS INMEMORY FULL| TIMES | 1845 | 22140 | 2 (0)| 00:00:01 | | | Q1,02 | PCWP | |
| 22 | PX BLOCK ITERATOR | | 3673K| 73M| 3857 (1)| 00:00:01 |:BF0000|:BF0000| Q1,02 | PCWC | |
| 23 | TABLE ACCESS FULL | SALES | 3673K| 73M| 3857 (1)| 00:00:01 |:BF0000|:BF0000| Q1,02 | PCWP | |
------------------------------------------------------------------------------------------------------------------------------------------------

Note
-----
- dynamic statistics used: dynamic sampling (level=2)
- Degree of Parallelism is 4 because of session
- 1 Sql Plan Directive used for this statement

続きを読む "スタースキーマを扱う実行計画の特徴"

| | コメント (0) | トラックバック (0)

2016年12月 3日 (土)

macOS : カレンダーへのスパム参加通知をなんとかする方法を考えてみた

最近多くなってきているスパムメールを利用したカレンダーへのスパム参加通知。
はっきりいってうざいです。

https://discussionsjapan.apple.com/thread/10180695

https://discussionsjapan.apple.com/thread/10179171

https://discussions.apple.com/message/30890223#30890223


Spam iCloud Calendar Invitations


メールアドレス変えるという方法もあるけど、変えない対処方法を考えてみました。
Appleさん根本的な対策考えてくれるといいけど。


私が今試している方法は、簡単に言うと、メールの”スパムフォルダ振り分け”に近いのですが、スパムな参加通知を振り分けられないので、

デフォルトカレンダーをスパム参加通知用にしちゃうという

方法です。

通常の参加通知は、個別にカレンダーを作って参加依頼時や予定を入れる時にカレンダー指定で振り分けてもらってます。(想像しやすいカレンダー名にしてるとそれもねらわれるかも。。。)

(性悪説的な対応しか、いまのところできないのが辛いが)


いま試している方法は次のとおり。

20161130_214621

続きを読む "macOS : カレンダーへのスパム参加通知をなんとかする方法を考えてみた"

| | コメント (0) | トラックバック (0)

2016年11月19日 (土)

macOS SierraのiMovie10.1.3がクラッシュしまくる時の対処 / FAQ

まあ、OSアップグレードとかiMovieのアップグレードとかではありがちなのですが....
キャッシュ系かとおもったら違ったので、自分メモ


Why does iMovie 10.1.3 always crashes right after starting?

上記、スレにある対処法で一発解決しまっす。

lampeye:˜ lempeyes$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.1
BuildVersion: 16B2555
lampeye:˜ lempeyes$
lampeye:˜ lempeyes$
lampeye:˜ lempeyes$
lampeye:˜ lampeyes$ /usr/sbin/system_profiler SPApplicationsDataType | grep iMovie -A 2 | grep -E 'Version|iMovie'
iMovie:
Version: 10.1.3
Location: /Applications/iMovie.app
lampeye:˜ lempeyes$
lampeye:˜ lempeyes$
lampeye:˜ lempeyes$ ll
total 24
drwx------@ 12 lempeyes staff 408B 11 19 12:04 Dropbox
drwx------+ 21 lempeyes staff 714B 11 19 00:50 Downloads

・・・中略・・・

-rw------- 1 lempeyes staff 3B 1 22 2011 dead.letter
drwxr-xr-x 10 lempeyes staff 340B 12 19 2007 Image Kit Browser
drwxr-xr-x 10 lempeyes staff 340B 12 19 2007 Image Browser
lampeye:˜ lempeyes$
lampeye:˜ lempeyes$
lampeye:˜ lempeyes$ cd Library/Containers/
lampeye:Containers lempeyes$
lampeye:Containers lempeyes$
lampeye:Containers lempeyes$ ls -l | grep iMovie*
drwx------ 4 lempeyes staff 136 10 26 22:51 com.apple.iMovieApp
lampeye:Containers lempeyes$
lampeye:Containers lempeyes$
lampeye:Containers lempeyes$ rm -rf com.apple.iMovieApp
lampeye:Containers lempeyes$
lampeye:Containers lempeyes$ ls -l | grep iMovie*
lampeye:Containers lempeyes$

| | コメント (0) | トラックバック (0)

2016年11月 5日 (土)

簡単! 「Model」タブでインスタント・リバース・エンジニアリング

クックパッド風のタイトルにしてみましたw

前回の続きを書こうと思ってたのですが、Oracle SQL Developer 4.1.3で追加された、「Model」タブ。

これ意外にいいです。いままではData Modelerを起動しなくても参照整合性制約が定義されていれば、簡単にリバースエンジニアリングできるの知ってました? (参照整合性制約のない表も含め、スキーマ全体をリバースエンジニアリングしたい場合は今まで通り、SQL Developer Data Modelerを利用する必要があります)
(私は最近気づいたんですけどねw


以下、最新版の4.1.5で試した動画をYoutubeにアップしておきました:)

※サウンドトラックなしです。


え!?
参照整合性制約が無い! ですって!!!!!!wwww

そのような方は、参照整合性制約について、深く考えてみるのもよいのではないでしょうか。
db tech showcase tokyo 2013 - A35 - JPOUG特濃:潮溜まりでジャブジャブ、SQLチューニング


本日のネタは以上です。

| | コメント (0) | トラックバック (0)

2016年10月25日 (火)

JPOUG in 15 minutes #2 @ Yahoo! Japan 紀尾井町

随分前に放置していた、Youtubeで公開しているOracle SQL Developer Data Modeler : reverse engineeringがいつのまにやら10万アクセスを超えていた
(祝!

最近のOracle SQL Developer意識しなくてもリバースしてくれたりして。。。ね。 新しいネタ乗せないと><


ってことは置いといて、




JPOUG (Japan Oracle User Group)のイベントのお知らせです。

JPOUG in 15 minutes #2


を2016年11月17日(木)19:00~21:00(開場および受付開始: 18時30分)に開催しま〜す。

(コワーキングスペースが気になる!)Yahoo! Japanさんの新オフィスです!。
昔は日本オラクルさんのオフィスビルだったところの向かいです:)

広いお部屋をお借りできたので、まだ、お席に余裕があります!!(10/25日現在)


参加登録は以下よりお願いします。
なお、セキュリティーの厳しいビルであるため、参加登録ページの後半に入館に関する注意点を記載してあります。
スムーズな入館のため、ご一読くださいますようお願いいたします。

https://jpoug.doorkeeper.jp/events/51429
20161025_230728

| | コメント (0) | トラックバック (0)

2016年9月24日 (土)

VirtualBoxとSIMD

Previously on Mac De Oracle
SIMDのメモをあれこれ貼り付けただけでしたが、実は今回のことを調べてる次いでに見つけたものだったんですよ。



OracleもSIMDを使う操作が多くなりつつあるようなのでどうなんだろというわけで、今回もメモです。

元ネタは以下のエントリ

VirtualBoxゲストでSIMD命令: DB In-Memory
https://blogs.oracle.com/LetTheSunShineIn/entry/virtualboxゲストでsimd命令_db_in_memory

上記は約2年前の記事で現在のVirtualBoxでは、SSE4.1/SSE4.2は有効化されています。
以下ドキュメントを参照のこと。

9.27. Experimental support for passing through SSE4.1 / SSE4.2 instructions
https://www.virtualbox.org/manual/ch09.html#sse412passthrough


ただ、AVXはどうなのか書かれてはいないのでどうなってんのかな〜とか、ググってたら

Ticket #14427 (new defect)
https://www.virtualbox.org/ticket/14427#comment:3
こんな記事を見つけたのであー有効になってるよねーということで、うちの環境での確認

確認に利用したVirtualBoxは現時点の最新版です。

MacBook:˜ lampeyes$ VBoxManage -version
5.1.6r110634
MacBook:˜ lampeyes$


うちのMacファミリーでは最古参w (そろそろなんとか新しいのにしたいなぁ〜w)
古いCPUだけど、マニュアル通り、SSE4.1/4.2はguestでも有効化されていました。おし!

MacPro:˜ lampeyes$ /usr/sbin/system_profiler SPHardwareDataType | grep -E 'Model|Processor|Core|Cache'
Model Name: Mac Pro
Model Identifier: MacPro5,1
Processor Name: 6-Core Intel Xeon
Processor Speed: 2.4 GHz
Number of Processors: 2
Total Number of Cores: 12
L2 Cache (per Core): 256 KB
L3 Cache (per Processor): 12 MB
Processor Interconnect Speed: 5.86 GT/s
MacPro:˜ lampeyes$
MacPro:˜ lampeyes$ grep -E 'Mnemonic|SSE4|AVX' '/Users/lampeyes/VirtualBox VMs/Linux Group/OralceLinux (Oracle12c R1)/Logs/VBox.log'
00:00:02.472827 Mnemonic - Description = guest (host)
00:00:02.472916 SSE4_1 - SSE4_1 support = 1 (1)
00:00:02.472919 SSE4_2 - SSE4_2 support = 1 (1)
00:00:02.472934 AVX - AVX support = 0 (0)
00:00:02.472942 Mnemonic - Description = guest (host)
00:00:02.472951 AVX2 - Advanced Vector Extensions 2 = 0 (0)
00:00:02.472968 AVX512F - AVX512 Foundation instructions = 0 (0)
00:00:02.472978 AVX512PF - AVX512 Prefetch instructions = 0 (0)
00:00:02.472980 AVX512ER - AVX512 Exponential & Reciprocal instructions = 0 (0)
00:00:02.472981 AVX512CD - AVX512 Conflict Detection instructions = 0 (0)
00:00:02.473041 Mnemonic - Description = guest (host)
00:00:02.473103 SSE4A - SSE4A instructions = 0 (0)
MacPro:˜ lampeyes$

続きを読む "VirtualBoxとSIMD"

| | コメント (0) | トラックバック (0)

2016年9月22日 (木)

メモ:SIMDあれこれ

SIMDあれこれ自分メモ

primitive: blog / introdunction to SIMD programming
http://i-saint.hatenablog.com/entry/2015/05/26/212441

wikipedia / Streaming SIMD Extensions
https://ja.wikipedia.org/wiki/Streaming_SIMD_Extensions

続きを読む "メモ:SIMDあれこれ"

| | コメント (0) | トラックバック (0)

2016年9月20日 (火)

Boot Camp de Windows 10 Pro

Previously on Mac De Oracle から結構間が空いてしまった m(_ _)m

VIrtualBoxで一つ、エクスリームなPCで一つWindows Pro環境があるのですが、訳あって、Boot CampでMacBookにもう一つのWindows 10 Pro環境を作った。

Boot Camp を使って Mac で Windows 10 を使う
https://support.apple.com/ja-jp/HT204990

Appleサポートに記載されている手順で楽チン構築でした。ニッコリ。

Windows10pro_withbootcamp_2


続きを読む "Boot Camp de Windows 10 Pro"

| | コメント (0) | トラックバック (0)

2016年8月10日 (水)

Safari起動時に前回参照ページではなく、ホームページを表示したい etc.

Mac で前回と同じウインドウ、App、書類を自動的に開くという機能が働いてSafariを起動すると前回開いていたページを表示したりするようになった。

便利なんだけど、そのページがパスワード変更依頼ぺージだったりすると、次回起動時に再度そのページを送信したりすることがあるw

逆にめんどくさいなー、この機能と思ったら固定ページを表示するようできるんですよね。
(再開機能がなかった頃のようにする方法です)

Safari


続きを読む "Safari起動時に前回参照ページではなく、ホームページを表示したい etc."

| | コメント (0) | トラックバック (0)

2016年7月31日 (日)

個人的に気なるVirtualBox Extension PackのLincenseダイアログの「同意します」ボタンの位置w

久々に役に立たねいネタですw

VirtualBox Extension Packライセンスダイアログの「同意しません」、「同意します」ボタンの位置が、OS Xだけ違ってて、WindowsやLinuxの位置だと思い込み、「同意しません」ボタンをクリックしてしまい、イラッとすることがたまに。

デフォルトボタンになっているので、スペースバー対応すれば逆でも問題はないわけですが、気になる気になるw

続きを読む "個人的に気なるVirtualBox Extension PackのLincenseダイアログの「同意します」ボタンの位置w"

| | コメント (0) | トラックバック (0)

2016年7月19日 (火)

DB Tech Showcase 2016 Tokyo - E35 - SQLチューニング総合診療所的予防医学のセッション資料

DB Tech Showcase 2016 Tokyo - E35 - SQLチューニング総合診療所的予防医学のセッション資料を公開しました。

ぼくとつと、性能試験データの質などのことを言い続ける感じになっていたでしょうか?w

ところで、次回のJPOUG主催のイベントの開催が決まりました。セッション内容は現在準備中ですが、確定次第随時更新します。
お申し込みは以下のイベントベージよりお願いします。

JPOUG in 15 minutes #1

| | コメント (0) | トラックバック (0)

2016年5月 6日 (金)

AirMacベースステーションの拡張ワイヤレスネットワーク設定

AirMacベースステーションの拡張ネットワーク設定のハマリどころ。(含む自分メモ)

昨年末にAirMac ExtremeとAirMac Time Capsuleの2台構成にしようとしてハマったところを書き残そうと思いつつすっかり忘れていた。 orz


マニュアルちゃんと読めよ! 

と妻にも言っている私が、

Apple Supportのエントリに書かれていた一文を読み飛ばすなんて、なんってこったいw
というのがオチだったわけですが。。。 (^^;;;;


以下をしっかりw 読めばハマることはないと思いまっす。  


AirMac ベースステーション:拡張ワイヤレスネットワーク (802.11n) の設定と構成

Wi-Fi base stations: Extending the range of your wireless network by adding additional Wi-Fi base stations

私が読み飛ばしてしまったのは、以下。
”これまでに Wi-Fi ベースステーションを構成したことがある場合は、構成に着手する前に、拡張ワイヤレスネットワークを構成する各 Wi-Fi ベースステーションを工場出荷時の状態にリセットしておいた方がよいでしょう。”

続きを読む "AirMacベースステーションの拡張ワイヤレスネットワーク設定"

| | コメント (0) | トラックバック (0)