2013-12-13 74 views
0

由於我是antscript和sql/oracle的新手,因此我無法理解我所擁有的日誌。因此,請您通過查看代碼我應該移動哪個方向。這個連接沒有建立或者是另一個問題。 在build.xml運行Ant腳本定義如下通過ant腳本運行SQLQuery,但它不創建表

<?xml version="1.0"?> 
<project name="Hello World Project" default="myTarget"> 

<target name="myTarget"> 

<!-- directory where db scritps reside --> 
<property name="oracle.scriptPath" value="D:\\ganganshu" /> 
<!-- path of tnsnames.org file --> 
<property name="oracle.tns_alias" value="wind" /> 
<!-- Oracle user name --> 
<property name="oracle.user_name" value="system" /> 

<!-- Oracle Password --> 
<property name="oracle.password" value="manager" /> 

    <!-- login.sql should have sqlcode exit so failonerror will fail build --> 
    <exec executable="sqlplus" failonerror="true"> 
     <arg value="${oracle.user_name}/${oracle.password}@${tns_alias}"/> 
     <arg value="@${oracle.scriptPath}\\SILO1_schema_script.sql"/> 
    </exec> 
</target> 
</project>  


and my sql script file is defined below 


DROP TABLESPACE SILO2 INCLUDING CONTENTS CASCADE CONSTRAINTS; 
DROP USER SILO2; 

CREATE TABLESPACE SILO2 DATAFILE 'D:\PTC\WINDCHILL_10.2\OCU\ORADATA\WIND\SILO2.DBF' SIZE 8388608 AUTOEXTEND ON NEXT 131072 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO; 

/* USER SQL */ 
CREATE USER SILO2 IDENTIFIED BY SILO2 DEFAULT TABLESPACE "SILO2" TEMPORARY TABLESPACE "TEMP"; 

but when i try to run the ant file I am getting this in the command prompt and the 
scheama is not getting created 



[exec] 
[exec] SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 16 11:00:32 2013 
[exec] 
[exec] Copyright (c) 1982, 2010, Oracle. All rights reserved. 
[exec] 
[exec] ERROR: 
[exec] ORA-12541: TNS:no listener 
[exec] 
[exec] 
[exec] Enter user-name: 

和我的tnsnames.ora包含此

# TNSNAMES.ORA Network Configuration File: D:\temp\OSA92\network\admin\tnsnames.ora 
# Generated by Oracle configuration tools. 

EXTPROC_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
     (SID = PLSExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

wind = 
     (DESCRIPTION = 
     (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = renault-dev.ptcnet.ptc.com)(PORT = 1521)) 
     ) 
     (CONNECT_DATA = 
      (SID = wind) 
     ) 
) 

and I have set tns_alias as a property in build.xml only and not anywhere else 
+0

你似乎沒有定義'tnsalias'變量。您也可以嘗試使用'-v'選項來獲取更多信息。 – GregHNZ

回答

0

你傳遞腳本名作爲參數,但你是不是前面它與@符號to tell SQL*Plus to run the script

 <arg value="@${oracle.scriptPath}\\SILO1_schema_script.sql"/> 

而作爲@GregHNZ在評論中指出,你似乎並沒有被設置tnsalias。這兩者中的任何一個都會生成您所看到的SQL * Plus用法消息。你的命令行已經結束了:

sqlplus system/[email protected] D:\ganganshu\SILO1_schema_script.sql 

而不是:

sqlplus system/[email protected] @D:\ganganshu\SILO1_schema_script.sql 

而且你oracle.tnsnames屬性沒有做任何事情。 SQL * Plus運行的環境需要將TNS_ADMIN設置爲D:\\ptc\\Windchill_10.2\ocu\Conf才能夠使用該目錄中的tnsnames.ora文件。你不能在命令行上傳遞它。


根據您的更新,以顯示您tnsnames.ora文件的內容,您tns_alias屬性應該是:

<property name="oracle.tns_alias" value="wind" /> 

這將使你的命令行:

sqlplus system/[email protected] @D:\ganganshu\SILO1_schema_script.sql 

...您可以從Windows命令提示符進行測試。

+0

嗨亞歷克斯我已經根據我們的意見改變如上所示,但我得到了新的錯誤,如上所述,我正在將tns_name映射到tns_names.ora所以這是正確的方式來做到這一點。 – user3069865

+0

@ user3069865 - 'tns_alias'是'tnsnames.ora'中定義的別名,而不是文件本身。文件的位置在環境變量'TNS_ADMIN'中,該變量保存其父目錄。如果數據庫位於同一臺計算機上,並且設置了'ORACLE_SID',那麼您不需要'@ alias'部分,但所有這些都與環境有關。 –

+0

嗨alex ..對不起,我的數據庫是在同一個系統..所以我需要遵循什麼步驟,我得到這個錯誤 SQL * Plus:版本11.2.0.1.0生產週一12月16日10:08:05 2013 版權所有(c)1982,2010,Oracle。版權所有。 錯誤: ORA-12154:TNS:無法解析指定 輸入用戶名的連接標識符: – user3069865

相關問題