oracle 数据库连接就像你在程序中建立一个到数据库的连接一样。
如果数据库不在本地主机,必须在$ORACLE_HOME/network/admin/tnsnames.ora中配置相应的tns,然后程序才能通过配置好的tns访问数据库,但是java通过thin方式访问oracle例外,可以采用在本地配置好的tns别名,也可以采用tns全解析名,采用别名等号后的全描述符;如下:
TESTCZ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = TESTCZ)
)
)
举例。
现在有两个数据库
adb,用户名和密码分别是adb/adb,在本地主机配置的tns名字是tns_a,所在主机a;
bdb,用户名和密码分别是bdb/bdb,在本地主机配置的tns名字是tns_b,所在主机b;
现在需要在adb上面建一个连接到bdb数据库的dblink;
方法1:
在a主机上编辑tnsnames.ora文件配置bdb数据库的tns别名tns_b,如下:
tns_b =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.12)(PORT = 1521))
)
(CO ......
alter system kill session '查出的sid,查出的serial#';
通過數據字典V$SESSION與V$LOCK來瞭解正在等待鎖資源的用戶
select a.username,a.sid,a.serial#,b.id1 from v$session a ,v$lock b
Where a.lockwait = b.kaddr;
瞭解鎖住其他用戶的用戶進程,方法如下:
select a.username,a.sid,a.serial#,b.id1 from v$session a,v$lock b
Where b.id1 in
(select distinct e.id1 from v$session d,v$lock e where d.lockwait = e.kaddr)
And a.sid = b.sid and b.request =0; ......
/*connect by函数*/
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('6','126','2');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('7','127','1');
commit;
--从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid
order by pid,id
--从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid=id
/*lead下一个 lag上一个* ......
加法
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒
减法
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; ......
String sql = "select t.FILE_INFO from T_FILE_DB_DETAIL t where t.id= "
+ fileDBUpDownDetail.getId() + " for update";
rs = stmt.executeQuery(sql);
if (rs.next()) {
// 在weblogic下部署时,需要更改为Bea WebLogic BLOB格式
// weblogic.jdbc.vendor.oracle.OracleThinBlob blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs
// .getBlob(1);
BLOB blob = (BLOB) rs.getBlob(1);
if (blob != null) {
out = blob.getBinaryOutputStream();
byte[] buf = new byte[8192];// 8K 缓存
int len;
while ((len = fileInputStream.read(buf)) > 0) {
if (out != null) {
out.write(buf, 0, len);
&nbs ......
Oracle的监听器TNSListener有时无法启动,有时启动完以后会自动关闭,这里给出一种可能的原因就是计算机名称的修改,解决的方法是打开<ORALE_HOME>\network\admin\listener.ora,修改(HOST = [compute_name])(PORT = 1521),重新修改就可以正常启动。(注意Oracle企业管理器中默认的数据库连接也需要改变,否则仍然会提示出错。) ......