TOP

php5.4.1 安装出现 error: ‘struct gdIOCtx’ has no member named ‘data’

ext/gd/gd_ctx.c:67:8: error: ‘struct gdIOCtx’ has no member named ‘data’

解决方法:这个错误算是php5.4的bug?下面对应的两篇文章有对应的说明:

https://bugs.php.net/bug.php?id=55224

https://bugs.php.net/bug.php?id=60108

个人采用的方法:
vi <gd_dir>/include/gd_io.h
gdIOCtx结构中增加void *data;

 

gdparttopng.c:42: undefined reference to `gdImageCreateFromGd2Part’

yum install  libjpeg-devel freetype-devel libpng-devel
make clean后重新./configure make&make install

Read More
TOP

linux中常用的压缩和解压缩的命令

经常不用总会忘记这些命令,所以做了个整理,

tar/gz/bz/gz2/bz2…压缩与解压缩

*.gz2用gunzip2 *.gz2
For examplegunzip2 *.tar.gz2,解出一个*.tar文件,
然后tar -vxf *.tar即可

.rar格式

解压:[*******]$ rar a FileName.rar

压缩:[*******]$ rar e FileName.rar    

rar请到:http://www.rarsoft.com/download.htm 下载!

解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量

指定的目录也行):[*******]$ cp rar_static /usr/bin/rar

.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName

rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar
———————————————
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName

lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp lha /usr/bin/
———————————————
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
———————————————
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
———————————————
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName

sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
sEx请到: http://sourceforge.net/projects/sex下载!
解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp sEx /usr/bin/

gzip 命令

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。

语法:gzip [选项] 压缩(解压缩)的文件名
该命令的各选项含义如下:

-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
     压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),
-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
指令实例:

gzip *
% 把当前目录下的每个文件压缩成 .gz 文件。

gzip -dv *
% 把当前目录下每个压缩的文件解压,并列出详细的信息。

gzip -l *
% 详细显示例1中每个压缩的文件的信息,并不解压。

gzip usr.tar
% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。
Read More
TOP

WEB创业的十条规则

1、收缩:专注于一个尽可能小的可能存在的难题,而你又能够解决这个难题。不要想着什么都做,贪多嚼不烂,搞不好就成了模仿者。小可以变大,船小好调头,小可以带给你很多优势,缝隙市场可以变成一个大市场。不要试图把1亿上网用户都当成你的用户,没用,能真正解决一部分用户的一部分需求,就足够你玩儿的。 

2、差异:要记住很多人都在做着跟你一样的事情,而其中一个是Google。在这个市场上,专才比通才有用。不一定要做多么领先的事情,寻常的事情你同样可以做得跟别人不一样,比如Google。起名字也不要用那些通用词汇,比如像博客网、中国博客网、亚洲博客网、世界博客网之类的,太多了没人分得清谁是谁。

3、随意:随意的网络要大于刻意的网络,因为人们还要生活。创建一种服务让它适应并对人们每天的生活有所助益,而不要要求太多的承诺或改变他们的身份。放轻松,很多时候,偶然的需要让你的服务更有价值,就像Skype上偶然发生的对话。既然生活本身就是随意的、偶然的,不要总是试图限制用户。

4、挑剔:这一点适用于很多方面:服务的特性、员工、投资者、合作伙伴、记者采访等等。如果感觉某样东西不太对劲,就放一放。Google最强大的力量之一,就是他们乐于对机会、快钱、可能的雇员以及交易说不。但很多人太心切,太怕错过这村没这店,所以往往来者不拒,最终将会后悔。

5、以用户为中心:用户体验就是一切。你的整个公司都必须建立在这上面,如果你不懂什么叫以用户为中心的设计,赶快学,雇用懂的人。把对的特性做对,远超过添加一百个特性。Ajax是为了让网站更互动,而不是因为它很性感。API是为了让开发者更容易为用户增加价值,而不是为了去取悦geek们。

6、自我本位:伟大的产品从来都是来自一个人自身的渴求。创造你自己需要的产品,成为你自己产品的用户,雇用你的产品的用户,按你自己的愿望改善它。另一方面,避免在费用、用户、或者有可能妨碍你改善产品等方面,跟大公司做交易。因为你小他们大,你很难说不。

7、饥渴:有选择永远好过没选择,最好的办法就是有收入。要为你的产品设计出收费模式并在6个月内开始有进项,这样你才会有市场费用。而且,有收入也会让你在融资或收购谈判中,处于更有利的位置。不过在中国可能没这么简单,为了赚钱而让服务变形的事总是在发生着。

8、苗条:保持低成本是一种Web创业智慧。能使用互联网上现有的服务,就不要花钱买。如果你希望被大公司收购,就更不能让自己显得很庞杂,小公司更容易被收购。Tim O'Reilly说过,如果你看到一家公司在市场活动上花很多钱,你可以肯定地知道,这不是一家Web 2.0公司。充分利用互联网现成的资源,也是一种能力。

9、灵活:要学会改变计划。Pyra最初要做的是一个项目管理程序,而不是Blogger。Flickr最初要做的是游戏。Ebay最初也只是想销售拍卖软件。最初的设想几乎永远都是错的。一开始就认定自己是对的,很可能撞上南墙。要把创业过程,变成一个BETA过程,不断debug,不断调整,不断改进。

10、平衡:初创公司是什么样?目光迷离、睡眠不足、垃圾食品充饥、咖啡提神……还有呢?要知道,自然要求健康的平衡,当平衡成为你的公司的一部分,你就拥有了一样秘密武器。需要玩儿命,也需要玩儿。一个充满活力的平衡的团队,也会给人更多的信任和期待。

谨慎(这个是额外的奖励):不要拿上面的戒律当成金科玉律,凡事总有例外。
Read More
TOP

如何手工释放oracle共享内存

今天编写的两条极具杀伤力的命令,它可以瞬间将Oracle杀死在无形之中。后面我将给出简单注释并展示一下它的威力。
$ ps -ef |grep $ORACLE_SID|grep -v grep|awk '{print $2}' | xargs kill -9
$ ipcs -m | grep oracle | awk '{print $2}' | xargs ipcrm shm

这两条命令的来由:
今天处理了三起Oracle数据库无故无法登录的问题,无论你采取什么手段都无法登陆到Oracle的SQL*PLus中,更谈不上故障排查了。
这种情况下有两种选择,第一种选择是经过一个较长的时间来排查故障原因,另外一种方法是不惜一切代价启动数据库以便尽快恢复生产。

如果是测试实验环境可以使用第一种方法来完成,对于排查问题的经验积累是有意的。
如果是生产环境,减少停机时间是最最至上的原则,所以我们只有不惜一切代价让数据库尽快恢复使用。

对于尽快恢复生产的方法主要也有两种。
第一种不惜代价的方法是重启服务器主机,彻底释放一切资源,重新来过,这种方法是有效的,不过停机时间还是有点长,而且技术含量比较低,所以不是很推荐使用这种超级“简单粗暴”的方法。
第二种方法就是我将要给大家展示的方法。

1.第一步:使用Linux的kill命令杀死所有与oracle有关的进程。
1)查询到与ORACLE_SID相关的oracle进程
$ ps -ef |grep $ORACLE_SID
oracle    7776     1  0 22:51 ?        00:00:00 ora_pmon_ora10g
oracle    7778     1  0 22:51 ?        00:00:00 ora_psp0_ora10g
oracle    7780     1  0 22:51 ?        00:00:00 ora_mman_ora10g
oracle    7782     1  0 22:51 ?        00:00:00 ora_dbw0_ora10g
oracle    7784     1  0 22:51 ?        00:00:00 ora_dbw1_ora10g
oracle    7786     1  0 22:51 ?        00:00:00 ora_lgwr_ora10g
oracle    7788     1  0 22:51 ?        00:00:00 ora_ckpt_ora10g
oracle    7790     1  0 22:51 ?        00:00:00 ora_smon_ora10g
oracle    7792     1  0 22:51 ?        00:00:00 ora_reco_ora10g
oracle    7794     1  0 22:51 ?        00:00:00 ora_cjq0_ora10g
oracle    7796     1  0 22:51 ?        00:00:00 ora_mmon_ora10g
oracle    7798     1  0 22:51 ?        00:00:00 ora_mmnl_ora10g
oracle    7832     1  0 22:51 ?        00:00:00 ora_arc0_ora10g
oracle    7834     1  0 22:51 ?        00:00:00 ora_arc1_ora10g
oracle    7836     1  0 22:51 ?        00:00:00 ora_qmnc_ora10g
oracle    7842     1  0 22:51 ?        00:00:00 ora_q000_ora10g
oracle    7847     1  0 22:52 ?        00:00:00 ora_q001_ora10g
oracle    7951  7592  0 23:11 pts/2    00:00:00 grep ora10g

2)去除掉包含grep命令本身的记录
$ ps -ef |grep $ORACLE_SID |grep -v grep
oracle    7776     1  0 22:51 ?        00:00:00 ora_pmon_ora10g
oracle    7778     1  0 22:51 ?        00:00:00 ora_psp0_ora10g
oracle    7780     1  0 22:51 ?        00:00:00 ora_mman_ora10g
oracle    7782     1  0 22:51 ?        00:00:00 ora_dbw0_ora10g
oracle    7784     1  0 22:51 ?        00:00:00 ora_dbw1_ora10g
oracle    7786     1  0 22:51 ?        00:00:00 ora_lgwr_ora10g
oracle    7788     1  0 22:51 ?        00:00:00 ora_ckpt_ora10g
oracle    7790     1  0 22:51 ?        00:00:00 ora_smon_ora10g
oracle    7792     1  0 22:51 ?        00:00:00 ora_reco_ora10g
oracle    7794     1  0 22:51 ?        00:00:00 ora_cjq0_ora10g
oracle    7796     1  0 22:51 ?        00:00:00 ora_mmon_ora10g
oracle    7798     1  0 22:51 ?        00:00:00 ora_mmnl_ora10g
oracle    7832     1  0 22:51 ?        00:00:00 ora_arc0_ora10g
oracle    7834     1  0 22:51 ?        00:00:00 ora_arc1_ora10g
oracle    7836     1  0 22:51 ?        00:00:00 ora_qmnc_ora10g
oracle    7842     1  0 22:51 ?        00:00:00 ora_q000_ora10g
oracle    7847     1  0 22:52 ?        00:00:00 ora_q001_ora10g

3)使用awk命令得到我们关心的进程号
$ ps -ef |grep $ORACLE_SID |grep -v grep|awk '{print $2}'
7776
7778
7780
7782
7784
7786
7788
7790
7792
7794
7796
7798
7832
7834
7836
7842
7847

4)万事俱备,我们最后使用kill命令将oracle的进程杀死,因此得到了下面完整的命令
$ ps -ef |grep $ORACLE_SID |grep -v grep|awk '{print $2}' | xargs kill -9

2.第二步:使用Linux的ipcs和ipcsrm命令释放oracle占用的共享内存。
1)使用ipcs命令查看系统中共享内存使用情况
$ ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 32768      root      644        72         2          dest
0x00000000 65537      root      644        16384      2          dest
0x00000000 98306      root      644        280        2          dest
0x00000000 131075     root      644        790528     2          dest
0x00000000 163844     root      644        790528     2          dest
0x00000000 196613     root      644        790528     2          dest
0x00000000 327689     oracle    644        790528     2          dest
0x00000000 360458     oracle    644        790528     2          dest
0x00000000 393227     oracle    644        790528     2          dest
0xecc5fba0 786447     oracle    640        5370806272 30

2)使用grep命令过滤后得到与oracle相关的内容
$ ipcs -m | grep oracle
0x00000000 327689     oracle    644        790528     2          dest
0x00000000 360458     oracle    644        790528     2          dest
0x00000000 393227     oracle    644        790528     2          dest
0xecc5fba0 786447     oracle    640        5370806272 31

2)使用awk命令获得上面我们关心的shmid字段内容
$ $ ipcs -m | grep oracle | awk '{print $2}'
327689
360458
393227
786447

3)最后使用ipcsrm命令释放共享内存
$ ipcs -m | grep oracle | awk '{print $2}' | xargs ipcrm shm
resource(s) deleted

再次查看一下,此时共享内存已经被释放。
$ ipcs -m | grep oracle
0x00000000 327689     oracle    644        790528     2          dest
0x00000000 360458     oracle    644        790528     2          dest
0x00000000 393227     oracle    644        790528     2          dest
0x00000000 786447     oracle    640        5370806272 31         dest

3.此时,我们便可以登录到数据库,最后启动数据库恢复生产。

4.小结
这种方法相对也是比较“粗暴”的。不过在危难之时还是可以派上用场。
重点强调:
手工杀掉oracle进程和手工释放共享内存是非常危险的,不到万不得已,千万不要使用;
这里我给出的两条极具杀伤力的命令,请不要轻易尝试。
Read More
TOP

ORACLE_SID ,Instance, instance_name,service_name

ORACLE_SID的含义
SID是systemidentifier的缩写,而ORACLE_SID就是ORACLE SYSTEM IDENTIFIER 的缩写,在oracle系统中,ORACLE_SID以环境变量的形式出现,当oracle实例启动时,在操作系统fork的进程就依据这个ORACLE_SID来创建。

oracle的实例
instance 是由一块共享内存区域 SGA和一组后台进程 background process共同组成的,而后台进程正式数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。
instance_name
oracle数据库内部存在一个初始化参数 instance_name,用于表示数据库实例的名称,其缺省值通常就是ORACLE_sid;但是初始化参数INSTANCE_name和ORACLE_SID可以不同,不同实例可以拥有相同的INSTANCE_NAME.
在同一个ORACLE_HOME下,只要ORACLE_SID不同,数据库并不校验INSTANCE_NAME参数;通过简单的参数文件复制,就可以在同一台服务器上创建多个具有相同instance_name的实例。
db_name
相较instance_name参数来说,对于oracle数据库更为重要的一个参数是DB_NAME。BD_NAME代表了实例即将挂接的数据库名称,关系到具体的无力文件。通常缺省的数据库INSTANCE_NAME 和 DB_NAME 可以设置相同(在RAC环境下,由于多个实例对应一个数据库,所以INSTANCE_NAME和DB_NAME不同)。
在oracle文档中,对于DB_NAME的定义如下:DB_NAME用来定义数据库名称,必须是一个不超过8个字符的文本串,在数据库创建过程中,DB_NAME被记录在数据文件,日志文件和控制文件中。如果数据库实例启动过程中参数文件中的DB_NAME和控制文件中的数据库名称不一致,则数据库不能启动。

此外还有几个结论:
1、 一个实例可以mount并打开任何数据库,但是同一时间一个实例只能打开一个数据库
2、 一个数据库可以被一个或多个实例所mount并打开(在OPS/RAC环境下,一个数据库可以被多个实例打开),在非并行模式(OPS/RAC)下,一个数据库只能被一个实例加载
DB_NAME的另外一个作用是在监听器动态注册时作为缺省服务名注册。

service_name
service_name=DB_NAME.DB_DOMAIN
Read More
TOP

Oracle Addr 的浅析。

The term “ADDR” is used to denote the address of a process that occurs in an Oracle database. It is an invaluable tool for troubleshooting the database as it can be used to pinpoint exactly where problems are occurring within the database. This can either be accomplished by executing preloaded Oracle scripts or by running those that were custom written by the database administrator.

One of the primary functions of Oracle ADDR is to retrieve information from the database. The tool has the ability to tell the user or troubleshooter exactly where the process they are searching for occurs. Hence, if there is a problem in the system it can be used to notify the user or troubleshooter of exactly where it occurs.

It is a standard part of the v$process table, a function that is used to monitor and display all the processes that are connected to the database. Plus, the ADDR function can be used to obtain the IP address of the system. The function can also be used to publish information to a particular location, this could include pushing data to a website or to another application.

Killing the Process

The Oracle ADDR function can also be used to locate the instance and the SPID (system process id) of the background processes and individual Oracle sessions. This is information can be quite handy if there is ever a need to end a particular process, because killing the ORACLE.EXE process could possible crash the entire database. ADDR is frequently used interchangeable with the term PADDR.

Read More
TOP

解决Restarting dead background process QMN0 问题一例

同事说一个数据库应用升级之后无法启动。
后台连续报错:
Sun Apr 30 10:48:41 2006
Restarting dead background process QMN0
QMN0 started with pid=9
Sun Apr 30 10:53:42 2006
Restarting dead background process QMN0
QMN0 started with pid=9
那么QMN0是什么进程呢?

Queue Monitor Processes (QMNn)
队列监视进程是一个可选的后台进程,为Oracle Streams Advanced Queuing所使用。
最多可以配置10个队列监视进程。和Job进程一样,该进程的异常不会导致数据库的Crash。

通常这个错误不会导致数据库无法启动,但是在某些平台上会存在Bug,可能会导致数据库无法启动。
如果没有用到Oracle Streams Advanced Queuing选件,就可以取消该进程,数据库自然就可以启动了:

SQL> show parameter aq

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------
aq_tm_processes                      integer     1
SQL> alter system set aq_tm_processes=0 scope=both;

System altered.

SQL> alter database open;

Database altered.

此案例的数据库版本为9.2.0.3,平台为Sun Solaris:

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.3.0 - 64bit Production
PL/SQL Release 9.2.0.3.0 - Production
CORE    9.2.0.3.0       Production
TNS for Solaris: Version 9.2.0.3.0 - Production
NLSRTL Version 9.2.0.3.0 - Production

SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

$ isainfo -v
64-bit sparcv9 applications
32-bit sparc applications
Read More
TOP

linux 下不同的文件形态和文件权限

- 一般文件

d 目录文件

l 符号链接文件

b 磁盘设备文件

c 字符设备文件

s socket文件

p 连接文件

3种身份,四种权限:

u:自己

g:和自己同一个组的人

o:其它人

a:所有人

r:读

w:写

x:执行

s:特殊权限

 

Read More
TOP

ORA-29807

dbca创建数据库是出现两个ORACLE的两个错误

1,ORA-29807: specified operator does not exist
在数据库创建过程的“创建数据字典视图”阶段中,您将接收到一个 ORA-29807 错误。如果您搜索日志文件,您将看到以下内容:    drop operator XMLSequence

*

ERROR at line 1:

ORA-29807:specified operator does not exist

这是一个已知的问题 (Bug:2686156),并且可被忽略。要继续数据库创建过程,请单击 “Ignore” 按钮

    安装完成后,在$ORACLE_HOME/rdbms/admin 目录下运 行utlrp.sql ,用于修补ORA-29807 错误。
     解释
     ORA-29807: specified operator does not exist
This is a known issue (bug 2925665). You can click on the “Ignore” button to continue.
Once DBCA has completed database creation, remember to run the ‘prvtxml.plb’ scrīpt
from $ORACLE_HOME/rdbms/admin independently, as the user SYS. It is also advised
to run the ‘utlrp.sql’ scrīpt to ensure that there are no invalid objects in the database at this time.
修复这个BUG,登陆SQLPLUS
# sqlplus “sys/system as sysdba”
SQL*Plus: Release 9.2.0.4.0 – Production on Thu Nov 1 15:52:14 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 – Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 – Production
SQL>@/oracle/app/oracle/product/9.2.0.4/rdbms/admin/utlrp.sql
Read More
TOP

Linux下删除oracle实例

前两天远程重建oracle实例过程中遇到的问题,记录如下:
1、vnc遭遇常见错误
[root@db1 bdump]# vncserver
You will require a password to access your desktops.
Password:
Verify:
New 'db1.bts.com:1 (root)' desktop is db1.bts.com:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/db1.bts.com:1.log
运行dbca出现下面错误:
[oracle@Text bin]$ ./dbca
Xlib: connection to "192.168.8.157:0.0" refused by server
Xlib: No protocol specified
java.lang.NoClassDefFoundError
处理:在root用户下执行xhost +后,su - oracle切换到oracle用户下运行dbca建库即可。

2、删除oracle实例记录
方法一、从图形界面运行dbca,选择删除,按提示一路next;
方法二、我用的方法
2.1、关闭所有oracle进程,其实只要shutdown abort即可。因我的机器oracle没设置为开机自动启动,所以重启机器后oracle进程一个也没有,系统很是干净。
2.2、删除实例数据文件和dump文件;
find $ORACLE_BASE/ -name $ORACLE_SID
在我系统里面显示如下,将这些目录直接删除;
/u01/app/oracle/admin/testdb
/u01/app/oracle/oradata/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/testdb
2.3、删除其他配置文件
find $ORACLE_BASE/* -name '*[Bb][Tt][Ss][Dd][Bb]2*' | grep -v admin| grep -v  oradata
将查找结果出现的文件也一一删除,当然你可以用xarg结合rm删除。
我find结果如下:
 /u01/app/oracle/flash_recovery_area/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/testdb
/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/testdb
/u01/app/oracle/product/10.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_host_testdb
/u01/app/oracle/product/10.2.0/db_1/rdbms/log/alert_testdb.log
/u01/app/oracle/product/10.2.0/db_1/host_testdb
/u01/app/oracle/product/10.2.0/db_1/host_testdb/sysman/emd/state/A190EE260BF6B09EB580580728916A3B.alert_testdb.log
/u01/app/oracle/product/10.2.0/db_1/host_testdb/sysman/log/nmctestdb1521
/u01/app/oracle/product/10.2.0/db_1/dbs/alert_testdb.log
/u01/app/oracle/product/10.2.0/db_1/dbs/lktestdb
/u01/app/oracle/product/10.2.0/db_1/dbs/hc_testdb.dat
/u01/app/oracle/product/10.2.0/db_1/dbs/orapwtestdb
/u01/app/oracle/product/10.2.0/db_1/dbs/spfiletestdb.ora
2.4、最重要的一步,如果你要重建的实例和刚删除实例的实例名一样的话,删除
/etc/oratab文件最后一行。
至此,已干净删除linux系统的oracle实例!
Read More