|
|
|
|
|
|
| ◆ ◆ ◆ Oracle Database 10g release2 で何が変わったか?(その2) ◆ ◆ ◆ |
米国オラクルのPDF資料からrelease2の概略の紹介を続けます
|
|
|
|
|
|
|
|
|
| ◆ ◆ ◆ DML文のエラー・ログ出力句の追加 ◆ ◆ ◆ |
| DML文のエラーがどこで起こり、どのようなエラーだったかをログ・ファイルへ出力できるので開発段階などで便利です |
| ●DML文のLOG ERRORS句指定で、エラー情報をログ・ファイルへ出力します |
構文: ・・ DMLの記述 ・・
LOG ERRORS [ INTO エラーログ・ファイル名 [ ( 式 ) ]
REJECT LIMIT { integer | UNLIMITED }
・DML文(DELEITE,MERGER,INSERT,UPDATE)で、LOG ERRORS句を指定できます
・エラー・ログの出力ファイル名は、DBMS_ERRLOGパッケージで作成します(省略可能)
(デフォルトは、ERR$_で始まり、その後に表名の最初の25文字が付加される)
・REJECT LIMIの値で、DML文を終了またはロールバックする最大エラー数を指定します
デフォルトのREJECT LIMIT値は、Oです
・式には、文字定数、数値定数、TO_CHAR(SYSDATE)等を指定します(式のことをタグと呼んでいます)
(式の値は、個別のDML文の情報で、いつ、どのDML文で起こったかのエラー情報になります)
・以下のような場合に、エラー情報がログ・ファイルへ出力されます
・列のサイズや精度では、格納できない場合
・制約違反の場合(NOT NULL,CHECK,参照整合制約、主キー、一意キー制約)
・トリガー例外の場合
・パーティションのマッピング・エラーの場合
・データ変換エラーの場合
・以下の場合には、ログに出力しません
・遅延制約定義の場合
・宿題:ログ・ファイルへ出力されないエラーには、どのようなものがあるのか?
《例》PDF資料内の例を以下に示します(INSERT文のLOG ERROR句とログ・ファイル形式の例です)
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('raises','errlog'); ←ログ・ファイルの作成
INSERT INTO raises
SELECT employee_id, salary*1.1 FROM employees WHERE commission_pct > 0.2
LOG ERRORS INTO errlog (’my_bad’) REJECT LIMIT 10;
SELECT ORA_ERR_MESG$, ORA_ERR_TAG$, emp_id, sal FROM errlog;
ORA_ERR_MESG$ ORA_ERR_TAG$
EMP_ID SAL
--------------------------- -------------------- ------ -------
ORA-02290: check constraint my_bad
161 7700
(HR.SYS_C004266) violated
《参考》DBMS_ERRLOGパッケージのCREATE_ERROR_LOGプロシージャの構文
DBMS_ERRLOG.CREATE_ERROR_LOG (
dml_table_name IN VARCHAR2,
err_log_table_name IN VARCHAR2 := NULL,
err_log_table_owner IN VARCHAR2 := NULL,
err_log_table_space IN VARCHAR2 := NULL,
skip_unsupported IN BOOLEAN := FALSE);
|
|
|
|
|
|
|
|
|
| ◆ ◆ ◆ 表の列の暗号化 ◆ ◆ ◆ |
| 表の列単位で、簡単に暗号化の指定ができます |
| ●列の内容を暗号化するENCRYPT句が、表の作成または変更機能に追加されました |
構文:CREATE TABLE/ALTER TABLE
・・ 表の定義 ・・・
列名 データ型 [ DEFAULT 式 ]
[ ENCRYPT [ USING ’ 暗号化アルゴリズム ’]
[ IDENTIFIED BY パスワード] [{ SALT | NO SALT}]
・指定できる列は、CHAR,NCHAR,VARCHAR2,NVARCHAR2,NUMBER,DATE,RAW型です
・USING句で、使用する暗号化アルゴリズムを指定します
有効なアルゴリズムは、3DES168,AES128,AES192,AES256です(デフォルトは、AES192)
・SALT/NO SALTで、暗号化するデータを指定できます
SALT.......データにランダムに作成した文字を付加して暗号化します(デフォルト)
NO SALT....データそのものを暗号化します(索引を設定する列には、NO SALTを指定します)
・制限事項:以下のような列を暗号化することはできません
・外部表の列(暗号化には、ORACLE_DATAPUMPを使用します)
・SYSユーザーが所有する表の列
・外部キーの列
・暗号化した列は、以下のビューで確認できます
DBA_ENCRYPTED_COLUMNS
ALL_ENCRYPTED_COLUMNS
USER_ENCRYPTED_COLUMNS
《例》PDF資料内の例を以下に示します
CREATE TABLE hr.admin_emp (
empno NUMBER(5) PRIMARY KEY,
ename VARCHAR2(15) NOT NULL,
ssn NUMBER(9) ENCRYPT,
job VARCHAR2(10),
......
|
| ●表の列に指定した暗号化を解除するには、DECRYPT句を指定します |
構文:ALTER TABLE
・・ 表の定義 ・・・
列名 データ型 [ DEFAULT 式 ] DECRYPT |
|
|
|
|
|
|
|
|
| ◆ ◆ ◆ 表の暗号化のために必要な操作 ◆ ◆ ◆ |
| Oracle Wallet Managerで行っていた操作をSQL文レベルで行います。Oracle Advanced
Securityでネットワークを流れるデータを暗号化できますが、データベース内部においても暗号化が必要か(暗号化バックアップについては後述します) |
| ●暗号化のための主キーを作成します |
構文:ALTER SYSTEM
SET ENCRYPTION KEY
[ 'certificate_id’] IDENTIFIED BY "パスワード";
・表の列の暗号化は、キー・ベースで制御します
・キーは、暗号化キーとしてOracle walletで管理します
・PKIベースの認証を行っている場合には、certificate_IDとして認証IDを指定します(デフォルトはなし)
・certificate_IDは、WALLETがオープン状態の時、V$WALLETで調べることができます
《例》PDF資料内の例を以下に示します
ALTER SYSTEM SET ENCRYPTION KEY "j23lm781098dhb345sm" IDENTIFIED BY "p3812dH9E";
|
| ●表の暗号化した列へのアクセスを許可します(暗号化WALLETのオープン) |
構文:ALTER SYSTEM
SET ENCRYPTION WALLET OPEN IDENTIFIED
BY "パスワード";
・オープンするとデータベースが停止するまで、暗号化のための暗号化キーにアクセスできます
・暗号化キーは、Oracle walletで管理します
・再起動またはwalletをCLOSEした場合には、再度walletをオープンする必要があります |
| ●表の暗号化した列へのアクセスを禁じます(暗号化WALLETのクローズ) |
構文:ALTER SYSTEM
SET ENCRYPTION WALLET CLOSE;
・表の暗号化した列にアクセスできなくなります |
|
|
|
|
|
|
|
|
| ◆ ◆ ◆ 一時ファイル名の変更 ◆ ◆ ◆ |
| ALTER DATABASE文で、データ・ファイルやREDOログ・ファイルのメンバーの変更だけでなく、一時ファイル名を変更できるようになりました |
| ●ALTER DATABASE文のRENAME句で、一時ファイル名を変更できます |
構文:ALTER DATABASE [データベース名]
RENAME FILE '旧ファイル名' TO '新ファイル名';
・ALTER DATABASE文で、一時ファイルの名前を変更できます
・一時ファイルの名前を変更するには、データベースがMOUNT状態時で行います
・データベースがOPEN状態の場合、一時ファイルをオフライン状態にしてファイル名を変更します
・名前の変更は、データベースの制御ファイルに対する変更で、実際のOSファイルの移動または変更は、
この命令では行いません(実際のOSファイルの移動または変更するコマンドを行う必要があります)
《参考》ALTER DATABASE文のRENAME句では、データ・ファイル、REDOログ・ファイル、一時ファイルの名前を変更することができます。変更は、MOUNT状態またはOPEN状態でファイルをOFFLINEにして行います
但し、REDOログ・ファイルは、MOUNT状態でのみ変更可能です
・
《例》PDF資料内の例を以下に示します(データベースは、OPEN状態なので、ファイルをOFFLINEで操作します)
ALTER DATABASE TEMPFILE 'temp02.dbf' OFFLINE;
ALTER DATABASE RENAME FILE 'temp02.dbf' TO 'temp03.dbf';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ■ご質問およびお問い合わせは、こちらへ |
|
|
| Copyright(C) 2002-2005 めざせオラクルマスター. All rights reserved. |
|
|
|
|
|
|
|