tshizuku03の日記

主にoracleやLinuxコマンドについての記事を載せていきたいと思っています。

AWS初心者がEC2からS3の画像をマウントしてみた

 agenda
  1. IAM Role作成
  2. EC2を2つ作成(1のRoleを使用)
  3. ELBで2のEC2設定(yumhttpdインストール)
  4. S3作成&画像UP
  5. s3fsインストー
  6. EC2からS3の画像をマウント
  7. 動作検証

EC2インスタンスにS3をマウントして使用する(IAM Role ver) - Qiita

【初心者向け】Amazon EC2にSSH接続する【Windows、Macintosh】 | Developers.IO

このサイトを参考にさせていただきました。

 

悩んだ点と忘れそうな点だけ手順を以下に残します。

EC2接続

$chmod 600 <秘密鍵.pem>

$ssh -i  <秘密鍵.pem> ec2-user@<パブリックDNS>

 

マウント

EC2でマウントする

$sudo vi /etc/fuse.conf

 

fuse.conf内は下記のようになっているので2行目の#を外してrootユーザー以外が利用できるようにする。

# mount_max = 1000

# user_allow_other(⇦ここの#を外す)

 

 

マウントでid,gidを使うので、事前に調べる必要がある。

id ec2-user

 

マウントコマンドは以下。

$/usr/local/bin/s3fs <S3バケット名> <マウント場所> -o rw,allow_other,uid=500,gid=500,default_acl=public-read,iam_role="<IAMロール名>"

$id ec2-user
今回の場合は以下でマウントした。
ドキュメントルートをそのままマウントするのはどうかと思うけど勉強用だから今は考えないでおく。
$/usr/local/bin/s3fs webserver-test-uses3 /var/www/html -o rw,allow_other,uid=500,gid=500,default_acl=public-read,iam_role="use-s3-webserver-test"

マウント確認
$df -h

 

おまけ

OS再起動後、httpdとマウントが自動起動するよう設定。

これでOS再起動後、WEBサイトが見れないってことはなさそう。

その他の設定は特に思いつかなかったので、今回はここまで。

 

以上、

【Oracle】FASTSTATFAILOVERのタイムアウト値を変更

DGMGRL コマンドラインを使用してプライマリサイトへ接続します。

  1. Primary側接続

$ dgmgrl

DGMGRL> connect sys/<PW省略>

  1. ステータス確認

DGMGRL> SHOW CONFIGURATION VERBOSE
DGMGRL> SHOW FAST_START FAILOVER

       ファスト・スタート・フェイルオーバー: ENABLEDであること。
       構成ステータス:SUCCESS であること。
       FastStartFailoverThreshold:90であること。

 

  1. FASTSTATFAILOVERのタイムアウト値を変更

DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=60;

      プロパティ"faststartfailoverthreshold"が更新されました が表示されること。

 

  1. ステータス確認

DGMGRL> SHOW CONFIGURATION VERBOSE
DGMGRL> SHOW FAST_START FAILOVER

       ファスト・スタート・フェイルオーバー: ENABLEDであること。
       構成ステータス:SUCCESS であること。

       FastStartFailoverThreshold:60であること。

インスタンスメカニズム

SCN(システム変更番号)の確認

SCN:Oracleの内部時間

SELECT

CURRENT_SCN, --現在のSCN

CHECKPOINT_CHANGE#  --直近のチェックポイントSCN

FROM V$DATABASE; 

PL/SQL行トリガー例文

この記事はQiitaにも記載しております PL/SQL行トリガー例文 - Qiita

PL/SQL基礎中の基礎をメモとして残します。

<<行トリガーの作成>>
SQL> CREATE OR REPLACE TRIGGER 注文_在庫_TRIG
  2  AFTER INSERT ON 注文 FOR EACH ROW
  3  BEGIN
  4     UPDATE 在庫
  5     SET    在庫数 = 在庫数 - :NEW.注文数
  6     WHERE  製品名 = :NEW.製品名;
  7  END;
  8 /

行トリガー例。

・2行目のタイミングには「BEFORE」もしくは「AFTER」を指定。
 BEFOREであればDML処理の前に起動し、AFTERであればDML処理の後に起動。

・3行目のイベントには、トリガーの起動するDML文の種類、 すなわち「INSERT」「UPDATE」「DELETE」

・4行目には、このトリガーを設定する表の名前を指定

・「ON 表名」の後ろに「FOR EACH ROW」というキーワードがあれば行トリガーであり、なければ、文トリガー。

・OLDとNEW

:OLD.列名 ←DML操作前の列値
:NEW.列名 ←DML操作後の列値

 

参考サイト

連載 PL/SQLを使ってみよう!第38回「文トリガー、行トリガーの構文」 | 集合研修 システム・テクノロジー・アイ銀座会場

隠しパラメータ変更

試してないけれど、備忘録的に手順を残します。

隠しパラメータ変更は、oracleサポートの許可のもと変更すること

インスタンス再起動必要の可能性あり

--■変更前パラメータ確認

set linesize 130
col "parameter" for a30
col "description" for a50
col "value" for a20
SELECT
ksppinm as "parameter"
, ksppdesc as "description"
, ksppstvl as "value"
FROM x$ksppi
JOIN x$ksppcv USING (indx)
WHERE ksppinm IN ('[隠しパラメータ名]'); 

--■パラメータ変更

alter system set _ktb_debug_flags=8 scope = spfile;

--■変更後パラメータ確認

SELECT
ksppinm as "parameter"
, ksppdesc as "description"
, ksppstvl as "value"
FROM x$ksppi
JOIN x$ksppcv USING (indx)
WHERE ksppinm IN ('[隠しパラメータ名]');

 

表領域

対象表領域に存在するパーティションテーブルの構成を確認

SELECT OWNER,TABLE_NAME,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,PARTITION_COUNT,DEF_SUBPARTITION_COUNT FROM ALL_PART_TABLES
WHERE OWNER='スキーマ名';
 

 パーティションの定義の確認

SELECT

    TABLE_OWNER,TABLE_NAME,

    SUBPARTITION_COUNT as "サブパーティション数",

    TABLESPACE_NAME,PARTITION_NAME as "パーティション名",

    NUM_ROWS as "パーティション内の行数"
FROM DBA_TAB_PARTITIONS WHERE TABLE_OWNER='スキーマ名'

    AND TABLE_NAME='テーブル名';
 

 

Data GuardとEC2

災害が起こった時のためのOracle Databaseのレプリケーション機能

 

Oracleでオンプレミスとクラウドのハイブリッドってできないかなと考えていて

EC2のように未使用時は、コストがかからないという考え方なら

バックアップ用DBはいけるのかな?と調べてみたらありました!

 

www.nkjmkzk.net

 

しかも、たまたま見つけた記事でしたが

私が尊敬するOracleエバンジェリストさんのブログじゃないですかΣ(・□・;)

 

さすがですね〜。同じ事すでに数年前に考えてたなんて感激です。

実際に実現できるかどうかは分かりませんが、私ももう少し調べてみたいと思います。

数年後の自分のために。