2016-03-23 11 views
0

Aşağıdaki komut dosyasını çalıştırdıktan sonra, çıktı dosyasındaki ifadelerin sonunda noktalı virgüller eksik. Noktalı virgülü de nasıl basabilirim? Bu durumda AUTO sonra virgül olmalı ve RESIZE 146800640Semicolon ksh betiği üzerinden DDL ayıklandıktan sonra eksik

sqlplus -s sys/${sysPwd}@${srcSID} as sysdba<<-EOF>createTS.sql 
SET SERVEROUTPUT ON 
SET HEADING OFF 
SET FEEDBACK OFF 
SET LONG 9999 
SET LINESIZE 999 
SET LONGCHUNKSIZE 350 
SET PAGESIZE 10000 
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','$srcTablespace') FROM DUAL; 
quit; 
EOF 

Kedi çıkan dosyanın sonra: createTS.sql

CREATE BIGFILE TABLESPACE "TSName" DATAFILE 
'/hostname/db/SID/oradata1/tsname.dbf' SIZE 5242880 
AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M 
LOGGING ONLINE PERMANENT BLOCKSIZE 8192 
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO 
ALTER DATABASE DATAFILE 
'/hostname/db/SID/oradata1/tsname.dbf' RESIZE 146800640 

cevap

1

Sen true varsayılan sahte değerinden, SQLTERMINATOR setting değiştirmek zorunda olduğu Eğer sorgudan önce anonim PL/SQL bloğu ile yapabilirsiniz:

BEGIN 
    DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 
    'SQLTERMINATOR', true); 
END; 
/
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','$srcTablespace') FROM DUAL; 

Yoksa exec SQL kullanabilirsiniz * P kısa yoldan ama bütün çağrı bir şarkı satırında olmalı.

set_transform_param prosedürü hakkında daha fazla bilgi için the dbms_metadata documentation'a bakın.

+0

Bunu yaptığınız için teşekkürler – user6027133

İlgili konular