質問編集履歴

11

質問内容更新

2018/11/16 00:46

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -397,3 +397,107 @@
397
397
 
398
398
 
399
399
  ```
400
+
401
+
402
+
403
+ ※2018/11/16トリガー文
404
+
405
+
406
+
407
+ ```ここに言語を入力
408
+
409
+ create or replace trigger embulk_tr
410
+
411
+
412
+
413
+ after insert on INPUT_TEST for each row
414
+
415
+
416
+
417
+ DECLARE pragma autonomous_transaction;
418
+
419
+
420
+
421
+ begin
422
+
423
+
424
+
425
+ dbms_output.put_line('-------------------------');
426
+
427
+ dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
428
+
429
+
430
+
431
+ IF INSERTING THEN
432
+
433
+ DBMS_SCHEDULER.CREATE_JOB (
434
+
435
+ JOB_NAME => 'Embulk_Test',
436
+
437
+ JOB_TYPE => 'EXECUTABLE',
438
+
439
+ -- JOB_ACTION => '"C:\WINDOWS\system32\cmd.exe" /q /c "C:\Users\yazaki\Desktop\embulk\test.bat"',
440
+
441
+ JOB_ACTION => 'C:\WINDOWS\system32\cmd.exe',
442
+
443
+ number_of_arguments => 3,
444
+
445
+ start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'),
446
+
447
+ end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'),
448
+
449
+ repeat_interval => 'FREQ=SECONDLY;interval=300',
450
+
451
+ auto_drop => FALSE
452
+
453
+ );
454
+
455
+
456
+
457
+ DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',1, '/q');
458
+
459
+ DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',2, '/c');
460
+
461
+ DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',3, 'C:\Users\yazaki\Desktop\embulk\test.bat');
462
+
463
+ DBMS_SCHEDULER.ENABLE('Embulk_Test');
464
+
465
+ -- DBMS_SCHEDULER.RUN_JOB (
466
+
467
+ -- JOB_NAME => 'Embulk_Test',
468
+
469
+ -- USE_CURRENT_SESSION => FALSE
470
+
471
+ -- );
472
+
473
+
474
+
475
+ END IF;
476
+
477
+
478
+
479
+ dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
480
+
481
+ dbms_output.put_line('-------------------------');
482
+
483
+
484
+
485
+ end;
486
+
487
+ /
488
+
489
+
490
+
491
+
492
+
493
+ ```
494
+
495
+
496
+
497
+ ※batファイル
498
+
499
+ ```ここに言語を入力
500
+
501
+ dir >> C:\Users\yazaki\Desktop\embulk\test.txt
502
+
503
+ ```

10

質問内容の更新

2018/11/16 00:46

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -338,7 +338,7 @@
338
338
 
339
339
  JOB_TYPE => 'EXECUTABLE',
340
340
 
341
- JOB_ACTION => 'c:\WINDOWS\system32\cmd.exe',
341
+ JOB_ACTION => 'C:\WINDOWS\system32\cmd.exe',
342
342
 
343
343
  number_of_arguments => 3,
344
344
 
@@ -348,9 +348,7 @@
348
348
 
349
349
  repeat_interval => 'FREQ=SECONDLY;interval=1',
350
350
 
351
- auto_drop => FALSE,
351
+ auto_drop => FALSE
352
-
353
- enabled => TRUE
354
352
 
355
353
  );
356
354
 
@@ -362,6 +360,8 @@
362
360
 
363
361
  DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',3, 'C:\Users\yazaki\Desktop\embulk\test.bat');
364
362
 
363
+ DBMS_SCHEDULER.ENABLE('Embulk_Test');
364
+
365
365
  END IF;
366
366
 
367
367
 
@@ -382,28 +382,18 @@
382
382
 
383
383
 
384
384
 
385
-
385
+ ※アラートログ
386
-
387
-
388
-
386
+
387
+
388
+
389
- SQL> insert into INPUT_TEST (ID,NUM,STR) values ('22226', '2849', 'chr1');
389
+ 2018-11-15T10:59:32.125731+09:00
390
-
390
+
391
- insert into INPUT_TEST (ID,NUM,STR) values ('22226', '2849', 'chr1')
391
+ Errors in file C:\USERS\YAZAKI\DESKTOP\EMBULKDB\diag\rdbms\orcl\orcl\trace\orcl_j001_4908.trc:
392
-
393
- *
392
+
394
-
395
- 行1でエラーが発生しました。:
396
-
397
- ORA-27457: 引数1(ジョブ"SYSTEM"."EMBULK_TEST")に値ありせん
393
+ ORA-12012: ジョブ"SYSTEM"."EMBULK_TEST"の自動実行エラー発生しした
398
-
399
- ORA-06512: "SYS.DBMS_ISCHED", 行175
394
+
400
-
401
- ORA-06512: "SYS.DBMS_SCHEDULER", 行288
402
-
403
- ORA-06512: "SYSTEM.EMBULK_TR", 行9
404
-
405
- ORA-04088: トリガー'SYSTEM.EMBULK_TR'実行中にエラが発生しました
395
+ ORA-27369: タイプEXECUTABLEジョブが、次の終了コドで失敗しました: 1 A N Z X ? ? B
406
-
407
-
408
-
396
+
397
+
398
+
409
- ```
399
+ ```

9

質問更新

2018/11/15 02:11

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,4 @@
1
- oracledatabae12cのテーブルへ、1レコードをインサートさせて
1
+ oracledatabae12cのテーブルへ、1レコードをインサートさせて事前に作成したトリガーが正常に動作するか検証しようとしたところ
2
-
3
- 事前に作成したトリガーが正常に動作するか検証しようとしたところ
4
-
5
-
6
2
 
7
3
  インサートが出来ず、エラーが発生しました。
8
4
 
@@ -86,21 +82,241 @@
86
82
 
87
83
 
88
84
 
85
+
86
+
87
+
88
+
89
- 作成済みのトリガー
89
+ ※トリガーを使わずに実行した結果
90
90
 
91
91
  ```ここに言語を入力
92
92
 
93
+ SQL> begin
94
+
95
+ 2 IF INSERTING THEN
96
+
97
+ 3 dbms_output.put_line('-------------------------');
98
+
99
+ 4 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
100
+
101
+ 5 DBMS_SCHEDULER.CREATE_JOB (
102
+
103
+ 6 JOB_NAME => 'EmbulkTest',
104
+
105
+ 7 JOB_TYPE => 'EXECUTABLE',
106
+
107
+ 8 JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat');
108
+
109
+ 9 DBMS_SCHEDULER.ENABLE('EmbulkTest');
110
+
111
+ 10 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
112
+
113
+ 11 dbms_output.put_line('-------------------------');
114
+
115
+ 12 END IF;
116
+
117
+ 13 end;
118
+
119
+ 14 /
120
+
121
+
122
+
123
+ PL/SQLプロシージャが正常に完了しました。
124
+
125
+
126
+
127
+ SQL>
128
+
129
+ SQL>
130
+
131
+ SQL>
132
+
133
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('312', '2849', 'chr1');
134
+
135
+
136
+
137
+ 1行が作成されました。
138
+
139
+
140
+
141
+ SQL>
142
+
143
+ SQL> commit;
144
+
145
+
146
+
147
+ コミットが完了しました。
148
+
149
+
150
+
151
+ SQL>
152
+
153
+ SQL> select owner,job_name,state from dba_scheduler_jobs where job_name = 'EmbulkTest';
154
+
155
+
156
+
157
+ レコードが選択されませんでした。
158
+
159
+
160
+
161
+ SQL>
162
+
163
+ ```
164
+
165
+
166
+
167
+ ※再トライ
168
+
169
+ ```ここに言語を入力
170
+
171
+ SQL> create or replace trigger embulk_tr
172
+
173
+ 2
174
+
175
+ 3 after insert on INPUT_TEST for each row
176
+
177
+ 4
178
+
179
+ 5 DECLARE pragma autonomous_transaction;
180
+
181
+ 6
182
+
183
+ 7 begin
184
+
185
+ 8 IF INSERTING THEN
186
+
187
+ 9
188
+
189
+ 10 dbms_output.put_line('-------------------------');
190
+
191
+ 11 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
192
+
193
+ 12
194
+
195
+ 13 DBMS_SCHEDULER.CREATE_JOB (
196
+
197
+ 14 JOB_NAME => 'EmbulkTest',
198
+
199
+ 15 JOB_TYPE => 'EXECUTABLE',
200
+
201
+ 16 JOB_ACTION => 'C:\WINDOWS\system32\cmd.exe /c C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat',
202
+
203
+ 17 start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'),
204
+
205
+ 18 end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'),
206
+
207
+ 19 repeat_interval => 'FREQ=SECONDLY;interval=1',
208
+
209
+ 20 auto_drop => TRUE,
210
+
211
+ 21 enabled => TRUE
212
+
213
+ 22 );
214
+
215
+ 23
216
+
217
+ 24
218
+
219
+ 25 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
220
+
221
+ 26 dbms_output.put_line('-------------------------');
222
+
223
+ 27
224
+
225
+ 28 END IF;
226
+
227
+ 29 end;
228
+
229
+ 30 /
230
+
231
+
232
+
233
+ トリガーが作成されました。
234
+
235
+
236
+
237
+ SQL> select owner,job_name,state from dba_scheduler_jobs where job_name = 'EMBULKTEST';
238
+
239
+
240
+
241
+ OWNER JOB_NAME STATE
242
+
243
+ ------------------------------ ------------------------------ ------------------------------
244
+
245
+ SYSTEM EMBULKTEST SCHEDULED
246
+
247
+
248
+
249
+ SQL>
250
+
251
+ SQL> select trigger_name,status,triggering_event,action_type,TRIGGER_BODY from dba_triggers where trigger_name = 'EMBULK_TR';
252
+
253
+
254
+
255
+ TRIGGER_NAME STATUS TRIGGERING_EVEN ACTION_TYPE TRIGGER_BODY
256
+
257
+ --------------- --------------- --------------- --------------- --------------------------------------------------
258
+
259
+ EMBULK_TR ENABLED INSERT PL/SQL DECLARE pragma autonomous_transaction;
260
+
261
+
262
+
263
+ begin
264
+
265
+ IF INSERTING THEN
266
+
267
+
268
+
269
+ dbms_output.put
270
+
271
+
272
+
273
+ ```
274
+
275
+
276
+
277
+ ※2回目のインサートでエラー
278
+
279
+
280
+
281
+ ```ここに言語を入力
282
+
283
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('333', '2849', 'chr1');
284
+
285
+ insert into INPUT_TEST (ID,NUM,STR) values ('333', '2849', 'chr1')
286
+
287
+ *
288
+
289
+ 行1でエラーが発生しました。:
290
+
291
+ ORA-27477: "SYSTEM"."EMBULKTEST"はすでに存在します
292
+
293
+ ORA-06512: "SYS.DBMS_ISCHED", 行175
294
+
295
+ ORA-06512: "SYS.DBMS_SCHEDULER", 行288
296
+
297
+ ORA-06512: "SYSTEM.EMBULK_TR", 行9
298
+
299
+ ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
300
+
301
+
302
+
303
+ ```
304
+
305
+
306
+
307
+ ※ジョブ作成時に引数を与えてリトライ
308
+
309
+ ```ここに言語を入力
310
+
93
311
  create or replace trigger embulk_tr
94
312
 
95
- after insert
313
+
96
-
314
+
97
- on INPUT_TEST
315
+ after insert on INPUT_TEST for each row
98
-
99
- for each row
316
+
100
-
101
- declare
317
+
102
-
318
+
103
- pragma autonomous_transaction;
319
+ DECLARE pragma autonomous_transaction;
104
320
 
105
321
 
106
322
 
@@ -114,25 +330,39 @@
114
330
 
115
331
 
116
332
 
117
- -- OracleDB to BigQuery Bulk Insert bat
118
-
119
-
120
-
121
- IF INSERTING THEN
333
+ IF INSERTING THEN
122
-
334
+
123
- DBMS_SCHEDULER.CREATE_JOB (
335
+ DBMS_SCHEDULER.CREATE_JOB (
124
-
336
+
125
- JOB_NAME => 'embulk_test',
337
+ JOB_NAME => 'Embulk_Test',
126
-
338
+
127
- JOB_TYPE => 'EXECUTABLE',
339
+ JOB_TYPE => 'EXECUTABLE',
128
-
340
+
129
- JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat');
341
+ JOB_ACTION => 'c:\WINDOWS\system32\cmd.exe',
342
+
130
-
343
+ number_of_arguments => 3,
344
+
131
-
345
+ start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'),
346
+
132
-
347
+ end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'),
348
+
349
+ repeat_interval => 'FREQ=SECONDLY;interval=1',
350
+
351
+ auto_drop => FALSE,
352
+
353
+ enabled => TRUE
354
+
355
+ );
356
+
357
+
358
+
133
- DBMS_SCHEDULER.ENABLE('embulk_test');
359
+ DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',1, '/q');
360
+
134
-
361
+ DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',2, '/c');
362
+
363
+ DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('Embulk_Test',3, 'C:\Users\yazaki\Desktop\embulk\test.bat');
364
+
135
- END IF;
365
+ END IF;
136
366
 
137
367
 
138
368
 
@@ -142,430 +372,38 @@
142
372
 
143
373
 
144
374
 
145
- end embulk_tr;
375
+ end;
146
376
 
147
377
  /
148
378
 
379
+
380
+
381
+ トリガーが作成されました。
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('22226', '2849', 'chr1');
390
+
391
+ insert into INPUT_TEST (ID,NUM,STR) values ('22226', '2849', 'chr1')
392
+
393
+ *
394
+
395
+ 行1でエラーが発生しました。:
396
+
397
+ ORA-27457: 引数1(ジョブ"SYSTEM"."EMBULK_TEST")に値がありません
398
+
399
+ ORA-06512: "SYS.DBMS_ISCHED", 行175
400
+
401
+ ORA-06512: "SYS.DBMS_SCHEDULER", 行288
402
+
403
+ ORA-06512: "SYSTEM.EMBULK_TR", 行9
404
+
405
+ ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
406
+
407
+
408
+
149
409
  ```
150
-
151
-
152
-
153
-
154
-
155
- ※権限付与あとの再実行時のエラー
156
-
157
-
158
-
159
- ```ここに言語を入力
160
-
161
- SQL> insert into INPUT_TEST (ID,NUM,STR) values ('256', '2849', 'chr1');
162
-
163
- insert into INPUT_TEST (ID,NUM,STR) values ('256', '2849', 'chr1')
164
-
165
- *
166
-
167
- 行1でエラーが発生しました。:
168
-
169
- ORA-27477: "SYSTEM"."EMBULK_TEST"はすでに存在します
170
-
171
- ORA-06512: "SYS.DBMS_ISCHED", 行175
172
-
173
- ORA-06512: "SYS.DBMS_SCHEDULER", 行288
174
-
175
- ORA-06512: "SYSTEM.EMBULK_TR", 行12
176
-
177
- ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
178
-
179
- SQL>
180
-
181
- ```
182
-
183
-
184
-
185
-
186
-
187
- ※ジョブ削除後に再実行
188
-
189
-
190
-
191
- ```ここに言語を入力
192
-
193
- SQL> begin
194
-
195
- dbms_scheduler.drop_job('EMBULK_TEST');
196
-
197
- end;
198
-
199
- /
200
-
201
-
202
-
203
- SQL>
204
-
205
-
206
-
207
- SQL> @oracle_to_bigquery.sql
208
-
209
-
210
-
211
- トリガーが作成されました。
212
-
213
-
214
-
215
- SQL> insert into INPUT_TEST (ID,NUM,STR) values ('258', '2849', 'chr1');
216
-
217
-
218
-
219
- 1行が作成されました。
220
-
221
-
222
-
223
- SQL> select owner,job_name,state from dba_scheduler_jobs;
224
-
225
-
226
-
227
- OWNER JOB_NAME STATE
228
-
229
- --------------- ------------------------------ ---------------
230
-
231
- SYS PURGE_LOG SCHEDULED
232
-
233
- SYS FILE_WATCHER DISABLED
234
-
235
- SYS PMO_DEFERRED_GIDX_MAINT_JOB SCHEDULED
236
-
237
- SYS CLEANUP_NON_EXIST_OBJ SCHEDULED
238
-
239
- SYS CLEANUP_ONLINE_IND_BUILD SCHEDULED
240
-
241
- SYS CLEANUP_TAB_IOT_PMO SCHEDULED
242
-
243
- SYS CLEANUP_TRANSIENT_TYPE SCHEDULED
244
-
245
- SYS CLEANUP_TRANSIENT_PKG SCHEDULED
246
-
247
- SYS CLEANUP_ONLINE_PMO SCHEDULED
248
-
249
- SYS FILE_SIZE_UPD SCHEDULED
250
-
251
- SYS ORA$AUTOTASK_CLEAN SCHEDULED
252
-
253
-
254
-
255
- OWNER JOB_NAME STATE
256
-
257
- --------------- ------------------------------ ---------------
258
-
259
- SYS HM_CREATE_OFFLINE_DICTIONARY DISABLED
260
-
261
- SYS DRA_REEVALUATE_OPEN_FAILURES SCHEDULED
262
-
263
- SYS ORA$PREPLUGIN_BACKUP_JOB DISABLED
264
-
265
- SYS BSLN_MAINTAIN_STATS_JOB SCHEDULED
266
-
267
- SYS FGR$AUTOPURGE_JOB DISABLED
268
-
269
- SYS RSE$CLEAN_RECOVERABLE_SCRIPT SCHEDULED
270
-
271
- SYS SM$CLEAN_AUTO_SPLIT_MERGE SCHEDULED
272
-
273
- SYS LOAD_OPATCH_INVENTORY DISABLED
274
-
275
- SYS XMLDB_NFS_CLEANUP_JOB DISABLED
276
-
277
- ORACLE_OCM MGMT_CONFIG_JOB SCHEDULED
278
-
279
- ORACLE_OCM MGMT_STATS_CONFIG_JOB SCHEDULED
280
-
281
-
282
-
283
- 22行が選択されました。
284
-
285
-
286
-
287
- SQL>
288
-
289
- ```
290
-
291
-
292
-
293
- ※作成したトリガーの状況
294
-
295
- ```ここに言語を入力
296
-
297
- SQL> select trigger_name,status,triggering_event,table_name,trigger_body from dba_triggers where trigger_name = 'EMBULK_TR';
298
-
299
-
300
-
301
- TRIGGER_NAME STATUS TRIGGERING_EVENT TABLE_NAME TRIGGER_BODY
302
-
303
- --------------- --------------- -------------------- --------------- ---------------
304
-
305
- EMBULK_TR ENABLED INSERT INPUT_TEST declare
306
-
307
- pragma autono
308
-
309
- mous_transactio
310
-
311
- n;
312
-
313
-
314
-
315
- begin
316
-
317
-
318
-
319
- dbms_output.put
320
-
321
- _line('--------
322
-
323
- -
324
-
325
- ```
326
-
327
-
328
-
329
- ※インサート処理時のトリガーエラー
330
-
331
- ```ここに言語を入力
332
-
333
- SQL> insert into INPUT_TEST (ID,NUM,STR) values ('289', '2849', 'chr1');
334
-
335
- insert into INPUT_TEST (ID,NUM,STR) values ('289', '2849', 'chr1')
336
-
337
- *
338
-
339
- 行1でエラーが発生しました。:
340
-
341
- ORA-04092: トリガーはできません
342
-
343
- ORA-06512: "SYS.DBMS_ISCHED", 行175
344
-
345
- ORA-06512: "SYS.DBMS_SCHEDULER", 行288
346
-
347
- ORA-06512: "SYSTEM.EMBULK_TR", 行9
348
-
349
- ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
350
-
351
-
352
-
353
- ```
354
-
355
-
356
-
357
- ※トリガーを使わずに実行した結果
358
-
359
- ```ここに言語を入力
360
-
361
- SQL> begin
362
-
363
- 2 IF INSERTING THEN
364
-
365
- 3 dbms_output.put_line('-------------------------');
366
-
367
- 4 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
368
-
369
- 5 DBMS_SCHEDULER.CREATE_JOB (
370
-
371
- 6 JOB_NAME => 'EmbulkTest',
372
-
373
- 7 JOB_TYPE => 'EXECUTABLE',
374
-
375
- 8 JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat');
376
-
377
- 9 DBMS_SCHEDULER.ENABLE('EmbulkTest');
378
-
379
- 10 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
380
-
381
- 11 dbms_output.put_line('-------------------------');
382
-
383
- 12 END IF;
384
-
385
- 13 end;
386
-
387
- 14 /
388
-
389
-
390
-
391
- PL/SQLプロシージャが正常に完了しました。
392
-
393
-
394
-
395
- SQL>
396
-
397
- SQL>
398
-
399
- SQL>
400
-
401
- SQL> insert into INPUT_TEST (ID,NUM,STR) values ('312', '2849', 'chr1');
402
-
403
-
404
-
405
- 1行が作成されました。
406
-
407
-
408
-
409
- SQL>
410
-
411
- SQL> commit;
412
-
413
-
414
-
415
- コミットが完了しました。
416
-
417
-
418
-
419
- SQL>
420
-
421
- SQL> select owner,job_name,state from dba_scheduler_jobs where job_name = 'EmbulkTest';
422
-
423
-
424
-
425
- レコードが選択されませんでした。
426
-
427
-
428
-
429
- SQL>
430
-
431
- ```
432
-
433
-
434
-
435
- ※再トライ
436
-
437
- ```ここに言語を入力
438
-
439
- SQL> create or replace trigger embulk_tr
440
-
441
- 2
442
-
443
- 3 after insert on INPUT_TEST for each row
444
-
445
- 4
446
-
447
- 5 DECLARE pragma autonomous_transaction;
448
-
449
- 6
450
-
451
- 7 begin
452
-
453
- 8 IF INSERTING THEN
454
-
455
- 9
456
-
457
- 10 dbms_output.put_line('-------------------------');
458
-
459
- 11 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
460
-
461
- 12
462
-
463
- 13 DBMS_SCHEDULER.CREATE_JOB (
464
-
465
- 14 JOB_NAME => 'EmbulkTest',
466
-
467
- 15 JOB_TYPE => 'EXECUTABLE',
468
-
469
- 16 JOB_ACTION => 'C:\WINDOWS\system32\cmd.exe /c C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat',
470
-
471
- 17 start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'),
472
-
473
- 18 end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'),
474
-
475
- 19 repeat_interval => 'FREQ=SECONDLY;interval=1',
476
-
477
- 20 auto_drop => TRUE,
478
-
479
- 21 enabled => TRUE
480
-
481
- 22 );
482
-
483
- 23
484
-
485
- 24
486
-
487
- 25 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
488
-
489
- 26 dbms_output.put_line('-------------------------');
490
-
491
- 27
492
-
493
- 28 END IF;
494
-
495
- 29 end;
496
-
497
- 30 /
498
-
499
-
500
-
501
- トリガーが作成されました。
502
-
503
-
504
-
505
- SQL> select owner,job_name,state from dba_scheduler_jobs where job_name = 'EMBULKTEST';
506
-
507
-
508
-
509
- OWNER JOB_NAME STATE
510
-
511
- ------------------------------ ------------------------------ ------------------------------
512
-
513
- SYSTEM EMBULKTEST SCHEDULED
514
-
515
-
516
-
517
- SQL>
518
-
519
- SQL> select trigger_name,status,triggering_event,action_type,TRIGGER_BODY from dba_triggers where trigger_name = 'EMBULK_TR';
520
-
521
-
522
-
523
- TRIGGER_NAME STATUS TRIGGERING_EVEN ACTION_TYPE TRIGGER_BODY
524
-
525
- --------------- --------------- --------------- --------------- --------------------------------------------------
526
-
527
- EMBULK_TR ENABLED INSERT PL/SQL DECLARE pragma autonomous_transaction;
528
-
529
-
530
-
531
- begin
532
-
533
- IF INSERTING THEN
534
-
535
-
536
-
537
- dbms_output.put
538
-
539
-
540
-
541
- ```
542
-
543
-
544
-
545
- ※2回目のインサートでエラー
546
-
547
-
548
-
549
- ```ここに言語を入力
550
-
551
- SQL> insert into INPUT_TEST (ID,NUM,STR) values ('333', '2849', 'chr1');
552
-
553
- insert into INPUT_TEST (ID,NUM,STR) values ('333', '2849', 'chr1')
554
-
555
- *
556
-
557
- 行1でエラーが発生しました。:
558
-
559
- ORA-27477: "SYSTEM"."EMBULKTEST"はすでに存在します
560
-
561
- ORA-06512: "SYS.DBMS_ISCHED", 行175
562
-
563
- ORA-06512: "SYS.DBMS_SCHEDULER", 行288
564
-
565
- ORA-06512: "SYSTEM.EMBULK_TR", 行9
566
-
567
- ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
568
-
569
-
570
-
571
- ```

8

質問内容更新

2018/11/15 02:08

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -429,3 +429,143 @@
429
429
  SQL>
430
430
 
431
431
  ```
432
+
433
+
434
+
435
+ ※再トライ
436
+
437
+ ```ここに言語を入力
438
+
439
+ SQL> create or replace trigger embulk_tr
440
+
441
+ 2
442
+
443
+ 3 after insert on INPUT_TEST for each row
444
+
445
+ 4
446
+
447
+ 5 DECLARE pragma autonomous_transaction;
448
+
449
+ 6
450
+
451
+ 7 begin
452
+
453
+ 8 IF INSERTING THEN
454
+
455
+ 9
456
+
457
+ 10 dbms_output.put_line('-------------------------');
458
+
459
+ 11 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
460
+
461
+ 12
462
+
463
+ 13 DBMS_SCHEDULER.CREATE_JOB (
464
+
465
+ 14 JOB_NAME => 'EmbulkTest',
466
+
467
+ 15 JOB_TYPE => 'EXECUTABLE',
468
+
469
+ 16 JOB_ACTION => 'C:\WINDOWS\system32\cmd.exe /c C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat',
470
+
471
+ 17 start_date => TO_DATE('2018/11/13 00:00:00','yyyy/mm/dd hh24:mi:ss'),
472
+
473
+ 18 end_date => TO_DATE('2999/12/31 00:00:00','yyyy/mm/dd hh24:mi:ss'),
474
+
475
+ 19 repeat_interval => 'FREQ=SECONDLY;interval=1',
476
+
477
+ 20 auto_drop => TRUE,
478
+
479
+ 21 enabled => TRUE
480
+
481
+ 22 );
482
+
483
+ 23
484
+
485
+ 24
486
+
487
+ 25 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
488
+
489
+ 26 dbms_output.put_line('-------------------------');
490
+
491
+ 27
492
+
493
+ 28 END IF;
494
+
495
+ 29 end;
496
+
497
+ 30 /
498
+
499
+
500
+
501
+ トリガーが作成されました。
502
+
503
+
504
+
505
+ SQL> select owner,job_name,state from dba_scheduler_jobs where job_name = 'EMBULKTEST';
506
+
507
+
508
+
509
+ OWNER JOB_NAME STATE
510
+
511
+ ------------------------------ ------------------------------ ------------------------------
512
+
513
+ SYSTEM EMBULKTEST SCHEDULED
514
+
515
+
516
+
517
+ SQL>
518
+
519
+ SQL> select trigger_name,status,triggering_event,action_type,TRIGGER_BODY from dba_triggers where trigger_name = 'EMBULK_TR';
520
+
521
+
522
+
523
+ TRIGGER_NAME STATUS TRIGGERING_EVEN ACTION_TYPE TRIGGER_BODY
524
+
525
+ --------------- --------------- --------------- --------------- --------------------------------------------------
526
+
527
+ EMBULK_TR ENABLED INSERT PL/SQL DECLARE pragma autonomous_transaction;
528
+
529
+
530
+
531
+ begin
532
+
533
+ IF INSERTING THEN
534
+
535
+
536
+
537
+ dbms_output.put
538
+
539
+
540
+
541
+ ```
542
+
543
+
544
+
545
+ ※2回目のインサートでエラー
546
+
547
+
548
+
549
+ ```ここに言語を入力
550
+
551
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('333', '2849', 'chr1');
552
+
553
+ insert into INPUT_TEST (ID,NUM,STR) values ('333', '2849', 'chr1')
554
+
555
+ *
556
+
557
+ 行1でエラーが発生しました。:
558
+
559
+ ORA-27477: "SYSTEM"."EMBULKTEST"はすでに存在します
560
+
561
+ ORA-06512: "SYS.DBMS_ISCHED", 行175
562
+
563
+ ORA-06512: "SYS.DBMS_SCHEDULER", 行288
564
+
565
+ ORA-06512: "SYSTEM.EMBULK_TR", 行9
566
+
567
+ ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
568
+
569
+
570
+
571
+ ```

7

質問更新

2018/11/13 08:23

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -351,3 +351,81 @@
351
351
 
352
352
 
353
353
  ```
354
+
355
+
356
+
357
+ ※トリガーを使わずに実行した結果
358
+
359
+ ```ここに言語を入力
360
+
361
+ SQL> begin
362
+
363
+ 2 IF INSERTING THEN
364
+
365
+ 3 dbms_output.put_line('-------------------------');
366
+
367
+ 4 dbms_output.put_line('OracleDB to BigQuery Bulk Insert Start');
368
+
369
+ 5 DBMS_SCHEDULER.CREATE_JOB (
370
+
371
+ 6 JOB_NAME => 'EmbulkTest',
372
+
373
+ 7 JOB_TYPE => 'EXECUTABLE',
374
+
375
+ 8 JOB_ACTION => 'C:\Users\yazaki\Desktop\embulk\oracle_to_bigquery.bat');
376
+
377
+ 9 DBMS_SCHEDULER.ENABLE('EmbulkTest');
378
+
379
+ 10 dbms_output.put_line('OracleDB to BigQuery Bulk Insert End');
380
+
381
+ 11 dbms_output.put_line('-------------------------');
382
+
383
+ 12 END IF;
384
+
385
+ 13 end;
386
+
387
+ 14 /
388
+
389
+
390
+
391
+ PL/SQLプロシージャが正常に完了しました。
392
+
393
+
394
+
395
+ SQL>
396
+
397
+ SQL>
398
+
399
+ SQL>
400
+
401
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('312', '2849', 'chr1');
402
+
403
+
404
+
405
+ 1行が作成されました。
406
+
407
+
408
+
409
+ SQL>
410
+
411
+ SQL> commit;
412
+
413
+
414
+
415
+ コミットが完了しました。
416
+
417
+
418
+
419
+ SQL>
420
+
421
+ SQL> select owner,job_name,state from dba_scheduler_jobs where job_name = 'EmbulkTest';
422
+
423
+
424
+
425
+ レコードが選択されませんでした。
426
+
427
+
428
+
429
+ SQL>
430
+
431
+ ```

6

更新

2018/11/13 04:36

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -323,3 +323,31 @@
323
323
  -
324
324
 
325
325
  ```
326
+
327
+
328
+
329
+ ※インサート処理時のトリガーエラー
330
+
331
+ ```ここに言語を入力
332
+
333
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('289', '2849', 'chr1');
334
+
335
+ insert into INPUT_TEST (ID,NUM,STR) values ('289', '2849', 'chr1')
336
+
337
+ *
338
+
339
+ 行1でエラーが発生しました。:
340
+
341
+ ORA-04092: トリガーはできません
342
+
343
+ ORA-06512: "SYS.DBMS_ISCHED", 行175
344
+
345
+ ORA-06512: "SYS.DBMS_SCHEDULER", 行288
346
+
347
+ ORA-06512: "SYSTEM.EMBULK_TR", 行9
348
+
349
+ ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
350
+
351
+
352
+
353
+ ```

5

質問内容の更新

2018/11/12 05:49

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -323,39 +323,3 @@
323
323
  -
324
324
 
325
325
  ```
326
-
327
-
328
-
329
- ※コンパイルエラー
330
-
331
-
332
-
333
- ```ここに言語を入力
334
-
335
- SQL> show errors
336
-
337
- TRIGGER EMBULK_TRのエラーです。
338
-
339
-
340
-
341
- LINE/COL ERROR
342
-
343
- -------- -----------------------------------------------------------------
344
-
345
- 4/12 PLS-00103: 記号"."が見つかりました。 次のうちの1つが入るとき:
346
-
347
- constant exception <an identifier>
348
-
349
- <a double-quoted delimited-identifier> table columns long
350
-
351
- double $$671 char time timestamp interval date binary
352
-
353
- national character nchar
354
-
355
- 記号"<an identifier>" は続行のために"."に代わりました。
356
-
357
-
358
-
359
- SQL>
360
-
361
- ```

4

状況更新

2018/11/12 05:13

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -323,3 +323,39 @@
323
323
  -
324
324
 
325
325
  ```
326
+
327
+
328
+
329
+ ※コンパイルエラー
330
+
331
+
332
+
333
+ ```ここに言語を入力
334
+
335
+ SQL> show errors
336
+
337
+ TRIGGER EMBULK_TRのエラーです。
338
+
339
+
340
+
341
+ LINE/COL ERROR
342
+
343
+ -------- -----------------------------------------------------------------
344
+
345
+ 4/12 PLS-00103: 記号"."が見つかりました。 次のうちの1つが入るとき:
346
+
347
+ constant exception <an identifier>
348
+
349
+ <a double-quoted delimited-identifier> table columns long
350
+
351
+ double $$671 char time timestamp interval date binary
352
+
353
+ national character nchar
354
+
355
+ 記号"<an identifier>" は続行のために"."に代わりました。
356
+
357
+
358
+
359
+ SQL>
360
+
361
+ ```

3

質問内容の更新

2018/11/12 04:58

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -287,3 +287,39 @@
287
287
  SQL>
288
288
 
289
289
  ```
290
+
291
+
292
+
293
+ ※作成したトリガーの状況
294
+
295
+ ```ここに言語を入力
296
+
297
+ SQL> select trigger_name,status,triggering_event,table_name,trigger_body from dba_triggers where trigger_name = 'EMBULK_TR';
298
+
299
+
300
+
301
+ TRIGGER_NAME STATUS TRIGGERING_EVENT TABLE_NAME TRIGGER_BODY
302
+
303
+ --------------- --------------- -------------------- --------------- ---------------
304
+
305
+ EMBULK_TR ENABLED INSERT INPUT_TEST declare
306
+
307
+ pragma autono
308
+
309
+ mous_transactio
310
+
311
+ n;
312
+
313
+
314
+
315
+ begin
316
+
317
+
318
+
319
+ dbms_output.put
320
+
321
+ _line('--------
322
+
323
+ -
324
+
325
+ ```

2

状況更新

2018/11/09 04:30

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -179,3 +179,111 @@
179
179
  SQL>
180
180
 
181
181
  ```
182
+
183
+
184
+
185
+
186
+
187
+ ※ジョブ削除後に再実行
188
+
189
+
190
+
191
+ ```ここに言語を入力
192
+
193
+ SQL> begin
194
+
195
+ dbms_scheduler.drop_job('EMBULK_TEST');
196
+
197
+ end;
198
+
199
+ /
200
+
201
+
202
+
203
+ SQL>
204
+
205
+
206
+
207
+ SQL> @oracle_to_bigquery.sql
208
+
209
+
210
+
211
+ トリガーが作成されました。
212
+
213
+
214
+
215
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('258', '2849', 'chr1');
216
+
217
+
218
+
219
+ 1行が作成されました。
220
+
221
+
222
+
223
+ SQL> select owner,job_name,state from dba_scheduler_jobs;
224
+
225
+
226
+
227
+ OWNER JOB_NAME STATE
228
+
229
+ --------------- ------------------------------ ---------------
230
+
231
+ SYS PURGE_LOG SCHEDULED
232
+
233
+ SYS FILE_WATCHER DISABLED
234
+
235
+ SYS PMO_DEFERRED_GIDX_MAINT_JOB SCHEDULED
236
+
237
+ SYS CLEANUP_NON_EXIST_OBJ SCHEDULED
238
+
239
+ SYS CLEANUP_ONLINE_IND_BUILD SCHEDULED
240
+
241
+ SYS CLEANUP_TAB_IOT_PMO SCHEDULED
242
+
243
+ SYS CLEANUP_TRANSIENT_TYPE SCHEDULED
244
+
245
+ SYS CLEANUP_TRANSIENT_PKG SCHEDULED
246
+
247
+ SYS CLEANUP_ONLINE_PMO SCHEDULED
248
+
249
+ SYS FILE_SIZE_UPD SCHEDULED
250
+
251
+ SYS ORA$AUTOTASK_CLEAN SCHEDULED
252
+
253
+
254
+
255
+ OWNER JOB_NAME STATE
256
+
257
+ --------------- ------------------------------ ---------------
258
+
259
+ SYS HM_CREATE_OFFLINE_DICTIONARY DISABLED
260
+
261
+ SYS DRA_REEVALUATE_OPEN_FAILURES SCHEDULED
262
+
263
+ SYS ORA$PREPLUGIN_BACKUP_JOB DISABLED
264
+
265
+ SYS BSLN_MAINTAIN_STATS_JOB SCHEDULED
266
+
267
+ SYS FGR$AUTOPURGE_JOB DISABLED
268
+
269
+ SYS RSE$CLEAN_RECOVERABLE_SCRIPT SCHEDULED
270
+
271
+ SYS SM$CLEAN_AUTO_SPLIT_MERGE SCHEDULED
272
+
273
+ SYS LOAD_OPATCH_INVENTORY DISABLED
274
+
275
+ SYS XMLDB_NFS_CLEANUP_JOB DISABLED
276
+
277
+ ORACLE_OCM MGMT_CONFIG_JOB SCHEDULED
278
+
279
+ ORACLE_OCM MGMT_STATS_CONFIG_JOB SCHEDULED
280
+
281
+
282
+
283
+ 22行が選択されました。
284
+
285
+
286
+
287
+ SQL>
288
+
289
+ ```

1

質問内容更新

2018/11/09 00:38

投稿

raccoondog
raccoondog

スコア77

test CHANGED
File without changes
test CHANGED
@@ -147,3 +147,35 @@
147
147
  /
148
148
 
149
149
  ```
150
+
151
+
152
+
153
+
154
+
155
+ ※権限付与あとの再実行時のエラー
156
+
157
+
158
+
159
+ ```ここに言語を入力
160
+
161
+ SQL> insert into INPUT_TEST (ID,NUM,STR) values ('256', '2849', 'chr1');
162
+
163
+ insert into INPUT_TEST (ID,NUM,STR) values ('256', '2849', 'chr1')
164
+
165
+ *
166
+
167
+ 行1でエラーが発生しました。:
168
+
169
+ ORA-27477: "SYSTEM"."EMBULK_TEST"はすでに存在します
170
+
171
+ ORA-06512: "SYS.DBMS_ISCHED", 行175
172
+
173
+ ORA-06512: "SYS.DBMS_SCHEDULER", 行288
174
+
175
+ ORA-06512: "SYSTEM.EMBULK_TR", 行12
176
+
177
+ ORA-04088: トリガー'SYSTEM.EMBULK_TR'の実行中にエラーが発生しました
178
+
179
+ SQL>
180
+
181
+ ```