2011年10月6日 星期四

登入不同Oracle的Enterprise Managerment

1.設定固定ip→hosts
2.註冊listener→cmd下指令netca
3.設定EM,資料庫組態輔助程式
4.控制台服務出現
OracleDBConsoleXXXXXXXX



或是會碰到:Oracle 11g R2 嚴重: 監聽程序未啟動或數據庫服務未註冊到該監聽程序

2011年9月12日 星期一

servlet link oracle sample java

// You can use this sample servlet as a starting point to connect
//簡單servlet連結oracle修改語法。

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

import java.sql.*;

public
class Ex63 extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");

ServletOutputStream sos = res.getOutputStream();
PrintWriter out = new PrintWriter(sos,true);
out.println("<html>");
out.println("<head><title>Hello World</title></head>");
out.println("<body>");

try {
// The newInstance() call is a work around for some
// broken Java implementations
out.println("測試");
Class.forName("oracle.jdbc.OracleDriver").newInstance();
}
catch (Exception E) {
out.println("Unable to load driver.");
E.printStackTrace();
}

out.println("<br><hr>");

try {
Connection Conn =
DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","user","password");

// Do something with the Connection
Statement Stmt = Conn.createStatement();
ResultSet RS = Stmt.executeQuery("SELECT var1 from testtable");

String nameStr = req.getParameter("Name");
String sql2 = "insert into testtable(var1) values('"+nameStr+"')";
//DatabaseMetaData dm = Conn.getMetaData();
//ResultSet tb = dm.getTables(null,null,"testtable",null);
if(nameStr!=null&&nameStr!=""){
Stmt.executeUpdate(sql2);
out.println("有執行sql2<br>");
}


while (RS.next()) {
out.println(RS.getString(1));

}
out.println("<br><hr>");
out.println("你輸入的字串是"+nameStr+"<br>");
out.println("你輸入的sql語法是"+sql2+"<br>");
// Clean up after ourselves
RS.close();
Stmt.close();
Conn.close();

}
catch (SQLException E) {
out.println("SQLException: " + E.getMessage());
out.println("SQLState: " + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
}


out.println("</body></html>");
}

public String getServletInfo() {
return "Create a page that says <i>Hello World</i> and send it back";
}
}

2011年8月31日 星期三

oracle instant client

下載oracle instant client
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下載後解壓縮
於path環境變數,附加C:\instantclient_11_2
新增環境變數TNS_ADMIN為C:\instantclient_11_2
開啟win7防火牆1521
netstat -a,仍無法連線
TCP 127.0.0.1:1521 0.0.0.0:0 LISTENING

修改server端的listener.ora
###################################
LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = yourhost)(PORT = 1521))

)
####################################

netstat -a,此時可telnet yourhost 1521
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING


在C:\instantclient_11_2新增tnsnames.ora文件
#########################################
TAIWAN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.196)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = taiwan)
)
)
##########↑請手動輸入或copy server上的tnsnames.ora#########################
如需要使用sqlplus再下載
instantclient-sqlplus-windows.x64-11.2.0.2.0.zip ,解壓至
同instantclient-basic-windows.x64-11.2.0.2.0目錄。不能是32位元的。

Instant Client中不包含tnsping, exp/imp, rman, netca等工具。要安裝oracle client套件,如win64_11gR2_client.zip。

順便注意hosts是否設對,即可~~