Database Support Blog

  • 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®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Cloud
  • Oracle Database
2024.12.02

OCIでGPUインスタンスを構築してみた

OCIで提供されている生成AIサービスとGPUインスタンスを前回の記事「生成AIにGPUが適している理由」で紹介しました。本記事では、GPUインスタンスをデプロイして、インスタンス上でLLM(大規模言語モデル)の動作環境を構築する方法をご紹介します。

  • Oracle Cloud
  • Oracle Database
2024.11.15

Oracle Cloud VMware SolutionにおけるVMware HCXとは?

前回の記事でお伝えしたとおり、OCVSを構築するとVMwareの複数の機能が利用可能です。 それらの機能の中で、今回はHCXの概要や具体的な機能、OCVSでHCXを利用するメリットなどをお伝えします!

  • Oracle Database
  • Oracle Cloud
2024.11.05

Oracle Database 23ai新機能!メモリーを有効活用する統合メモリー管理

2024年5月にOracle Cloud環境にて、先行してOracle DB 23aiがリリースされました。 Oracle Base Database ServiceにおけるOracle Database 23aiの検証結果を報告します。 今回は「統合メモリー管理」をテーマにお伝えします。

ページの先頭へ戻る