oracle을 이용한 쉘 쉘 스크립팅

oracle을 이용한 쉘 쉘 스크립팅

Unix 변수를 select 문으로 바꾸려고 하는데 다음 오류가 발생합니다. 내가 뭘 잘못했나요?

sqlplus  "/ as sysdba" << EOF
spool /home/oracle/l.log

archive log list;
exit;
EOF

Adest=`cat  /home/oracle/l.log |head -4|tail -1|awk '{print $3}`
sqlplus "/ as sysdba" << EOF
spool /home/oracle/register.lst
select 'alter database register logfile '||''''||$Adest||'/1_'||sequence#||'_915925946.dbf'||'''' from v\$archived_log where applied='NO';
@ /home/oracle/register.lst
exit;
EOF

Error Log:-
SQL> select 'alter database register logfile '||''''||||'/1_'||sequence#||'_915925946.dbf'||'''' from v$archived_log where applied='NO';
select 'alter database register logfile '||''''||||'/1_'||sequence#||'_915925946.dbf'||'''' from v$archived_log where applied='NO'
                                                 *
ERROR at line 1:
ORA-00936: missing expression 


SQL> @ /home/oracle/register.lst
SQL> exit;


cat  /home/oracle/l.log|head -4|tail -1|awk {'print $3'}
/u01/app/oracle/DG1_ARCH

답변1

다음을 추가하면 잘 작동합니다

'데이터베이스 등록 로그 파일 변경'''||'$Adest'||'/1_'||sequence#||'_915925946.dbf'||''';'from v\$archived_log 여기서 apply=' NO를 선택합니다. ';

귀하의 조언과 도움에 감사드립니다! ! !

답변2

도움을 주셔서 감사합니다. 아래는 잘 작동합니다.

select 'alter database register logfile '''||'$Adest'||'/1_'||sequence#||'_915925946.dbf'||''';' from v\$archived_log where applied='NO';  

SQL> 
alter database register logfile '/u01/app/oracle/DG1_ARCH/1_452_915925946.dbf';
alter database register logfile '/u01/app/oracle/DG1_ARCH/1_453_915925946.dbf';

관련 정보