JDBC连不上Oracle数据库的解决方法
解决方法:
1. 先看几个配置文件:listener.ora tnsnames.ora sqlnet.ora
sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串.假如我的sqlnet.ora是下面这个样子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,当你连接数据库的时候,如sqlplus sys/oracle@XE 客户端就会首先在tnsnames.ora文件中找XE的记录.如果没有相应的记录则尝试把XE当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上的GLOBAL_DBNAME=XE这个实例。如果sqlnet.ora是这个样子:
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora查找XE的记录。
tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。
listener.ora------listener监听器进程的配置文件。listener进程,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
listener.ora的例子
#下面定义LISTENER进程为哪个实例提供服务
#这里是XE,并且它对应的ORACLE_HOME和GLOBAL_DBNAME
#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做数据库连接
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME =XE)
(ORACLE_HOME = F:\Oracle\app\oracle\product\10.2.0\server)
(SID_NAME = XE)
)
)
#监听器的名字,一台数据库可以有不止一个监听器
#再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使用的是主机名
相关文档:
--oracle jobs批处理命令参考
qlplus /nolog
connect sys/lee as sysdba
--以下两句在sys(即具有dba权限的用户)用户下执行
show parameter job_queue_processes;
alter system set job_queue_processes=10;
exit
sqlplus /nolog
connect jcy/jcy
ALTER TABLE T_OA_AFFICHE MODIFY (INPUT_TIME DATE);
ALTER TABLE ......
1.查看所有用户
select * from all_users; -------查看所有的用户
select * from user_users; --------查看当前用户
2.查看用户或角色系统权限:
select * from user_sys_privs; --------查看当前用户的权限
3.查看角色所包含的权限
&nb ......
PRAGMA RESTRICT_REFERENCES(),这个PRAGMA比较复杂, 总的来说,它是一个程序辅助检验码,检查子程序的纯度(PURITY),帮助检验子程序是否有违反规则的地方。一般用在函数上,但当函数调用过程时,也要作相应的设置检查。这是为了避免当在DML语句上调用函数时正常执行不至于产生错误。
语法,PRAGMA ......
转自:http://wallimn.javaeye.com/blog/472182
对于SPOOL
数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句
如:
select
taskindex||'|'||commonindex||'|'||tasktype||'|'||to_number(to_char(sysdate,'YYYYMMDD'))
from ssrv_sendsms_task;
spool
常用的设置
set colsep' '; //域输出分隔符 ......