ablog

不器用で落着きのない技術者のメモ

AWRレポートを一括出力する

set pages 0
spool awr_tmp.sql
 select 
 'define report_type=html' || chr(10) ||
 'define dbid=2144341034' || chr(10) ||
 'define inst_num=1' || chr(10) ||
 'define num_days=40' || chr(10) ||
 'define begin_snap='  || SNAP_ID      || chr(10) ||
 'define end_snap='    || (SNAP_ID + 1)|| chr(10) ||
 'define report_name=' || SNAP_ID || '_' || (SNAP_ID + 1) || '.html'  ||
 chr(10) ||
 '@?/rdbms/admin/awrrpti.sql' || chr(10)
 from sys.dba_hist_snapshot
 where dbid = 2144341034
 order by snap_id;
spool off
@awr_tmp.sql

Oracle Database 12.1 EE on EC2 をサクッと作る

$ ssh -i ~/mykey.pem clckwrk@ec2-*-***-***-**.ap-northeast-1.compute.amazonaws.com
  • Oracle Database を起動する。
$ sudo su - cwdb01
$ cd scripts/
$ . DB.env
$ ./start_all.sh
The Oracle base remains unchanged with value /oracle/CWDB01
Processing Database instance "CWDB01": log file /oracle/CWDB01/product/12.1.0/startup.log
  • Oracle Database に接続する。
$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 8 17:54:44 2019

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

RDS Oracle で DataPump のダンプファイルをS3にアップロードする

RDS Oracle で DataPump のダンプファイルをS3にアップロードするには rdsadmin.rdsadmin_s3_tasks.upload_to_s3 を使うとよい。

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'mys3bucket', 
      p_prefix         =>  '', 
      p_s3_prefix      =>  '', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;  

AWRのリポジトリデータをまるっとエクスポートして他のDBにインポートする

AWRのリポジトリデータを Data Pump export file にエクスポートして他のデータベースにインポートする手順。

インポート

  • ダンプファイルをEC2にアップロードする。
$ scp -i ~/mykey.pem awrdump.dmp clckwrk@ec2-*-***-***-**.ap-northeast-1.compute.amazonaws.com:~/
SQL> set linesize 200
SQL> col owner for a10
SQL> col privilege for a10
SQL> col directory_name for a30
SQL> col grantee for a20
SQL> col directory_path for a50
SQL> select d.owner, d.directory_name, p.grantee, p.privilege, d.directory_path
		from dba_directories d, dba_tab_privs p
		where d.owner = p.owner
			and d.directory_name = p.table_name
		order by d.owner, d.directory_name;

OWNER	   DIRECTORY_NAME		  GRANTEE	       PRIVILEGE  DIRECTORY_PATH
---------- ------------------------------ -------------------- ---------- --------------------------------------------------
SYS	   DATA_PUMP_DIR		  IMP_FULL_DATABASE    READ	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  EXP_FULL_DATABASE    READ	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  IMP_FULL_DATABASE    WRITE	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  EXP_FULL_DATABASE    WRITE	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  IMP_FULL_DATABASE    READ	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  EXP_FULL_DATABASE    READ	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  IMP_FULL_DATABASE    WRITE	  /oracle/CWDB01/admin/CWDB01/dpdump/
SYS	   DATA_PUMP_DIR		  EXP_FULL_DATABASE    WRITE	  /oracle/CWDB01/admin/CWDB01/dpdump/
  • 確認したパスにダンプファイルをコピーする。
$ sudo cp awrdump.dmp /oracle/CWDB01/admin/CWDB01/dpdump/
  • ダンプファイルをロードする。
SQL> @?/rdbms/admin/awrload.sql
(中略)
Specify the Directory Name
~~~~~~~~~~~~~~~~~~~~~~~~~~
(中略)
Enter value for directory_name: DATA_PUMP_DIR ★ディレクトリオブジェクト
(中略)
Specify the Name of the Dump File to Load
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please specify the prefix of the dump file (.dmp) to load:
(中略)
Staging Schema to Load AWR Snapshot Data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The next step is to create the staging schema
where the AWR snapshot data will be loaded.
After loading the data into the staging schema,
the data will be transferred into the AWR tables
in the SYS schema.
(中略)
Enter value for file_name: awrdump ★ダンプファイル名(拡張子.dmpは自動的に付与されるのでつけない)
(中略)
Choose the Default tablespace for the AWR_STAGE user
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Choose the AWR_STAGE users's default tablespace.  This is the
tablespace in which the AWR data will be staged.
(中略)
Enter value for schema_name: AWR_STAGE ★テンポラリで作成するスキーマ名(任意の名前でよい)
(中略)
Choose the Temporary tablespace for the AWR_STAGE user
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Choose the AWR_STAGE user's temporary tablespace.
(中略)
Enter value for temporary_tablespace: TEMP ★一時表領域
(中略)
... Creating AWR_STAGE user

|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|  Loading the AWR data from the following
|  directory/file:
|   /oracle/CWDB01/admin/CWDB01/dpdump/
|   awrdump.dmp
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|  *** AWR Load Started ...
|
|  This operation will take a few moments. The
|  progress of the AWR load operation can be
|  monitored in the following directory/file:
|   /oracle/CWDB01/admin/CWDB01/dpdump/
|   awrdump.log
|
... Dropping AWR_STAGE user

End of AWR Load
  • ログを確認する。
$ tail -5 /oracle/CWDB01/admin/CWDB01/dpdump/awrdump.log
. . imported "AWR_STAGE"."WRM$_PDB_IN_SNAP":"WRM$_PDB_IN_SNAP_MXDB_MXSN"      0 KB       0 rows in 0 seconds
. . imported "AWR_STAGE"."WRM$_PDB_IN_SNAP_BL"               0 KB       0 rows in 0 seconds
. . imported "AWR_STAGE"."WRM$_WR_CONTROL"               14.76 KB       1 rows in 0 seconds
     Completed 220 TABLE_EXPORT/TABLE/TABLE_DATA objects in 28 seconds
Job "SYS"."SYS_IMPORT_FULL_02" successfully completed at Thu Aug 8 18:08:42 2019 elapsed 0 00:00:36

ThinkPad X280 でタッチパッドを無効化する

手順

  • ThinkPad をシャットダウンしてから電源オンにする。
  • ThinkPad ロゴが表示されたら、「 F1 」キーを連打して BIOS設定ユーティリティに入る。
  • 「Config > Keyboard/Mouse」を選択する。
  • TrackPad/TouchPad を選択して、設定を有効から無効に切り替える。
  • 「F10」を押して、保存して終了。「enter」を押し、「yes」を選択して設定を保存して終了する。

DataPumpでメタデータ(DDL)のみエクスポートする

書式

$ expdp <username>/<password> directory=<directory object> content=metadata_only schemas=<schema name> dumpfile=<dump file name> LOGFILE=<log file name>

実行例

$ expdp system/manager directory=pump_dir content=metadata_only schemas=scott,hr dumpfile=ddl_scott_hr.dmp LOGFILE=exp_ddl_scott_hr.log

AWS Summit Tokyo 2019 で登壇した

2019/6/13に AWS Summit Tokyo 2019で「データレイク構築における成功の秘訣~マインドと進め方、設計ベストプラクティス~」というタイトルで登壇した。以下はストリーミング配信のスクリーンショットより。

スライドと動画

アジェンダ

  • データレイクとは
  • Amazon のデータレイク事例
  • マインドと進め方
  • 8の設計ベストプラクティス
  • まとめ

頂いた感想

以下のような感想も頂き感謝です。

AWS 前提でデータ基盤の構築を考える場合、いったん全てのデータを S3 に集約する。逆に言えばそれさえやってしまえば AWS のサービスを利用してなんでも構築できそう、というのがよくわかったセッションでした。
このときの S3 運用のまさしくベストプラクティスが端的にまとまりつつ、一歩踏み込んだ内容も含まれており聴き応えがありました。特にバケット分割やパーティション分割はじめ、実際に構築する段階になって悩むことになりそうな部分の指針を聞けたのは収穫だったとおもます。
内容には(社内)ステークホルダの期待値コントロールの話題まで含んでおり、スタートアップだけでなく、「データは溜まってきているが分析基盤の形にはできていない」それなりの規模の会社にとって、指針となりうる考え方が散りばめられていたように思います。

AWS SUMMIT TOKYO 2019 参加レポ - Qiita

JPOUG関係者が3人登壇

また今回は JPOUG 関係者が3人登壇し、データベースで新しい風が。引き続きいろいろやっていきたい。

雰囲気や感想など

2年ぶりに Ask The Technology Experts や DB Migration ブースにも立ったが、一昨年よりも既に使っているお客さんによる具体的な相談が多かったので、フェーズが進んでいるんだなと実感した。あと、IAM設計、IAMポリシー、バケットポリシーなどについてお客さんが最低限のベスプラを押さえてジャンプスタートできるよう実運用レベルのサンプルをブログに書かねばと思った。


DeepRacer は大盛り上がりだった。Machine Learning の要点を学べて世界で競わせて、AWS の要素技術を盛り込んでいて、ナイスアイデアなサービスだなと思った。

参加者同士が繋がる re:Mix のような場は改めて素晴らしいなと感じた。久々に合う方、新しく繋がった方もありとてもよい場だった。


アパホテル 東京ベイ幕張に宿泊したが、大浴場もあり非常に快適だった。

最終日は DB Guys でタイ屋台で飲んだが、JPOUG と MySQLer と AWS が融合したカオスな場だった。JPOUG 誕生もそうだったが、今まで交わらないものが交わって化学反応を起こして新しい何かが生まれていくのは楽しいです。

2020年のAWS Summit Tokyo はパシフィコ横浜でお会いしましょう。