随着时间和连接,Oracle的listener.log会不断增长,这时就需要我们对其进行处理。若试图直接在listener启动时直接删除,可能会收到报错信息类似:The process cannot access the file because it is being used by another process。若直接停掉监听再删除,对于生产库,这基本是不被允许的操作,在Unix下面当然可以rm,但这个文件不会被自动重新创建。
正确方法:
cd $ORACLE_HOME/network/log
关闭日志记录:
lsnrctl set log_status off
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 18-JAN-2010 10:35:57
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=***)(PORT=1521)))
LISTENER parameter "log_status" set to OFF
The command completed successfully
移动监听日志到另一个地方:
mv listener.log listener.bak
然后打开日志记录:
lsnrctl set log_status on
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 18-JAN-2010 10:37:13
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Connecting to (DESCRIPTION ......
PL/SQL
1 概述
PL/SQL是一种过程化编程语言,用户可以使用PL/SQL编写过程、函数、程序包、触发器并且存储这些代码。
PL/SQL不区分大小写。
PL/SQL分为几部分:
declare 可选 声明部分
-----变量,游标,用户定义的异常
begin 执行部分
-----SQL语句
-----PL/SQL语句
exception 可选 & ......
闪回
1 特征
闪回数据库只是逻辑数据遭到破坏时的手段。
闪回数据库日志必须在数据库恢复区中创建。
闪回日志不需要归档,不能用于物理恢复。
执行闪回数据库操作时,背景进程RVWR就启动了。
2 使用闪回数据库
3种工具,SQL*Plus,RMAN,OEM。
(1)要求
为了使用闪回数据库,数据库必须处于归档日志模式。
(2)从SQL*Plus中闪回数据库
① 用户必须使用as sysdba连接到数据库。
② 关闭数据库
shutdown immediate;
③ 安装数据库
startup mount exclusive;
④ 使用alter system命令,设置db_flashback_retention_target为一个目标值,该值指定了可以闪回的时间上限(分钟)
alter system set db_flashback_retention_target = 数字;
⑤ 使用alter database 设置允许闪回
alter database flashback on;
⑥ 使用alter database open命令打开数据库。
⑦ 关闭数据库,重新安装数据库。
⑧ 使用flashback database to timestamp或flashback database to scn 数字 执行闪回操作。
⑨ 使用alter database open read only。
⑩ 确认闪回成功后,执行alter database open resetlog
......
闪回
1 特征
闪回数据库只是逻辑数据遭到破坏时的手段。
闪回数据库日志必须在数据库恢复区中创建。
闪回日志不需要归档,不能用于物理恢复。
执行闪回数据库操作时,背景进程RVWR就启动了。
2 使用闪回数据库
3种工具,SQL*Plus,RMAN,OEM。
(1)要求
为了使用闪回数据库,数据库必须处于归档日志模式。
(2)从SQL*Plus中闪回数据库
① 用户必须使用as sysdba连接到数据库。
② 关闭数据库
shutdown immediate;
③ 安装数据库
startup mount exclusive;
④ 使用alter system命令,设置db_flashback_retention_target为一个目标值,该值指定了可以闪回的时间上限(分钟)
alter system set db_flashback_retention_target = 数字;
⑤ 使用alter database 设置允许闪回
alter database flashback on;
⑥ 使用alter database open命令打开数据库。
⑦ 关闭数据库,重新安装数据库。
⑧ 使用flashback database to timestamp或flashback database to scn 数字 执行闪回操作。
⑨ 使用alter database open read only。
⑩ 确认闪回成功后,执行alter database open resetlog
......
在网上搜索了半天,主要原因是oci.dll是64位的,而PL/SQL developer只有32位的,在使用64位oci.dll文件时出错.
在网上找了很多资料,最方便的解决方案如下:
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.
3.最后要设置启动PL/SQL developer的环境,在PL/SQL developer的安装目录下建立一个bat文件,文件内容如下:
@echo off
set path=E:\develop\oracle\product\instantclient_10_2
set ORACLE_HOME=E:\develop\oracle\product\instantclient_10_2
set TNS_ADMIN=E:\develop\oracle\product\instantclient_10_2
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
start plsqldev.exe
其中NLS_LANG前部分必须是AMERICAN_AMERICA,后部分是数据库采用的字符集. ......
在网上搜索了半天,主要原因是oci.dll是64位的,而PL/SQL developer只有32位的,在使用64位oci.dll文件时出错.
在网上找了很多资料,最方便的解决方案如下:
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.
3.最后要设置启动PL/SQL developer的环境,在PL/SQL developer的安装目录下建立一个bat文件,文件内容如下:
@echo off
set path=E:\develop\oracle\product\instantclient_10_2
set ORACLE_HOME=E:\develop\oracle\product\instantclient_10_2
set TNS_ADMIN=E:\develop\oracle\product\instantclient_10_2
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
start plsqldev.exe
其中NLS_LANG前部分必须是AMERICAN_AMERICA,后部分是数据库采用的字符集. ......
【AUTOTRACE】SQL优化的重要工具--AUTOTRACE
提到SQL优化,不能不提AUTOTRACE的强大功能。使用起来非常便捷,不过在是使用之前,需要做一些配置的工作。简要的描述一下这个过程,供没有使用过的朋友参考。
1.使用sys用户执行plustrce脚本
sys@ora10g> @?/sqlplus/admin/plustrce
sys@ora10g> drop role plustrace;
drop role plustrace
*
ERROR at line 1:
ORA-01919: role 'PLUSTRACE' does not exist
sys@ora10g> create role plustrace;
Role created.
sys@ora10g> grant select on v_$sesstat to plustrace;
Grant succeeded.
sys@ora10g> grant select on v_$statname to plustrace;
Grant succeeded.
sys@ora10g> grant select on v_$mystat to plustrace;
Grant succeeded.
sys@ora10g> grant plustrace to dba with admin option;
Grant succeeded.
sys@ora10g> set echo off
2.将plustrace授权给public用户,以便保证所有用户都有权使用autotrace功能
sys@ora10g> grant plustrace to public;
Grant succeeded.
3.连接到具体的用户中,这里是sec用户
sy ......
【AUTOTRACE】SQL优化的重要工具--AUTOTRACE
提到SQL优化,不能不提AUTOTRACE的强大功能。使用起来非常便捷,不过在是使用之前,需要做一些配置的工作。简要的描述一下这个过程,供没有使用过的朋友参考。
1.使用sys用户执行plustrce脚本
sys@ora10g> @?/sqlplus/admin/plustrce
sys@ora10g> drop role plustrace;
drop role plustrace
*
ERROR at line 1:
ORA-01919: role 'PLUSTRACE' does not exist
sys@ora10g> create role plustrace;
Role created.
sys@ora10g> grant select on v_$sesstat to plustrace;
Grant succeeded.
sys@ora10g> grant select on v_$statname to plustrace;
Grant succeeded.
sys@ora10g> grant select on v_$mystat to plustrace;
Grant succeeded.
sys@ora10g> grant plustrace to dba with admin option;
Grant succeeded.
sys@ora10g> set echo off
2.将plustrace授权给public用户,以便保证所有用户都有权使用autotrace功能
sys@ora10g> grant plustrace to public;
Grant succeeded.
3.连接到具体的用户中,这里是sec用户
sy ......
Oracle性能优化与Delphi代码
刚学了点oracle方面的知识,感觉以前写代码只凭喜好写,完全没有深究缘由,导致在内行人看来,写的都是垃圾代码,现在就把学到的一些东西写出来,也算是给刚入门的朋友一点帮助吧。
以前,写数据库访问代码,感觉很简单,不就是sql语句嘛,所以什么语句都是这样写:
A:
qry1.Close;
qry1.SQL.Text := edt1.Text ;
qry1.Open
;
感觉挺好,语句自己拼,拼好了,直接执行。
还有另外一种写法:
B:
qry1.Close;
qry1.SQL.Text := edt1.Text
;
qry1.Parameters.ParamByName('vvv').Value := edt2.Text ;
qry1.Open
;
感觉这样写也是达到一样的结果,而用参数的方法,感觉很麻烦,多余,edt1.Text里变量还都得写成参数,所以从来不这样写,似乎也看不出和A方法有什么区别,只是更多了些麻烦。
最近学了点oracle性能优化方面的知识,知道了oracle的共享池,及其对性能的影响。共享池保存的是最近使用的sql语句,如果有相同的sql语句在共享池中,就不会再做分析、生成执行计划,效率就会提高很多,但是select
* from tableA where aa='a'和sel ......
Oracle性能优化与Delphi代码
刚学了点oracle方面的知识,感觉以前写代码只凭喜好写,完全没有深究缘由,导致在内行人看来,写的都是垃圾代码,现在就把学到的一些东西写出来,也算是给刚入门的朋友一点帮助吧。
以前,写数据库访问代码,感觉很简单,不就是sql语句嘛,所以什么语句都是这样写:
A:
qry1.Close;
qry1.SQL.Text := edt1.Text ;
qry1.Open
;
感觉挺好,语句自己拼,拼好了,直接执行。
还有另外一种写法:
B:
qry1.Close;
qry1.SQL.Text := edt1.Text
;
qry1.Parameters.ParamByName('vvv').Value := edt2.Text ;
qry1.Open
;
感觉这样写也是达到一样的结果,而用参数的方法,感觉很麻烦,多余,edt1.Text里变量还都得写成参数,所以从来不这样写,似乎也看不出和A方法有什么区别,只是更多了些麻烦。
最近学了点oracle性能优化方面的知识,知道了oracle的共享池,及其对性能的影响。共享池保存的是最近使用的sql语句,如果有相同的sql语句在共享池中,就不会再做分析、生成执行计划,效率就会提高很多,但是select
* from tableA where aa='a'和sel ......