DUL恢复数据库过程
本文是本人使用DUL工具恢复Oracle数据库的一次过程...... [@more@] 单位数据库出现故障,只能mount,不能open,想尽一切办法也没能启动。我判断数据文件并没有损坏,出错的可能是系统文件,非归档模式没有任何备份!因此想起最后一招:Dul。在网上寻找很长时间才找到这个Oracle内部密不外传的工具,全部希望都寄托在她身上了。dul工具仅仅就是一个不到200k的可执行文件,我的数据库是8.1.7,Dul也需要是对应8版本的dul8.exe 。下面简要的记录一下恢复过程:1. 首先建配置文件init.dulosd_big_endian_flag=falseosd_dba_file_bits=10os
Win2000下总让网卡激活的方法
对于稍新的网卡,Win2000下有一个缺省设置:当网线断开时,网卡的IP地址自动取消 [@more@] 这样会使一些应用程序无法连接IP地址。可以通过制作一个回路的RJ45头解决,也可以用通过修改注册表解决。在HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters下新建一个双字节(DWord):DisableDHCPMediaSense(注意大小写),设为十六进制,数值为“1”。
BDE配置中的一个参数:SHAREDMEMLOCATION
用Delphi编写数据库程序经常会用到BDE [@more@] 但是前一段发现一个问题,根据程序需要修改了BDE的设置,结果发现只能运行一个实例,再打开这个程序或其他用到BDE的程序系统就会报错:Exception: EDBEngineErrorMessage: An error occurred while attempting to initialize the Borland Database Engine (error $2501)感觉还是BDE设置不当的原因,因此在网上搜索,终于得到解决办法:修改BDE设置中Configuration/System/INIT将 SHAREDMEMLOCATION 改为: 0x5BDE ,保存后问题解决。其实具体的原理我也没太搞明白,只是这样能解决问题。
pcAnywhere、VNC和XP远程桌面的使用感受
pcAnywhere、VNC和XP的远程桌面都是比较流行的远程控制软件...... [@more@] 最开始使用的就是pcAnywhere,第一印象就是大而全,功能十分强大,远程计算机的所有操作都可以使用,而且传输可以加密,安全性比较高,文件传输也比较方便。总之,我能想到的功能都有了。缺点就是需要分别安装主控端和被控端,而且好像只能Windows平台上运行,安装程序太大,对连接带宽要求比较高。我一般会在服务器上安装被控端,然后在自己的机器上安装主控端,省去了每次维护服务器都需要去机房了。另外想说一点的是向主控端发送Ctrl+Alt+Del命令是Ctrl+A
处理TEMP表空间满的问题
服务器出现TEMP表空间疯狂扩大,达到上限,无法扩展。 [@more@] 由于大量的排序操作造成服务器上Oracle数据库的TEMP表空间疯狂增长,数据库无法运行,做什么都超级慢,重新启动也无法解决!同样利用网络找到了解决方法:1、 使用如下语句查看一下认谁在用临时段SELECT username,sid,serial#,sql_address,machine,program,tablespace,segtype,contents FROM v$session se,v$sort_usage suWHERE se.saddr=su.session_addr 2、 那些正在使用临时段的进程SQL>Alter system kill session 'sid,serial#';3、把TEMP表空间回缩一下SQL>A
快速杀掉Oracle的Session
很多的时候我们需要迅速的杀掉Oralcle的一些session...... [@more@] 单位服务器上的Oracle突然出现无法连接的现象,提示进程已经达到了最大的限制,奇怪!在线不过几个人为什么达到了500个进程?肯定是由于程序错误造成大量死进程留在系统中。但是杀掉这些死进程却很麻烦。在网上找了半天终于发现Orakill这个命令! C:>orakill -helpUsage: orakill sid thread where sid = the Oracle instance to target thread = the thread id of the thread to kill The thread id should be retrieved from the spid column of
一次Oracle数据库恢复过程
单位的Oracle数据库又出问题了,经过努力终于恢复..... [@more@] 2月24日下午3点,一个同事一不小心误删除了一个重要的业务数据表。该表大概有140万记录,存储着近三年的销售数据。幸好有前一天的备份,而且当天没有业务发生,也就是说恢复前一天的数据就可以了。不过平时的备份是通过冷备份,copy所有的数据文件、控制文件和重做日志文件,这样就决定了无法单独恢复一个表,只能全数据库的恢复。无奈,为了不影响业务系统的运行,只好在另外一台PC机上安装了一个与服务器完全相同的环境,Win2000+Oracle8.1.7。然后copy所有的备份文
用视图解决数据库链路问题
Oracle8.1.7与以前的版本好像总有些不兼容。 [@more@] 本人在使用Oracle8.1.7的时候遇到了一个怪现象,在Sqlplus中使用数据库链路没有任何问题,但一到了Forms Builder中,如果在触发器中使用数据库链路,编译的时候就会出现错误。错误现象根据不同版本的Forms Builder略有不同,主要是自动退出,不留任何错误提示,这也就为寻找错误带来了不便。以前的程序在数据库升级后都无法重新编译了,为此我们想了很多办法。同义词不行,比如:用xxx替代xxx@db_link,还是出错。用数据库级的存储过程倒是可以,但太麻烦。还有一种笨办法,用低版
Tru64 Unix中查看系统资源的一些命令
Tru64 Unix中一些有用的东西。 [@more@] 单位的ES40很久以前就坏了,可是始终没人去修。感觉Tru64 Unix用的人不是很多,精通的就更少。自己研究了一段,总算把操作系统和Oracle数据库都装上了,但是感觉比以前慢了许多。这是为什么呢?困扰了我很长时间,直到今天请教了别人,才有点眉目。可能是我修改操作系统中系统参数的方式有问题,我是用vi直接编辑/etc/sysconfigtab,在后面加入了ipc: shm_max = 2139095040 shm_mni = 128 shm_seg = 32但是人家告诉我一个命令:sysconfig -q ipc,结果发现ipc参数与我修改的不同,也就是说
用Developer2000开发POS机程序常见问题的解决-3
POS机的程序更新是一个很令人头痛的问题,尤其是POS机数量比较多的时候。 [@more@] 如果手工逐个更新POS机的程序实在是太麻烦了,而且容易遗漏。要是能像其他软件一样可以自动检测程序的版本,并且可以自动下载最新的更新程序就好了。我的解决思路大致是:1.建立一个FTP服务器,用于存储最新的更新程序。2.建立一个表用于存储最新的版本号。3.在安装目录中存放一个文本文件存储当前的版本号。4.在登录的时候比对文本中的版本号与服务器数据库中的版本号,如果不同则下载最新的程序。登录程序的WHEN-NEW-FORM-INSTANC触发器内容如下:D
用Developer2000开发POS机程序常见问题的解决-2
POS机的开发很重要的一点就是解决各种设备的驱动,比如打印机、顾客显示屏、钱箱等。 [@more@] 以打印机为例,在FORM中可以用TEXT_IO来完成打印功能,程序如下:PROCEDURE prn(linebuf varchar2) ISBEGIN declare out_file text_io.file_type; begin out_file:=text_io.fopen('PRN','w'); text_io.putf(out_file,' %sn',linebuf); text_io.fclose(out_file);null; end;END;注:需要先在Windows系统下添加相应的打印机驱动程序。但有时打印机的驱动就是一个dll文件,TEXT_IO就不适用了,需要用ORA_FFI来解决。以下是
用Developer2000开发POS机程序常见问题的解决-1
本人一直用Developer2000中的FORM开发POS机程序,总结了一点开发经验。 [@more@] 在POS机开发过程中发现一些POS机必须功能用Developer2000的FORM很难实现,比如程序需要判断POS机与服务器之间的数据通讯是否正常,如遇到服务器数据库没有启动,数据库意外终止,网络意外中断等情况,程序需自动切换到单机模式下进行收款工作。经过一段时间的摸索,发现在FORM中采用ON-ERROR触发器可以基本实现。ON-ERROR触发器文本如下:if dbms_error_code in(-3114,-3113,-1033,-1034,-1089,-1090) then message('网络故障!!!');synchronize;
Oracle Terminal使用实例
很多人在使用Oracle Terminal时经常遇到一些困难,这是我总结的一点经验,希望能有些帮助。 [@more@] 首先声明,我使用的版本是Form6.0。运行Oracle Terminal,打开fmrzhsw.res(如果缺省语言用英文则打开frmusw.res,二者操作是一样的)。运行Funcations中的Edit Keys,或点击工具条上第一个写着K的图标。点击runform后按Edit Key Bindings…这里就是一些最常用功能对应的功能键定义。可以看出Accept(提交)对应的竟然是Control+<,怪不得F10不能存盘了。真不知道Oracle是怎么搞的,从Form6开始这些功能键与以前不一样了。马上作
怎样确定恰当的Oracle数据块尺寸
在创建数据库之前所要作的最重要的决定是选择数据库中数据块的尺寸。 [@more@] 一旦创建了数据库,Oracle数据库中数据块的尺寸就不能改变了。数据块的尺寸在数据库的整个生存期中既不能增加也不能减少。数据块的尺寸由数据库初始化参数DB_BLOCK_SIZE指定。数据块是数据库存储的最小单元,也是数据库I/O的最小单元。Oracle 数据块的尺寸必须是操作系统块尺寸的倍数。在所有操作系统上,数据块尺寸最小必须为2048字节。而允许的最大数据块尺寸有赖于操作系统的类型,不过在Oracle8i 中最大不能超过32K。如用于数据仓库的决策支持或联机
Oracle数据库中Create user的注意事项
Create user看似简单,但如果不注意还是会出现一些错误。 [@more@] 数据库中的每个用户都与两种类型的表空间有关:* 用户的缺省表空间,它是Oracle 创建缺省用户对象的所在。* 用户的临时表空间,在该表空间中, Oracle 为执行基于磁盘的数据排序创建临时段。当在CREATE USER 语句中创建了用户而没有直接指定其缺省表空间和临时表空间时,Oracle 将设置SYSTEM 表空间为该用户ID 的缺省和临时表空间。如果该数据库中的用户都将SYSTEM 表空间作为它们的缺省或临时表空间,就可能导致SYSTEM 表空间产生大量碎片。
对Oracle数据库中Stroage子句的一些理解
在工作中经常能遇到因Stroage参数设置不当引起的问题,以下是我对Storage子句的一些浅显的理解。 [@more@] INITIAL 对象建立时分配的初始区的大小NEXT 与 PCTINCREASE 一起使用,用于计算后来分配的区的大小PCTINCREASE 下一次分配的区要增加的百分比MINEXTENTS 给对象(当它建立时)分配的区的最小数量MAXEXTENTS 可以分配给对象的区的最大数量一旦建立了某个对象,它的数据存储参数INITIAL 和MINEXTENTS 不能修改,除非删除和重新创建该对象。对于NEXT 和 PCTINCREASE 的任何更改都只影响后来分配的那些区。如果一个表空间的PCTINC
移动Oracle数据文件的方法
这是以前操作的一个实例,环境Oracle8.1.6+Tru64Unix4.0F。 [@more@] svrmgrlconnect internal;shutdown immedaite;exit;mv /oracle/dbs/oradata/ora8/temp01.dbf /bak/temp01.dbfsvrmgrlconnect internal;startup mount ora8;alter database rename file '/oracle/dbs/oradata/ora8/temp01.dbf' to '/bak/temp01.dbf';alter database open;注意:mv前一定要注意目标文件夹是否有与源文件重名的文件,否则死定了,这是血的教训。
Oracle8.1.6 for Tru64的安装
虽然Oracle在Unix下的安装都类似,但我感觉在Tru64下还是比较复杂。 [@more@] 1.创建文件系统 disklabel -r dsk4c 查看 disklabel -rw dsk4c 重写 diskconfig 配置2.创建dba组 addgroup 创建oracle用户adduser mkfdmn /dev/disk/dsk4c oralce_domain mkfset oracle_domain oracle mkdir /oracle mount oracle_domain#oracle /oracle3.编辑.profile文件 ORACLE_BASE=/oracle ORACLE_HOME=$ORACLE_BASE/product/8.1.6 ORACLE_SID=ora8 ORACLE_TERM=vt100 ORACLE_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
Tru64 Unix5.1A在ES40上的安装
这台ES40可把我折磨苦了,一次次失败,总结出这个安装过程,不一定很全,但我就是这么做的。 [@more@] 1.shutdown -h now p00>>>show device 查看设备 b dqa02.进入图形安装界面,选择自定义3.分区磁盘 a区:root区 512M b区:swap区 512*3M g区:/usr区 剩余磁盘空间1/24.不编辑系统配置文件5.修改系统文件 /etc/securettys 在末行加一行 ptys,允许root远程telnet /etc/ftpusers 在root一行前加#号,允许root远程ftp /etc/sysconfigtab 末尾追加 ipc: shm_max=2139095040 shm_mni=128 sh
Apache2.0.40+PHP4.2.3在win2000下的安装
刚接触PHP的时候,费了半个月的时间研究安装,其实就这么点东西,很简单呀,hoho。 [@more@] 1.默认安装Apache2。2.把php的压缩包解压,假设放在d:/php4下。3.php.ini-dist改名php.ini,拷贝到c:/winnt下。 将php4ts.dll 拷贝到c:/winnt/system32下。4.修改php.ini中 extension_dir=d:/php4/extensions register_globals=on session.save_path=d:/php4/tmp(手工建立此目录) session.auto_start=15.修改Apache2的配置文件httpd.conf。 将AddDefaultCharset ISO-8859-1改成GB2312, 再添加下面两行: Addtype applica