PL/SQL相关方便性设置
PL/SQL的一些方便性技巧列举如下:
1.写好的SQL代码转成自定义格式的JAVA(或其他)代码,可减少手工拼凑的重复工作。例如:
A.创建文件Java_Query.copy的文件,在文件中贴上如下代码:
;PL/SQL Developer SpecialCopy definition
;<LINE_1> for first line
;<LINE_*> for all other lines
;<LINE_N> for last line
;
#define " = \"
#define \ = \\
#define char(9) = \t
StringBuilder sql = new StringBuilder();
sql.setLength(0);
sql.append("<line_1>");
sql.append("<line_*>");
sql.append("<line_n>");
|
B.将文件拷贝到%PLSQL_STEUP_PATH%/SpecialCopy
C.在PLSQL中讲写好的SQL语句选中,[右键]>>[Special Copy]>>[Java_Query],如图:
D.按CTRL+V(复制)就可以看到结果了,可以把相关代码复制到程序中即可.
2.自动替换,快速输出查询、更新等语句.
A.选择PL/SQL菜单[Tools]>>[Preferences..],如图设置:
B.这样,在PL/SQL中输入S+空格,则可以出现SELECT T.*,T.ROWID FROM ,方便开发调试,减少打字时间.
运行sqlplus 报"SP2-1503:无法初始化 Oracle 调用界面"解决方法
在Win7下运行sqlplus报如下错误
SP2-1503: 无法初始化 Oracle 调用界面
SP2-0152: ORACLE 不能正常工作
百度之得方法:
找到Oracle安装目录中BIN目录下sqlplus.exe。右键>>属性>>兼容性>>选中以管理员身份运行>>确认即可。
如图:
64位Windows7下安装Oralce10g客户端过程.
本想尝试在不安装客户端的情况下使用PLSQL访问数据库服务器 .但是后来还是失败了.
于是在Windows7(64位)下安装了Oracle10g的客户端后,使用PLSQL尝试连接,总提示一个空白框.很无奈.百度谷歌了许久才找到解决方法.
摘自网上的:
1.到oracle官网下载Oracle InstantClient,我下的是instantclient-basiclite-win32-10.2.0.4.zip,把它解压缩到oracle安装目录product下,其中还有一个目录为10.2.0.在其中的db_1/NETWORK/ADMIN目录下拷贝tnsnames.ora文件到InstantClient解压目录. 2.非登录状态下进入PL/SQL developer,进入首选项,在connection中设置Oracle_Home和OCI Library,其中Oracle_Home设置为InstantClient的解压目录,OCI Library设置为该目录下的oci.dll. |
最后设置环境变量:
set path=instantclient的路径
set TNS_ADMIN=tnsnames.ora文件的目录
使用PLSQL尝试登录,成功.
PS:如果出现ORA-12705:无法访问NLS数据文件,或者指定的环境无效错误,把环境变量中NLS_LANG的变量删除掉
有关Oracle中的Blob字段更新问题
先说下偶遇到的问题:
Oracle中我使用Blob字段来存一个Xml内容.新增一条记录正常,但是尝试用一条记录去更新已经存在的记录.
发现Blob中的字段中的内容并没有被更新掉.
网络上的一些朋友说原因如下:
假设Blob字段中已经存在的内容是100个字节,那么尝试用50字节的内容去更新,
那么得到的结果就是:前面50个字节被覆盖,而Blob仍然存在100个字节,其中后面50个字节是原先的后50个字节.
那么解决的方法如下:(证实可以通过)
先清空原Blob字段中的数据,再进行字节的写入.(与平常的更新操作会多了一步).
具体的更新方法如下:
UPDATE 表名 SET BLOB字段=EMPTY_BLOB() WHERE 条件.
然后再执行具体的更新SQL语句.
ORA-01034 ORACLE not available ORA-27101 Shared memory realm does not exist错误解决方案.
解决好创建实例问题之后,使用PL/SQL连数据库报如下错误:
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available
谷歌了很久很久,才找到解决方案,网上大多数方案都不行.很佩服这个牛人.
偶不是Oracle专家,不说原因了..直接说明怎么解决问题的吧.
1.打开命令窗口输入:lsnrctl start
2.出现监听程序启动成功之后,继续输入: sqlplus '/as sysdba'
3.连接成功后输入startup
4.出现成功信息后再使用PL/SQL登录,发现登录成功.
贴个截图:
Oracle服务误删除的解决办法(360搞的)
之前有一次遇到这个问题,ORACLE.exe莫名奇妙的被360给删除了,上次选择了还原系统来解决,这次不知何时又被删除了.害我搞了一个晚上
无奈之下只好百度谷歌到处搜索.搜索到如下命令可建Oracle实例.(可弄成一个bat文件)
oradim -NEW -SID orcl -STARTMODE manual -PFILE F:\oracle\product\10.2.0\admin\ORCL\pfile\initorcl.ora"
oradim -STARTUP -SID ORCL -STARTTYPE inst
其中红色部分为自己的Oracle实例.
顺便贴个删除Oracle实例的命令:
oradim -DELETE -SID orcl
完成之后重启便可.
若登录数据库时出现如下错误 :
ora-01034:oracle not available
ora-27101:shared mermory realm does not exist
Oracle出现ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务解决方法
遇到此问题多次了,于是决定记一下.
找到listener.ora文件打开,
# listener.ora Network Configuration File: f:\oracle\product\10.2.0\db_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = f:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = f:\oracle\product\10.2.0\db_1) (SID_NAME = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) |
上面红色标记部分为增加的部分,根据具体数据库安装的不同,分别更改GLOBAL_DBNAME、ORACLE_HOME、SID_NAME三个值,然后重新启动Oracle服务即可
Oracle split函数的用法
split函数故名思意就是用来分割字符串。做了个简单的实验:
看SQL语句:
Select * From Table (Split('1#2#3#4','#'))
得到的结果如下:
若想要把分割出来的记录与其他相关表进行关联查询,使用这张表与其他表进行关联即可。
Oracle Number的精度问题
今天写建表的脚本时,设置数据类型为Number(2,2),以为前面的这个参数是代表整数的位数,后面的参数是代表整数的未数,结果报出“精度错误”的问题,百度得到:
原来Number(P,S)是代表总共P位数,其中小数有S位
卸载Oracle10g步骤
很郁闷的不知道为啥的装Oracle10g就出错了,无法创建实例等问题。于是就想到先卸载,但是之前听说Oracle的卸载异常麻烦,之前是用9i的,听过如果第一次装失败,基本上要重装系统了。不过今天百度了下,并且按照里面的做了,接着再装Oracle就可以了,于是记录下具体卸载方法:(摘自网上)
0、开始->设置->控制面板->添加删除程序-> Oracle Data Provider for .Net Help 1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务; 2、开始->程序->Oracle – OraDb10g_home1>Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除; 3、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口; 4、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口; 5、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口; 6、开始->设置->控制面板->系统->高级->环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定; 7、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标; 8、删除c:\Program Files\Oracle目录; 9、重新启动计算机,重起后才能完全删除Oracle所在目录 ; 10、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows XP目录(一般为d:\WINDOWS)下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等; 11、WIN.INI文件中若有[ORACLE]的标记段,删除该段; 12、如有必要,删除所有Oracle相关的ODBC的DSN(管理工具/数据源(ODBC)); 13、到事件查看器(管理工具/事件查看器)中,删除Oracle相关的日志(只能删除所有,右击某个目录,清除所有事件) |
其中有很多步我都没用到,可能是因为刚刚装完的缘故吧。还没产生其他垃圾数据和文件。