通过ksh脚本提取DDL后分号丢失

时间:2016-03-23 14:40:01

标签: sql oracle syntax ksh

运行以下脚本后,输出文件中语句末尾缺少分号。我怎样才能打印出分号?在这种情况下,AUTO之后和RESIZE 146800640之后应该有一个半冒号

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

Cat结果文件: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

1 个答案:

答案 0 :(得分:1)

您需要将the dbms_metadata documentation从其默认false值更改为true,您可以在查询之前使用匿名PL / SQL块执行此操作:

eclipse plug-in

或者你可以使用BEGIN DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR', true); END; / SELECT DBMS_METADATA.GET_DDL('TABLESPACE','$srcTablespace') FROM DUAL; SQL * Plus的简写,但整个电话必须在一条线上。

有关exec程序的详情,请参阅{{3}}。