OracleDatabase のオプションと機能を表示する

V$OPTIONから、自分の環境の OracleDatabase のオプションと機能を確認できる。

docs.oracle.com


実際に確認してみた例

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行が選択されました。

主キー制約と索引の作成順についてのメモ(仕様確認)

下記仕様があることを知らなかったので検証確認してみました。

主キー制約の仕様

SQL言語リファレンス

主キー制約 主キー制約は、列を表またはビューの主キーとして指定します。複合主キー は、列の組合せを主キーとして指定します。主キー制約を表内に定義する場合に必要となるのは、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を点灯させるためのメモ

Raspberry Pi 3B+ のGPIOピン割り当ての解説 - 水瓶座列車

Raspberry Pi 3+ ピン配置 - farmtory-lab

  • 配線図f:id:spaceman076:20200505140005j:plain

コード解説

#!/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関数をコールしている。引数にはモードを指定する。
    • GPIO.BOARD: 物理ピン番号(左上からの連番)
    • GPIO.BCM: 役割ピン番号(broadcom命名しているもの)★今回はコレ
  • 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

RPi.GPIOの基本的な使い方

time - Time access and conversions - Python 3.8.3rc1 documentation