Database Support Blog

Database Support Blog>【Oracle Database】18cで追加された手軽に使える便利な新機能3つ

  • Oracle Database
2018.08.08

【Oracle Database】18cで追加された手軽に使える便利な新機能3つ

【Oracle Database】18cで追加された手軽に使える便利な新機能3つ

Oracle Database 18cの 新機能ガイド をみると複数の機能が追加されています。今回はその中でもDBA観点で簡単に使えて便利そうな機能を3つご紹介します。

ALTER SYSTEM CANCEL SQL(SQLの中断)

Oracle Database 12cR2までのリリースにおいて、高負荷なSQLを実行しているセッションへの処理を止めるにはALTER SYSTEM KILL SESSIONでセッションを終了させる方法が一般的でした。
 
Oracle Database 18cからは、次の構文でセッションを終了させずに処理実行中のSQLをキャンセルさせることができるようになっています。
 

 
 --処理の停止
 SQL> ALTER SYSTEM CANCEL SQL 'SID,SERIAL#,@INSTANCE_ID,SQL_ID';
 

 
セッション(SID,SERIAL#,SQL_ID)の特定にはV$SESSIONなどを利用します。INSTANCE_NUMBERは対象セッションが存在するインスタンスのV$INSTANCEから確認可能ですが、シングルインスタンスであれば"1"です。
 
SQLの実行を中断させられたセッションは「ORA-01013: user requested cancel of current operation」のエラーを受けますが、その後も処理を続けることが可能です。

 
 ##SYSユーザから中断コマンドの実行
 SQL> ALTER SYSTEM CANCEL SQL '275,4806,@1,6x6uf7ydy8gpa';
 
 
 ##対象セッションの処理はORA-01013で終了するもセッションは切れていないため後続の処理は実行可能
 SQL> select d1.text from dba_source d1, dba_source d2 order by d1.line;
 select d1.text from dba_source d1, dba_source d2 order by d1.line
                     *
 ERROR at line 1:
 ORA-01013: user requested cancel of current operation
 
 SQL> select count(*) from test;
 
   COUNT(*)
 ----------
          1
 

 

Oracle® Database SQL言語リファレンス 18cバージョン 18.1
12 SQL文: ALTER SYNONYMからCOMMENT
ALTER SYSTEM

Data Pump IMPORTのエラー発生オブジェクトのスキップ

IMPDP実行時にDATA_OPTIONS=CONTINUE_LOAD_ON_FORMAT_ERRORを指定することで、エラーが発生したオブジェクトのインポートをスキップして続行できるようになりました。
 
Oracle® Database データベース・ユーティリティ 18c
第I部 Oracle Data Pump
データ・ポンプ・インポート
インポート・ユーティリティのコマンドライン・モードで使用可能なパラメータ
 
従来のリリースではData Pumpを利用した複数テーブル、大規模データの移行の際にダンプファイルに含まれているテーブルが1つでも破損していた場合は、他の表が無事でもIMPDPができませんでした。
 
Data Pumpを利用したデータの移行中にエラーを受け、長時間かかるEXPDPからのやり直しを経験したことがあるデータベース管理者の方もいらっしゃるかと思います。
 
本オプションが追加されたことで、万が一ダンプファイルが破損していたとしても、後ほどエラーを受けたオブジェクトのみ個別にEXPDP/IMPDPするという選択もできそうです。※具体的にどのエラーを回避できるかは分かり次第追記します。

 
 ##コマンド実行例
 impdp system/oracle@pdb1 full=y directory=data_pump_dir dumpfile=expfull.dmp data_options=continue_load_on_format_error
 

スキーマ限定アカウントの作成

CREATE USER文を実行する際にNO AUTHENTICATION句を指定することで、オブジェクトを所有することを目的としたログインできないアカウントを作成することができるようになりました。
 

 
 SQL> CREATE USER user_name NO AUTHENTICATION;
 

Oracle Databaseではスキーマとユーザは分けられておらず、スキーマを用意するためには不要であってもユーザを作成する必要があります。従来のリリースでは、オブジェクトのオーナーであるユーザでのログインを抑制するにはアカウントロックする必要がありました
 
スキーマ限定アカウントでは、ログインを試みてもORA-01017エラーとなります。※アカウントをロックしている場合だとORA-28000: The account is locked エラーになります。
 
また、新規ユーザ作成(CREATE USER)時のみではなく、次のようにALTER USER文で既存のユーザをスキーマ限定アカウントに変更することも可能です。

 
 ##ユーザ'SCHEMA_ONLY'は表を保持
 SQL> conn schema_only/test@pdb1
 Connected.
 SQL> select * from t;
 
 C1
 ----------
 TEST DATA
 
 ##スキーマ限定アカウントに変更
 SQL> conn system/oracle@pdb1
 
 SQL> alter user schema_only no authentication;
 
 User altered.
 
 
 ##参照権限のあるユーザからは表は引き続き参照可能
 SQL> conn appuser/test@pdb1
 SQL> select * from schema_only.t;
 
 C1
 ----------
 TEST DATA
 
 ##ログインはORA-01017で失敗
 SQL> conn schema_only/test@pdb1
 ERROR:
 ORA-01017: invalid username/password; logon denied
 
 
 Warning: You are no longer connected to ORACLE.
 
 
 ##パスワードを再設定するとログイン可能
 SQL> conn system/oracle@pdb1
 SQL> alter user schema_only identified by test;
 
 User altered.
 
 SQL> conn schema_only/test@pdb1
 Connected.
 

 
スキーマ限定アカウントには幾つか制限がありますので、作成前に必ずマニュアルも併せてご確認ください。
 

Oracle® Database セキュリティ・ガイド 18c
3 認証の構成
スキーマ限定アカウント

まとめ

今回はEditionに依存しない、簡単に使えそうな機能をご紹介させていただきました。新機能ガイドからは色々な機能が追加されていることがわかりますが、ライセンス情報ユーザーマニュアルと併せて確認するとCloudやEngineered Systemでのみ利用可能な機能も少なくありません。
 
参考: Oracle® Database ライセンス情報ユーザー・マニュアル 18c

18cへのバージョンアップを検討される際は利用したい機能が移行予定のライセンスで使えるか?についても確認をしておきましょう。

--変更履歴
2018/10/11 ALTER SYSTEM CANCEL SQLの例文誤りを修正

筆者情報

大野 高志

サービス事業部 付加価値創造部 カスタマーエンゲージメント・プランナー

2007年アシスト入社。Oracle Databaseのサポート業務を経て、サポートセンターに蓄積されたナレッジを使用したサービスの立ち上げに従事。「 アシストの超サポ 」を広め、カスタマーエンゲージメントの構築を実現するための活動を行っている。


データベースのサポートならアシスト

関連している記事

  • Oracle Database
2018.09.11

【Oracle Database】実行計画の固定化方法まとめ

実行計画を固定する方法を4つご紹介します。Oracle Database 18cからStandard Editionでも実行計画固定のためにSQL Plan Management(SPM)の一部機能が利用できるようになりました。

  • Oracle Database
2018.07.31

【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

Oracle Database 18cでは統合監査の情報をData Pumpを使ってEXPORT/IMPORTできるようになっています。注意事項と併せてご紹介します。

  • Oracle Database
2018.07.12

【Oracle Database Cloud】10gR2以下のJDBC接続でORA-12650が発生する原因と対処

オンプレミス環境からDBCSへの移行後、JDBCによるOracle Databaseへの接続でORA-12650エラーが発生する原因と対処方法を紹介します。

アシストサポートセンターのご紹介

ページの先頭へ戻る