Oracle DatabaseでVIEW作成時に「ORA-01031: 権限が不足しています」エラーが発生したときの対処法
Oracle DatabaseでVIEWを作成しようとしたら、
「ORA-01031: 権限が不足しています」エラーが発生してしまいました。
実行ユーザーはテーブルの所有者なのに、何故?となってしまい悩んでしまったときの、
対処方法を紹介します。
OracleでVIEWを作成しようとしたときに「ORA-01031: 権限が不足しています」エラーになったときの対処方法です
本記事では、下記の内容を解説します。
この記事を書いている私は、某SIerに勤務しながら、WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。 私が実機で試したコマンドや画像を載せて書いています。 記事の信頼性担保に繋がると思います。
「ORA-01031: 権限が不足しています」エラー発生時の状態
実行したSQLとエラーメッセージ
自信が所有しているTABLEに対して、日本語名のVIEW表を作成しようとしました。
ORA-01031: 権限が不足しています
[FINDTUSER01@FINDTPDB] SQL>create or replace view TCD002科目マスタ ( 2 科目大分類番号, 3 科目大分類名, 4 科目中分類番号, 5 科目中分類名, 6 科目小分類番号, 7 科目小分類名, 8 登録日時, 9 登録者, 10 更新日時, 11 更新者) as select 12 KAMOKUDAINO, 13 KAMOKUDAINAME, 14 KAMOKUTYUNO, 15 KAMOKUTYUNAME, 16 KAMOKUSYONO, 17 KAMOKUSYONAME, 18 INSERT_DATE, 19 INSERT_USER, 20 UPDATE_DATE, 21 UPDATE_USER from 22 TCD002KAMOKUMST 23 / create or replace view TCD002科目マスタ ( * 行1でエラーが発生しました。: ORA-01031: 権限が不足しています
実行ユーザーの権限・ロールの確認
[FINDTUSER01@FINDTPDB] SQL>select USERNAME, PRIVILEGE, ADMIN_OPTION from SYS.USER_SYS_PRIVS; USERNAME PRIVILEGE ADM ------------- -------------------- --- FINDTUSER01 UNLIMITED TABLESPACE NO FINDTUSER01 CREATE SESSION NO
[FINDTUSER01@FINDTPDB] SQL>select USERNAME, GRANTED_ROLE, ADMIN_OPTION from SYS.USER_ROLE_PRIVS; USERNAME GRANTED_ROLE ADMIN_OPTION ------------- -------------------- ------------ FINDTUSER01 RESOURCE NO
[FINDTUSER01@FINDTPDB] SQL>select ROLE, PRIVILEGE, ADMIN_OPTION from SYS.ROLE_SYS_PRIVS; ROLE PRIVILEGE ADMIN_OPTION ---------- -------------------- ------------- RESOURCE CREATE SEQUENCE NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE TABLE NO RESOURCE CREATE TRIGGER NO RESOURCE CREATE TYPE NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE INDEXTYPE NO 8行が選択されました。
RESOURCEロール権限がついているので、VIEWも作成できると思っていたのですが、
RESOURCEロールには「CREATE VIEW」権限が入っていませんでした
権限の追加
PDBのローカル管理者ユーザーで、「CREATE VIEW」権限をユーザーに追加します。
grant CREATE VIEW to <ユーザー名>
[FINDTADM@FINDTPDB] SQL>grant CREATE VIEW to findtuser01 2 / 権限付与が成功しました。
[FINDTUSER01@FINDTPDB] SQL>select USERNAME, PRIVILEGE, ADMIN_OPTION from SYS.USER_SYS_PRIVS; USERNAME PRIVILEGE ADMIN_OPTION ------------ -------------------- ------------- FINDTUSER01 UNLIMITED TABLESPACE NO FINDTUSER01 CREATE SESSION NO FINDTUSER01 CREATE VIEW NO
権限追加後に再度、VIEW作成
権限追加後はVIEW作成に成功しました!
[FINDTUSER01@FINDTPDB] SQL>create or replace view TCD002科目マスタ ( 2 科目大分類番号, 3 科目大分類名, 4 科目中分類番号, 5 科目中分類名, 6 科目小分類番号, 7 科目小分類名, 8 登録日時, 9 登録者, 10 更新日時, 11 更新者) as select 12 KAMOKUDAINO, 13 KAMOKUDAINAME, 14 KAMOKUTYUNO, 15 KAMOKUTYUNAME, 16 KAMOKUSYONO, 17 KAMOKUSYONAME, 18 INSERT_DATE, 19 INSERT_USER, 20 UPDATE_DATE, 21 UPDATE_USER from 22 TCD002KAMOKUMST 23 / ビューが作成されました。
参考にしたサイト
オラクルデータベースのおススメの勉強法の紹介
私は、某SIerに勤務しながら、入社以来10年以上、オラクルデータベースを使用したシステムに関わる仕事をしています。
オラクルデータベースについて、仕事場以外でも勉強をしたい、おススメの勉強法を知りたい、と考えている方のために、
①おすすめの書籍と、②おすすめのオンライン学習サイト、
を紹介します。
働きながら勉強するための、おススメの書籍とオンラインで学習できるサイトの紹介です
オラクルデータベースの勉強ができるおススメ書籍
朝の通勤時や帰宅時の電車の中や、社外打合せへの移動中などに勉強するなら、やはり書籍が一番だと思います。
Oracleの基本 ~データベース入門から設計/運用の初歩まで
技術エキスパートとして認定されたOracle ACEの渡部亮太さんの書かれた本です。
https://twitter.com/wrcsus4twitter.com
本書では、Oracle初心者/新人エンジニアが押さえておくべき知識とスキルを、現場で活躍するOracleエンジニアたちが、わかりやすく丁寧に解説。
Oracleの使い方はもちろん、データベースの基礎知識から、データ操作のためのSQL、テーブル設計、データベース運用/管理の基礎までしっかり押さえ、実務で使える入門スキルを身につけられます。
Oracleを学びたいすべての人に最適な入門書です。
Oracleの基本 ~データベース入門から設計/運用の初歩まで |
プロとしてのOracleアーキテクチャ入門【第2版】
もう1冊、こちらもOracle ACEの渡部亮太さんの書かれた本です。
本書は、Oracle Databaseのアーキテクチャ(内部構成)について解説した入門書です。 本書の内容を理解することで「Oracleの動作の仕組み」を本質的に理解することができます。 これからOracleを使用する初心者の方から、実際にシステムの開発や運用管理を行っている DBエンジニアやシステムエンジニアの方を対象としています。
プロとしてのOracleアーキテクチャ入門【第2版】(12c、11g、10g 対応) 図解と実例解説で学ぶ、データベースの仕組み (Oracle現場主義) |