「DBA」タグアーカイブ

Oracle「ORA-28001: パスワードの有効期限が切れています」対応手順

Oracle Database を利用していると、ログイン時に
「ORA-28001: パスワードの有効期限が切れています」
というエラーに遭遇することがあります。

これは、データベースのセキュリティ機能として「パスワード有効期限」が設定されており、期限を過ぎたユーザがログインできなくなるために発生します。

この場合のエラーの原因と具体的な対応手順を解説します。


エラーの原因

Oracle データベースでは、ユーザごとに割り当てられた プロファイル(Profile) により、パスワード有効期限が管理されています。

典型的な原因は以下の通りです。

  • デフォルトの DEFAULT プロファイルで PASSWORD_LIFE_TIME が 180日 などに設定されている

  • 長期間パスワードを変更しておらず、期限切れとなった

  • 運用上、期限管理を無効化していなかった


対応手順

1. SQL*Plus などからログインを試みる

期限切れの場合、通常のユーザではログインできません。
DBA 権限を持つユーザ(例: sys as sysdba)でログインする必要があります。


2. パスワードをリセットする

対象ユーザのパスワードを変更します。


例:

これでユーザは再びログインできるようになります。


3. パスワード有効期限を確認する

どのプロファイルが割り当てられているかを確認します。

次に、そのプロファイルの設定を確認します。



4. パスワード期限を延長・無効化する(必要に応じて)

運用上パスワード期限を無期限にしたい場合は、以下のように設定します。


特定のユーザ専用プロファイルを作成し、そのみに適用する運用もおすすめです。

注意点

  • セキュリティポリシー上、期限を無期限にするのは推奨されない場合があります。

  • 運用規定に従い、定期的に強度の高いパスワードへ更新しましょう。

  • 本番環境では、DBA以外のアカウントで誤って変更しないよう注意が必要です。


まとめ

「ORA-28001: パスワードの有効期限が切れています」は、パスワードの期限切れによるエラーです。

  • DBA権限でログイン

  • パスワード変更

  • プロファイル確認と調整

この流れで対応すれば、迅速に復旧できます。運用に合わせてパスワード有効期限の設定を見直すことも重要です。

Oracle:SYSDBA権限とSYSOPER権限の違いと使い分け

はじめに

Oracleデータベースの運用において、管理者権限の使い分けは非常に重要です。特に「SYSDBA」と「SYSOPER」はどちらも特別な権限として知られていますが、役割や利用シーンは異なります。本記事では、それぞれの権限の違いと、実務での適切な使い分けについて解説します。


SYSDBA権限とは

SYSDBAは、Oracleデータベースにおける最上位の管理権限です。
SYSDBAで接続すると、ユーザーは自動的にSYSスキーマとして認識され、あらゆる管理操作が可能になります。

主な操作内容

  • データベースの起動・停止(STARTUP / SHUTDOWN)

  • データベースの作成(CREATE DATABASE)

  • 完全なリカバリやバックアップ操作

  • ユーザー作成や権限付与など、すべての管理作業

  • データファイルや制御ファイルの操作

特徴:Oracle全体のフルコントロールが可能であるため、通常はDBA(データベース管理者)専用で使用されます。


SYSOPER権限とは

SYSOPERは、SYSDBAほどの強力な権限は持ちませんが、運用担当者が日常的に行う基本的な管理作業を実行できます。

主な操作内容

  • データベースの起動・停止(STARTUP / SHUTDOWN)

  • インスタンスのバックアップ・リカバリ(ただし制限あり)

  • ログファイルの管理(アーカイブログ切り替えなど)

  • データベースの作成やユーザー管理は不可

特徴
SYSOPERでは、データの中身に直接触れることはできません。あくまで運用作業の補助権限に近い立ち位置です。


SYSDBAとSYSOPERの違い(比較表)

項目SYSDBASYSOPER
データベースの起動・停止
データベース作成不可
ユーザー/権限管理不可
完全リカバリ一部可(制限あり)
アーカイブログ切り替え
データファイル/制御ファイル操作不可
データの参照・変更不可
想定される利用者DBA(管理者)運用担当者

使い分けのポイント

  • SYSDBA

    • データベースの構築、スキーマ管理、リカバリなどフル機能が必要なとき

    • DBA専用アカウントとして限定的に使用することが推奨される

  • SYSOPER

    • 運用担当者が日常業務(起動・停止、バックアップ実行など)を行うとき

    • セキュリティを強化しつつ運用を分担する際に有効


まとめ

Oracleの管理権限であるSYSDBAとSYSOPERは、似ているようで明確な役割分担があります。

  • SYSDBA = フル権限、構築・管理・リカバリの責任者用

  • SYSOPER = 制限付き権限、日常運用担当者用

セキュリティと役割分担を意識して適切に使い分けることが、安定したデータベース運用につながります。

Oracle:管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワード

Oracle Databaseをインストールすると自動的に作成される管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワードについてメモしておきます。

SYSユーザーのデフォルトパスワード:change_on_install

  • sysユーザーでのログイン例です。

SYSTEMユーザーのデフォルトパスワード:manager

  • systemユーザーのログイン例です。

Oracle:管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワード

ユーザー初期パスワード例備考
SYSchange_on_installデータディクショナリを管理する最上位アカウント
SYSTEMmanager一般的な管理作業に使用可能な補助アカウント

セキュリティ上の注意点

変更必須

デフォルトのままでは外部からの攻撃に悪用されやすいため、必ずパスワード変更を行うこと。

最近の Oracle バージョンでの違い

  • 11g 以降:インストール時にユーザーが必ずパスワードを指定。

  • 12c 以降:パスワードポリシーが強化され、英数字・記号混在の複雑なものを要求。

  • 19c/21c:初期アカウントはロック状態になっている場合も多い。

Oracle:ユーザー作成時に「ORA-65096」エラーが出た場合の原因と対応方法

Oracleのインストール後にSQL*Plusなどでユーザー作成しようとした際、「ORA-65096」エラーが発生した場合の原因と対応方法についてメモしておきます。

「ORA-65096:共通ユーザーまたはロール名が無効です」の原因

  • ルートコンテナにローカルユーザーを作成しようとした場合に発生するエラーとなります。
    ルートコンテナには共有ユーザー(common user) と呼ばれる特殊なユーザーしか作成することはできません。
    Oracle 11gまでと違いOracle 12c以降からは一つのインスタンスには一つのコンテナ・データベース(CDB)と、プラガブル・データベース(PDB)と呼ばれる子DBが存在しています。sysなどのユーザーでログイン直後はコンテナ・データベース(CDB)に接続されている状態となっているため、そのままローカルユーザーを作成しようとしてもエラーが発生してしまうということになります。

「ORA-65096:共通ユーザーまたはロール名が無効です」の対処方法

原因が分かってしまえば対応はシンプルです。接続先がコンテナ・データベース(CDB)であるのがまずいのであればプラガブル・データベース(PDB)に変更してしまえばいいだけです。

  1. まずは「show con_name;」で現在接続されているデータベースを確認します。
  2. 次に「select name, open_mode from v$pdbs;」でPDBの名前と現在のOPEN_MODEを確認します。
  3. PDBの名前が「ORCLPDB」というのがわかったのでデータベースの接続先を「ORCLPDB」へ変更します。
  4. もう一度「show con_name;」を実行して接続先が変更されていることを確認します。
  5. 接続先がPDBへ変更されたのでもう一度ユーザー作成を実行すると正常に実行されます。

 

🔍補足:ORA-65096エラーの仕組みと注意点

ORA-65096: invalid common user or role name は、マルチテナント構成の Oracle Database(12c以降) において、
ルートコンテナ(CDB$ROOT)上でローカルユーザーを作成しようとした場合に発生するエラーです。
以下のポイントを押さえておくと、再発を防ぎやすくなります。

観点 内容
エラーの本質 共通ユーザーとローカルユーザーの区別を誤ったことによる構文エラー
共通ユーザー名の規則 C## または c## のプレフィックスが必須(COMMON_USER_PREFIXパラメータで変更可)
発生条件 CDB$ROOT に接続したままユーザーを作成/命名規則を満たさない場合
解決策 ALTER SESSION SET CONTAINER = <PDB名> でPDBに切り替えてから CREATE USER を実行する
参考 SHOW CON_NAME; で現在の接続先(コンテナ)を確認可能

✅ 具体例:安全なユーザー作成手順

もしルートコンテナ側で共通ユーザーを作成したい場合は、以下のようにします。


💡補足メモ

  • SHOW PDBS; で現在のPDB一覧を確認可能。OPEN_MODEREAD WRITE でなければユーザー作成はできません。

  • バージョン19c以降では、CDB構成がデフォルトのため、PDB接続の意識が必須 です。

  • TNS接続文字列(SERVICE_NAME)が CDB を指していると、意図せずルート側に接続してしまうことがあります。