GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

Oracle RAC環境での oracle バイナリの権限(SGID oracle:asmadmin)

概要

ASM使用環境下でRMANでバックアップした場合などにバックアップセットのOSグループがasmadminグループとなります。
※oracleユーザーの所属するグループは、asmadminグループには属していない

# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54327(asmdba)
# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54330(racdba),54327(asmdba),54328(asmoper),54329(asmadmin)

原因

結論として、バックアップファイルのパーミッションが「oracle:asmadmin」となるのは"GI(ASM)環境"の仕様動作となります。

11.2 以降のRAC環境ででGrid InfrastructureとDatabaseを別々のOSユーザ(例:oracle/grid)でインストールしている場合、
relink処理直後のデータベースのoracleバイナリにはASMにアクセスするための権限が設定されていません。

DBCAでデータベースを作成した場合やsrvctlでデータベースを起動すると、
内部で上述のASMへのアクセス権限のあるグループで起動するようoracleバイナリの権限が設定されます(sビット)。
そのため起動にsrvctl使用していればrelinkが実行され、手動でもDBCAでもsビットが立つ動作です。

なお、create database文を直接実行してのデータベース作成直後は、追加で下記スクリプトを実行する必要がある。

  例
  ------------------------------
  # $GRID_HOME/bin/setasmgidwrap o=$ORACLE_HOME/bin/oracle
  ------------------------------
  ※上記の $GRID_HOME は Grid Infrastructure の $ORACLE_HOME
    $ORACLE_HOME はデータベースの $ORACLE_HOME を指しています

上記を実行することで次回relinkなどで権限が変更されるまでデータベースが ASM にアクセス可能な状態で起動される。

SGIDについて(Linux)

ファイルにSGIDを付与した場合、そのコマンドが所有グループの権限で実行される
Set Group ID
- 「SGID」とは「Set Group ID」の略。
- グループに対して設定される特殊パーミッション。
ポイント
- ファイルにSGIDが適応されていた場合、そのグループの権限でファイルが実行される
- ディレクトリにSGIDを指定すると、ディレクトリ内部で作成されたファイルは全てディレクトリのSGIDで指定したグループが割り振られる

動作確認

  • oracleユーザーでRMAN接続し、バックアップ
$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on 火 112 10:46:58 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
ターゲット・データベース: ORCL (DBID=1587538681)に接続されました
RMAN> backup current controlfile format '/home/oracle/work/backup/%U';
backupを21-01-12で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=309 インスタンス=orcl1 デバイス・タイプ=DISK
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
現行の制御ファイルをバックアップ・セットに組み込んでいます
チャネルORA_DISK_1: ピース1 (21-01-12)を起動します
チャネルORA_DISK_1: ピース1 (21-01-12)が完了しました
ピース・ハンドル=/home/oracle/work/backup/03vjs2tp_1_1 タグ=TAG20210112T104720 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを21-01-12で終了しました
Control File and SPFILE Autobackupを21-01-05で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.3.0/dbhome_1/dbs/c-1587538681-20210112-00 コメント=NONE
Control File and SPFILE Autobackupを21-01-12で終了しました
RMAN> exit
Recovery Managerが完了しました。
  • バックアップファイルのパーミッション確認(oracle:asmadmin)
$ pwd
/home/oracle/work/backup
$ ls -la
合計 19328
drwxr-xr-x 2 oracle oinstall       26  112 10:47 .
drwxr-xr-x 3 oracle oinstall       20  112 10:46 ..
-rw-r----- 1 oracle asmadmin 19791872  112 10:47 03vjs2tp_1_1 <---★
  • ファイルを別ディレクトリにコピーし、再度パーミッション確認(oracle:oinstall)
$ ls -la
合計 19328
drwxr-xr-x 3 oracle oinstall       40  112 10:48 .
drwxr-xr-x 3 oracle oinstall       17  112 10:46 ..
-rw-r----- 1 oracle oinstall 19791872  112 10:48 03vjs2tp_1_1 <---★
drwxr-xr-x 2 oracle oinstall       26  112 10:47 backup
  • oracleバイナリから実行・出力されたファイルは以下のUID/GID
 $ ls -la $ORACLE_HOME/bin/oracle*
  -rwsr-s--x 1 oracle asmadmin 441253072 124 18:44 /u01/app/oracle/product/19.3.0/dbhome_1/bin/oracle

oracleバイナリをasmadminグループの権限で実行しています。
※$ORACLE_HOME/bin/oracleのoracle binaryがasmadminグループに所属するため、oracle ユーザで取得したRMANバックアップファイルの所属グループがasmadminとなる。

スポンサーリンク