概要
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 火 1月 12 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 1月 12 10:47 . drwxr-xr-x 3 oracle oinstall 20 1月 12 10:46 .. -rw-r----- 1 oracle asmadmin 19791872 1月 12 10:47 03vjs2tp_1_1 <---★
- ファイルを別ディレクトリにコピーし、再度パーミッション確認(oracle:oinstall)
$ ls -la 合計 19328 drwxr-xr-x 3 oracle oinstall 40 1月 12 10:48 . drwxr-xr-x 3 oracle oinstall 17 1月 12 10:46 .. -rw-r----- 1 oracle oinstall 19791872 1月 12 10:48 03vjs2tp_1_1 <---★ drwxr-xr-x 2 oracle oinstall 26 1月 12 10:47 backup
- oracleバイナリから実行・出力されたファイルは以下のUID/GID
$ ls -la $ORACLE_HOME/bin/oracle* -rwsr-s--x 1 oracle asmadmin 441253072 12月 4 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となる。