errorstack の出力設定と解除設定
-- ORA-04031 発生時に診断用トレースファイルを出力したい場合 SQL> alter system set events '4031 trace name errorstack level 3'; -- 設定を解除したい場合 SQL> alter system set events '1017 trace name errorstack off';
OracleDatabase のオプションと機能を表示する
V$OPTIONから、自分の環境の OracleDatabase のオプションと機能を確認できる。
実際に確認してみた例
SQL> set lines 140 pages 1000 col parameter format a50 col value format a20 select parameter, value from v$option order by 1;SQL> SQL> SQL> SQL> 2 3 4 5 PARAMETER VALUE -------------------------------------------------- -------------------- ASM Proxy Instance FALSE Active Data Guard TRUE Adaptive Execution Plans TRUE Advanced Analytics TRUE Advanced Compression TRUE Advanced Index Compression TRUE Advanced replication TRUE Application Role TRUE Automatic Data Optimization TRUE Automatic Storage Management FALSE Backup Encryption TRUE Basic Compression TRUE Bit-mapped indexes TRUE Block Change Tracking TRUE Block Media Recovery TRUE Cache Fusion Lock Accelerator TRUE Change Data Capture TRUE Coalesce Index TRUE Connection multiplexing TRUE Connection pooling TRUE Cross Transportable Backups TRUE DICOM TRUE Data Mining TRUE Data Redaction TRUE Database queuing TRUE Database resource manager TRUE Deferred Segment Creation TRUE Duplexed backups TRUE Enterprise User Security TRUE Exadata Discovery TRUE Export transportable tablespaces TRUE Fast-Start Fault Recovery TRUE File Mapping TRUE Fine-grained Auditing TRUE Fine-grained access control TRUE Flashback Data Archive TRUE Flashback Database TRUE Flashback Table TRUE Global Data Services TRUE Heat Map TRUE I/O Server FALSE In-Memory Aggregation TRUE In-Memory Column Store TRUE Incremental backup and recovery TRUE Instead-of triggers TRUE Java TRUE Join index TRUE Managed Standby TRUE Management Database FALSE Materialized view rewrite TRUE OLAP TRUE OLAP Window Functions TRUE Objects TRUE Online Index Build TRUE Online Redefinition TRUE Oracle Data Guard TRUE Oracle Database Vault FALSE Oracle Label Security FALSE Parallel backup and recovery TRUE Parallel execution TRUE Parallel load TRUE Partitioning TRUE Plan Stability TRUE Point-in-time tablespace recovery TRUE Privilege Analysis TRUE Proxy authentication/authorization TRUE Real Application Clusters FALSE Real Application Security TRUE Real Application Testing TRUE Result Cache TRUE SQL Plan Management TRUE Sample Scan TRUE SecureFiles Encryption TRUE Server Flash Cache TRUE Snapshot time recovery TRUE Spatial TRUE Streams Capture TRUE Table Clustering TRUE Transparent Application Failover TRUE Transparent Data Encryption TRUE Transparent Sensitive Data Protection TRUE Trial Recovery TRUE Unified Auditing FALSE Unused Block Compression TRUE XStream TRUE Zone Maps TRUE 86行が選択されました。
主キー制約と索引の作成順についてのメモ(仕様確認)
下記仕様があることを知らなかったので検証確認してみました。
主キー制約の仕様
主キー制約 主キー制約は、列を表またはビューの主キーとして指定します。複合主キー は、列の組合せを主キーとして指定します。主キー制約を表内に定義する場合に必要となるのは、PRIMARY KEYキーワードのみです。主キー制約を表外に定義する場合は、1つ以上の列も指定する必要があります。複合主キーは表外に定義する必要があります。
主キー制約を満たすには次の条件があります。 ・主キーの値が、表の中の複数行に存在することはできません。 ・主キーを構成する列に、NULLを持たせることはできません。
主キー制約を作成する場合 ・Oracle Databaseでは、主キー制約を適用する前に既存の索引に一意の値の集合が含まれる場合、その索引が使用されます。既存の索引は、一意であると定義されている場合も、一意でないと定義されている場合もあります。DML操作を実行すると、この既存の索引を使用して主キー制約が適用されます。 ・既存の索引を使用できない場合は、一意索引が生成されます
検証手順
--== 下準備 ==-- -- 表領域作成 create tablespace idx_test_tbs datafile '/u01/app/oracle/oradata/orcl/idx_test_tbs.dbf' size 100M; -- ユーザー作成 create user idx_test identified by "idx_test" default tablespace idx_test_tbs temporary tablespace temp; -- 権限付与 grant dba to idx_test; --== 検証(制約 --> 索引) ==-- -- 表作成 create table idx_test.test_tbl( col1 varchar(10), col2 varchar(10), col3 varchar(10) ); -- 主キー制約付与 alter table idx_test.test_tbl add constraint pk1 primary key (col1, col2) using index; -- 索引作成 create index idx_test.idx on idx_test.test_tbl (col1, col2, col3); -- 作成された索引を確認 col index_name format a15 select index_name from dba_indexes where owner = 'IDX_TEST'; --== 逆順での作成を検証(索引 --> 制約) ==-- -- 表を削除 drop table idx_test.test_tbl; -- 表作成 create table idx_test.test_tbl( col1 varchar(10), col2 varchar(10), col3 varchar(10) ); -- 索引作成 create index idx_test.idx on idx_test.test_tbl (col1, col2, col3); -- 主キー制約付与 alter table idx_test.test_tbl add constraint pk1 primary key (col1, col2) using index; -- 作成された索引を確認 col index_name format a15 select index_name from dba_indexes where owner = 'IDX_TEST';
検証ログ
下準備
SQL> --== 下準備 ==-- -- 表領域作成 create tablespace idx_test_tbs datafile '/u01/app/oracle/oradata/orcl/idx_test_tbs.dbf' size 100M;SQL> SQL> 表領域が作成されました。 SQL> -- ユーザー作成 create user idx_test identified by "idx_test" default tablespace idx_test_tbs temporary tablespace temp;SQL> 2 3 4 ユーザーが作成されました。 SQL> -- 権限付与 grant dba to idx_test;SQL> 権限付与が成功しました。
制約→索引の順で作成
SQL> --== 検証(制約 --> 索引) ==-- -- 表作成 create table idx_test.test_tbl( col1 varchar(10), col2 varchar(10), col3 varchar(10) );SQL> SQL> 2 3 4 5 表が作成されました。 SQL> -- 主キー制約付与 alter table idx_test.test_tbl add constraint pk1 primary key (col1, col2) using index;SQL> 表が変更されました。 SQL> -- 索引作成 create index idx_test.idx on idx_test.test_tbl (col1, col2, col3);SQL> 索引が作成されました。 SQL> -- 作成された索引を確認 col index_name format a15 select index_name from dba_indexes where owner = 'IDX_TEST';SQL> SQL> 2 3 INDEX_NAME --------------- PK1 ★ IDX ★
主キー制約の索引と、その後作成された索引が2つ存在している事が確認できます。
索引→制約の順で作成
SQL> --== 逆順での作成を検証(索引 --> 制約) ==-- -- 表を削除 drop table idx_test.test_tbl;SQL> SQL> 表が削除されました。 SQL> -- 表作成 create table idx_test.test_tbl( col1 varchar(10), col2 varchar(10), col3 varchar(10) );SQL> 2 3 4 5 表が作成されました。 SQL> -- 索引作成 create index idx_test.idx on idx_test.test_tbl (col1, col2, col3);SQL> 索引が作成されました。 SQL> -- 主キー制約付与 alter table idx_test.test_tbl add constraint pk1 primary key (col1, col2) using index;SQL> 表が変更されました。 SQL> -- 作成された索引を確認 col index_name format a15 select index_name from dba_indexes where owner = 'IDX_TEST'; SQL> SQL> 2 3 INDEX_NAME --------------- IDX ★
主キー制約の索引が作成されていない事が確認できます。
検証にてリファレンス記載の下記仕様を確認する事ができた。
主キー制約を作成する場合 ・Oracle Databaseでは、主キー制約を適用する前に既存の索引に一意の値の集合が含まれる場合、その索引が使用されます。既存の索引は、一意であると定義されている場合も、一意でないと定義されている場合もあります。
外部ディスプレイのチラつきを解消した
事象
VAIO Z 2016 (Clam shell) から外部接続したディスプレイが、チラついて表示される。
また、頻繁に外部ディスプレイ画面が真っ暗になる。
接続元PC
VAIO Z 2016 (Clam shell)
接続先ディスプレイ
Philips 274E5Q 27インチ
考察
自宅PCであるVAIO Zを接続すると今回の事象が発生する。
しかし、会社PCであるThinkpadを接続した際には事象は発生しない。
この事より、ディスプレイではなく自宅PC(VAIO Z)の設定に問題があると考えました。
どのような設定をすればよいか
PC側なのかディスプレイ側なのか不明だが、リフレッシュレートの設定を実施する必要があると考えました。
ためしたこと1
PC側でディスプレイのリフレッシュレートを変更したが、設定変更した瞬間にPCが異常終了し再起動した。再起動後、リフレッシュレートは初期状態に戻っており、実際には変更できていなかった。また、外部ディスプレイのちらつきは改善しなかった。
ためしたこと2
ディスプレイ本体を操作して設定を変更した。
具体的には、ディスプレイ電源ボタンの左隣のボタンを押下しメニュー画面を表示させる。
「画像」を選択し、表示される選択肢の中から「SmartResponse」を選択。
「SmartResponse」の値を「超高速」から「オフ」へ変更。
上記を実施したところ、外部ディスプレイのちらつきが無くなり、問題が解決した。
参考
Philipsの27インチ液晶ディスプレイ274E5QHSB/11がちらつく件(解決編) - nisshi9の備忘録ブログ
Load Average についてメモ
LoadAverage とは
- システム全体の負荷状況を表す指標
- 1CPU における、単位時間あたりの実行待ちとディスクI/Oのプロセス待ちの数で表される
システムの負荷とは
下記2つの数の多さ
- CPUの実行権限が与えられるのを待っているプロセス
- ディスクI/Oの完了を待っているプロセス
▼実行例
top - 16:25:00 up 8 min, 1 user, load average: 0.01, 0.14, 0.12 Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 4048764k total, 2525236k used, 1523528k free, 67852k buffers Swap: 3145724k total, 0k used, 3145724k free, 2089612k cached : :
- "load average: 0.01, 0.14, 0.12" が load average を表している。
- 1番目のフィールドが 直近1分間の load average
- 2番目のフィールドが 直近5分間の load average
- 3番目のフィールドが 直近15分間の load average
RaspberryPi 3 model B + でLEDを点灯させるためのメモ
目的
- RaspberryPi 3 model b+ にて python で作成したプログラムを使用して LED 点灯を実験する。
ブレッドボードの使い方
python Lチカの参考
RaspberryPi ピン解説
Raspberry Pi 3B+ のGPIOピン割り当ての解説 - 水瓶座列車
Raspberry Pi 3+ ピン配置 - farmtory-lab
- 配線図
コード解説
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(2,GPIO.OUT) for x in xrange(5): GPIO.output(2,True) time.sleep(2) GPIO.output(2,False) time.sleep(2) GPIO.cleanup()
- 1行目でシェバンを記述。
- 2行目で文字コードの宣言をしている。(Python 3 では utf-8 の場合は、指定しないことが推奨されている)
- 4行目でライブラリを読み込んでいる。具体的にはRPiモジュールのGPIO 関数のみを読み込んでいる。(不用意にRPi モジュール全体を読み込むと重くなるのかな?)
- 5行目で time モジュールを読み込んでいる
- 7行目で、GPIOモジュールのsetmode関数をコールしている。引数にはモードを指定する。
- 8行目で、GPIOモジュールのsetup関数をコールしている。1番目の引数には 2 を指定している。これはBCMでの2番ピンを意味しています。そして、2番目の引数には GPIO.OUT を指定しています。これは出力ポートとして使用する事を意味します。つまりBCM2番ポートを出力として使用する事を意味します。
- 9行目でfor文を回しています。xrange(5) で 0~4までの値を回すことを意味します。
- 10行目(for文の処理の中)はGPIOモジュールのoutput関数をコールしています。1つ目の引数には 2を指定している。これは2番ピンであることを示しています。2つ目の引数にはTrueが指定されています。これは2番ピンをONにする事を示しています。(電圧をかける)
- 11行目では、time モジュールのsleep関数をコールしている。引数には2を指定している。これは、2秒間呼び出したスレッドの処理を停止する。つまり2秒間プログラムが停止する。
- 12行目は2番ポートをOFFにしている(電圧をかけない)
- 13行目で2秒間処理を停止。
x=0 ~ x=4 まで5回ループを回した後、14行目でGPIOの設定をリセットする。(GPIO.cleanup())
BCMピン番号の確認方法
pi@raspberrypi:~/project/led $ gpio readall +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | OUT | 0 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+
参考
Python で文頭に記載する文字コードの「アレ」の名称(なんちゃら UTF-8 みたいなやつ) - Qiita
time - Time access and conversions - Python 3.8.3rc1 documentation