
- AWS
- Oracle Cloud
- Oracle Database
- Exadata
運用管理の秘訣!バックアップ&監視実践ガイド~Oracle Database@AWS解析白書③
Oracle Databaseの利用において安定稼働を実現するためには『バックアップや監視をどう実施していくのか?』という点の検討は欠かせません。今回は、これらのドキュメントを読み解きながらOracle Database@AWSにおけるバックアップ/監視にフォーカスして情報をお届けいたします。
|
アシストでは、日本オラクル社の協力を得てOracle Database 23aiの検証プログラムを行っています。
第二回目の本記事では、SQLの機能拡張を4つご紹介します。
Index
Oracle Databaseでは19cの次のLong Term Releaseとして23aiが登場しました。
移行先のバージョン検討にあたり、23aiを候補に挙げているお客様も多いのではないでしょうか。
本記事でご紹介する機能拡張にご注目ください!
なお第1弾、SQL関連の新機能については以下からぜひご確認ください。
Oracle Databaseでは従来、関数の実行や計算を行う際にダミー表(DUAL表)に対してSELECT文を実行していました。
23aiではfrom句の指定が必須ではなくなり、次のような記載が可能です。
~21c | select sysdate from dual; |
23ai | select sysdate; – from 句が不要となった |
なお23aiでもDUAL表の明示指定は可能ですので、以前のバージョンと同じ “FROM DUAL”でも実行できます。
DDL(CREATE / DROP / ALTER)を実行する際、IF [ NOT ] EXISTS構文を使用できるようになりました。
-- CREATE 文では、対象オブジェクトが存在しない場合にオブジェクトを
-- 作成する (IF NOT EXISTS) 指定が可能
-- オブジェクトが存在しない場合、オブジェクトを作成
SQL> create table IF NOT EXISTS test_table (col1 number);
表が作成されました。
SQL> select table_name from user_tables;
TABLE_NAME
--------------
TEST_TABLE ★TEST_TABLE が作成される
-- すでにオブジェクトが存在する場合も、SQLはエラーとならない
SQL> create table IF NOT EXISTS test_table (col1 number);
表が作成されました。
SQL> select table_name from user_tables;
TABLE_NAME
---------------
TEST_TABLE ★同名のテーブルが2つ作成されることはない
IF [ NOT ] EXISTS句を指定しておくことで、オブジェクト作成時の「ORA-00955: すでに使用されているオブジェクト名です。」エラーや、オブジェクト削除時の「ORA-00942: 表またはビューが存在しません。」などを回避できます。
同名のオブジェクトの作成、削除を繰り返すような処理を実行している場合、IF [ NOT ] EXISTS句を入れておくことで動作の安定に繋がりそうですね。
これまで、INSERT文1つにつき1行のデータが挿入されるというのが通例でした。
23aiではVALUES句内に複数行分の情報を指定することで、1SQLでも複数行の挿入が可能です。
~21c |
INSERT INTO test_table VALUES ( 1, 'ALICE' ); INSERT INTO test_table VALUES ( 2, 'BECKY' ); INSERT INTO test_table VALUES ( 3, 'CHRIS' ); |
23ai |
INSERT INTO test_table -- 複数行まとめて挿入できる VALUES ( 1, 'ALICE' ), ( 2, 'BECKY' ), ( 3, 'CHRIS' ); |
INSERT文でデータを入れる際に、入力すべきコマンドの量を圧倒的に減らすことができるようになりました。
21cまでは、DMLをパラレル実行した場合、そのトランザクションがCOMMITされるまで対象オブジェクトに対するSELECTやDMLがエラーとなります。
– 19c にてパラレル DML を実行
SQL> alter session enable parallel dml;
セッションが変更されました。
SQL> update /*+ PARALLEL(test_para, degree 2) */ test_para set col1=4;
3行が更新されました。
– パラレルDMLがCOMMIT/ROLLBACKされるまでDMLやSELECTはエラーとなる
SQL> insert into test_para values (5);
insert into test_para values (5)
*
行1でエラーが発生しました。:
ORA-12838: オブジェクトは、パラレルで変更された後は読取り/変更できません。
SQL> select * from test_para;
select * from test_para
*
行1でエラーが発生しました。:
ORA-12838: オブジェクトは、パラレルで変更された後は読取り/変更できません。
23aiではこの機能制限が緩和され、パラレルDMLのCOMMIT前でも対象オブジェクトに対するSELECTやDMLを実行できるようになりました。
– 23ai にてパラレル DML を実行
SQL> alter session enable parallel dml;
セッションが変更されました。
SQL> update /*+ PARALLEL(test_para, degree 2) */ test_para set col1=4;
3行が更新されました。
SQL> insert into test_para values (5); ★エラーにならずに実行できる
1行が作成されました。
SQL> select * from test_para; ★エラーにならずに実行できる
COL1
----------
4
4
4
5
パラレルDMLが非常に使いやすくなりましたので、DMLの処理速度にお困りの方はぜひ機能拡張をご確認ください。
なお、SQLのパラレル実行はEnterprise Editionのみの機能です。
本記事では、23aiで拡張されたSQLの機能を4つご紹介しました。
これから23aiを使用される皆様はぜひ、これらの機能をご活用ください。
なお、1.FROM句なしのSELECTや2.IF [ NOT ] EXISTS、3.表値コンストラクタについて、従来のOracle Databaseと、PostgreSQLやMySQLなどの他RDBMSでコマンドに違いがある部分であることから、移行時にスクリプトの書き換えが発生するケースがありました。
23aiではこのSQL差分が埋められたことで、Oracle Databaseへの移行負荷が緩和されました。
別DBからOracle Databaseへの移行を検討されている皆様も、ぜひ23aiをご検討ください。
今回はSQLの機能拡張に着目してお伝えしましたが、これからもアシスト現場ブログでは23aiの様々な機能についてご紹介してまいります。お楽しみに!
本記事に関連して、他にもOracle Database 23aiの新機能や機能拡張についてご紹介している記事もございます。あわせてご活用ください。
![]() |
---|
2019年に新卒入社。Oracle Databaseの技術部門に配属後、サポートやフィールドエンジニアとして活動。 Oracle Databaseの教育講師も兼任しており、SQLやPL/SQLなど言語系の講義を担当する。
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Oracle Databaseの利用において安定稼働を実現するためには『バックアップや監視をどう実施していくのか?』という点の検討は欠かせません。今回は、これらのドキュメントを読み解きながらOracle Database@AWSにおけるバックアップ/監視にフォーカスして情報をお届けいたします。
前回の記事では、HCXの概要をお伝えしました。今回はOCVSでHCXを利用するための検討ポイントや前提事項を説明します!
今年も「Oracle CloudWorld Tour Tokyo 2025」にアシストが出展しました。ブースには約300名が来訪し、OCI導入や移行後の運用に関する具体的な相談が増え、実践的な議論が交わされました。熱気に溢れたイベントのハイライトを詳しくレポートします。