「sys」と「sysdba」の違い
Oracle 12cを勉強中なので、タイトルを基に記述。
というか、「sys」と「sysdba」の違いが気になった。
Oracleデータベースを作成すると必ず作られるこの2つ。
何が違うのか。
- sys
データベース管理者アカウント。
データベースの管理情報を格納するデータディクショナリのすべての実表とビューを所有する。
- system
データベース管理者アカウント。
管理情報を表示する表やビュー、Oracleデータベースのオプションやツールで使用する内部的な表やビューを所有する。
うーん。。具体的には結局わからない。
さらに追加
- sys
DBAロール(USER、ALL、DBAの順で大きい)が付与されている。
SYSDBA権限が付与されている。
すべての管理機能を実行可能
- system
DBAロールが付与されている。
さらに以下を除いたすべての管理機能を実行可能
⇒バックアップとリカバリ
⇒データベースアップグレード
これもわかりそうでまだスッキリしない。。
が、とどのつまり、
権限の括り具合としては
sys>>>>>system
ってことだろう。
また、
sys
⇒SYSDBA権限(インスタンス管理権限+データベース内部の管理権限)
というのはデータベースの起動・停止とか
データベースの外側からいじくれる
のに対して、
system
⇒DBA権限(データベース内部の管理権限)
というのはデータベースの起動・停止とかできないけど、
データベースの中側はいじくれるよ
ってことだろうと解釈。
そのため、sqlplusなんかで接続するときは
sysは「as sysdba」をつけなきゃなんない。
なぜかっていうと、
「as sysdba」
が付加されていることによって、
OS認証されているから。
OSグループの「dbaグループ」または「operグループ」(LINUX,UNIXでね)
※Windowsなら「ORA_DBAグループ」または「ORA_OPERグループ」
に所属しているかどうかはデータベース外部でしかわからない。
そんでもって外部で認証できなければ、データベースの起動も停止もできない。
あとOS認証だけでなくて、パスワードファイル認証ってのもあるらしい。
パスワードファイルというファイルが存在していて、それに登録されているか
確認されてSYSDBA権限が付与されるとかなんとか。。
ちなみに
OS認証
⇒CONNECT /AS SYSDBA
パスワードファイル認証
⇒CONNECT ユーザ名/パスワード AS SYSDBA
と入力!
最後に簡単に言うと、
sysが一番強くて
systemはsysより弱いってこと。
あと接続時に「as sysdba」忘れるべからずってこと。
【追記】
sqlplusでは
sqlplus /nologでsqlplusをとりあえず接続できる。
そのあとは
connect ユーザ名/パスワード
または
conn ユーザ名/パスワード
で接続。
disconnectまたはdisconnで接続解除できる。
※quitだとsqlplus自体、終了してしまう。