Results tagged “oracle” from WHO IS 2HEI?

需求来了:一台老机器,系统是redhat9,上面需要安装oracle9i,呵呵,开始折腾!
生活就是在折腾来折腾去,最后也没弄清楚到底在折腾啥,完事后对这镜子哈哈大笑,至少我还折腾过!
废话少说,步入正题。

好久没有装过oracle9了,以往的笔记都是在rhel4下面使用vnc来操作的。
据说oracle9i也可以在字符界面下安装,
./runInstaller –silent –responseFile /opt/oracle/product/responfile
responfile是参数文件,oracle在安装时读取相关参数。
oralogo_small.gif


不过有人说oracle9i不能完全自动安装,还需要手动指定一些参数和执行相关脚本,这个具体没有试过,所以还是想到了以往的经验使用vnc来安装。

#uname -a
Linux 2.4.25 #2 SMP Wed Apr 28 13:10:52 CST 2004 i686 i686 i386 GNU/Linux
系统版本 redhat9,很老的版本
使用 rpm -qa | grep vnc 查看后并没有安装vnc。
redhat9从2004年就不更新了,好些包都已经不好找,还好我们可以使用CentOS3的安装包。
理由有下面两点:
1、rhel 3 与redhat 9 最后更新后的软件版本绝大部分相同
2、CentOS 3是从Redhat Enterprise Linux 3源代码重新编译的,与rhel 3完全兼容。
centos_logo_45.png

http://isoredirect.centos.org/centos/3/os/i386/RedHat/RPMS/
下面有好多rpm包,可以尽情享用了。

有些郁闷的是在安装vnc的时候发现系统也没有安装Xwindows,导致vnc无法运行,原因是相互依赖的很多包都没有,哎,开始郁闷了。

经过多次的尝试和努力,一个包一个包的下载和安装,如下:
rpm -ivh vnc-3.3.3r2-47.i386.rpm
rpm -ivh vnc-server-3.3.3r2-47.i386.rpm
rpm -ivh XFree86-xauth-4.3.0-122.EL.i386.rpm
rpm -ivh xterm-179-6.EL3.i386.rpm
rpm -ivh XFree86-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-75dpi-fonts-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-twm-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-data-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-twm-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-libs-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-twm-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-100dpi-fonts-4.3.0-122.EL.i386.rpm
rpm -ivh XFree86-base-fonts-4.3.0-122.EL.i386.rpm

呵呵,你说我容易吗,最后终于我的vnc可以运行了
vncserver已经可以监听端口和配置登陆密码了!
赶快切到oracle用户,启动vnc,
2008-12-06_093556.png
客户端vnc登陆后,








在解开的Disk1下,运行./runInstaller,呵呵呵,久违的oracle GUI安装界面映入眼帘,(具体9204的补丁及安装设置略,请见相关文档)
一路安装下去颇为顺利,很快装完。
最后要感谢铁岭电视台、感谢cctv、也要感谢提供软件的centos ...


| | Comments (0) | TrackBacks (0)

以前也一直在用sqlldr进行oracle的数据导入工作,但由于数据表结构比较简单,数据格式比较规范,所以简单的脚本即可完成任务,没有仔细的进行研究。

最近因为项目需要,要处理一个稍微复杂一点的表,涉及到日期字段,还有自增序列,字段比较复杂不规则,有很多空列,经过一番研究后,终于搞定,特此总结一下。

1. 空字段处理: TRAILING NULLCOLS   但是整行不能全空,否则整行无法插入
2. 日期字段处理:格式化处理 AddDate "to_date(:AddDate,'''yyyy-mm-dd hh24:mi:ss''')"
3. 自定义字段分割符 “|”
4. 采用触发器来处理自增字段,具体的建立方法可参考我的另一篇关于触发器的介绍带有条件的触发器trigger

ldr脚本如下:

vi sql.ctl    

LOAD DATA
INFILE '/home/oracle/data/table.data'
APPEND INTO TABLE table
fields terminated by '|'
TRAILING NULLCOLS

(
ID,
USERNAME,
PASSWORD,
AddDate "to_date(:AddDate,'''yyyy-mm-dd hh24:mi:ss''')"
)

数据文件样式  table.data

|test|test|2008-03-20 18:09:10

|2hei|2hei|2008-03-20 18:09:10

|admin|admin|2008-03-20 18:09:10

 

loader 脚本运行方式:

切换到oracle用户  su - oracle

或者root下执行 su -l oracle -c "sqlldr userid=2hei/2hei control=/home/oracle/data/sql.ctl log=/home/oracle/log/sql.log bad=/home/oracle/log/bad.log"

执行后可以查表,看看字段的插入情况。

如果有问题可以看执行后的log 或者 bad文件。

 

 

| | Comments (0) | TrackBacks (0)

今儿个做了一下Linux下resin的访问压力测试,感觉比较好玩,resin独立作为http Server
单点不做任何负载的情况下,resin最高可以坚持到3000访问,访问量在接近4000时http无响应。


测试环境:
FC6 + oralce10g + resin3.1.3
PC机配置: AMD Sempron(tm) Processor 3800+  , 1G RAM
内网环境: Web-Server IP:  172.16.0.252

系统内核:
# uname -a
Linux 2.6.18-1.2798.fc6 #1 SMP Mon Oct 16 14:54:20 EDT 2006 i686 athlon i386 GNU/Linux
系统参数:
more /etc/sysctl.conf
kernel.shmmax = 2147483648 (2G)              #oracle配置时 使用 2G   805306368    #768M               
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
kernel.threads-max = 8192
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1

相关参数值说明
    (1)shmmax:该参数定义了共享内存段的最大尺寸,因为安装了oracle,将其设置为2G。
    (2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
    (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
    (4)sem:该参数表示设置的信号量。
    (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
    (6)threads-max:表示指定内核所能使用的线程的最大数目。


Resin 3.1.3配置
resin.conf

<jvm-arg>-Xmx768m</jvm-arg>
<jvm-arg>-Xss1m</jvm-arg>
<jvm-arg>-Xdebug</jvm-arg>

<memory-free-min>1M</memory-free-min>
<thread-max>10240</thread-max>
<socket-timeout>65s</socket-timeout>
<keepalive-max>128</keepalive-max>
<keepalive-timeout>15s</keepalive-timeout>


因为pro版,需要license,所以使用resin3.1.3开源版。
当测试访问量达到512时,系统无法接受新的请求。
所以需要修改resin源文件,参考网上相关文章。

vi com.caucho.server.port.Port.Port.java
com.caucho.server.port.Port
// Secure override for load-balancers/proxies
  private boolean _isSecure;

  private InetAddress _socketAddress;

  // default timeout
  private long _socketTimeout = DEFAULT;

  private int _connectionMax = 512 ;      改为 10240
  private int _minSpareConnection = 16;

  private int _keepaliveMax = DEFAULT;

编译成功后替换resin.jar相应的类,重启resin服务

使用压力测试工具MS web application: 3000访问.

webapplication.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Top 命令显示如下:

top.png

 

 

 

 

 

 

 

 

 

 

 

vmstat显示:

vmstat.png

 

 

 

 

 

 

 

Load:

logs.png

 

 

resin-status:http://172.16.0.252/resin-status

 

resin-status1.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数据库连接池
http://172.16.0.252/proxoolAdmins

prx111.png

 

 

 

 

 

 

 

 

#netstat -an|grep ESTABLISHED|wc -l  已经建立的连接数

670

#netstat -an|wc -l     所有连接

2971

压力测试持续了10分钟,结果除了系统负载比较大外(达到了19以上),访问速度和响应还算可以。

达到峰值后的系统,我觉得瓶颈出现在cpu上,达到90%以上。另外系统的tcp连接数量还是根据linux的内核设置有关。虽然已经将resin的http请求线程数放大到了10240,其实这或许只是个理论期望值吧。

不知道还有什么地方可以继续调优的,或许使用resin-pro版本能更加好些?

| | Comments (0) | TrackBacks (0)


问题总是会有的,有时候解决问题也是一种乐趣,而处理问题的关键是“不抛弃、不放弃”。

症状:

FC6( kernel 2.6.18-1)上安装的Oracle10g

修改了IP地址,从原来的192.168.1.* 到 172.16.0.*

系统重启后,发现oracle监听无法启动。

提示:
ORA-00600: internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]

oracle数据库也无法启动,提示数据库无法连接。

 

看似很简单的问题,以下是曲折的问题解决过程:

googleing :    keywords:  ORA-00600: internal error code, arguments:

翻了一通,说是什么头晕眼花,没有收获。

查询oracle的监听(listener.ora)配置。

# listener.ora Network Configuration File: /opt/oracle/product/10g/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/product/10g)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )
  发现没有任何改动。

  里面只有host配置,并没有具体指定某个IP。

重新修改网卡的IP地址:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# nVidia Corporation MCP61 Ethernet
DEVICE=eth0
HWADDR=10:c0:f8:b9:1c:30
IPADDR=172.16.0.252
NETMASK=255.255.255.0
ONBOOT=yes
GATEWAY=172.16.0.1
TYPE=Ethernet

Reboot Server 。。。

一分钟过后,oralce监听仍然无法启动。

#setup
直接配置网卡的设置

net-setup.png
                                                                                                                                   
这里出现了错误,修改完ip后,无法save 只有quit。

提示如下:

出现一个未解决的异常。这极可能是一个程序错误,请将其崩溃组合码转储入一个文件,
然后在 https://bugzilla.redhat.com/bugzilla 提交一份关于 system-config-network 的详细错误报告。

Component: system-config-network
Version: 1.3.95
Summary: TB /usr/lib/python2.4/sre.py:227:_compile:error: multiple repeat
Traceback (most recent call last):
  File "/usr/sbin/system-config-network-tui", line 277, in ?
    plist.save()
  File "/usr/share/system-config-network/netconfpkg/NCProfileList.py", line 394, in save
    del hoconf[i]
  File "/usr/lib/python2.4/site-packages/rhpl/Conf.py", line 581, in __delitem__
    while self.findnextline('^\S*[' + self.separators + ']+' + varname):
  File "/usr/lib/python2.4/site-packages/rhpl/Conf.py", line 198, in findnextline
    elif re.search(regexp, self.lines[self.line]):
  File "/usr/lib/python2.4/sre.py", line 134, in search
    return _compile(pattern, flags).search(string)
  File "/usr/lib/python2.4/sre.py", line 227, in _compile
    raise error, v # invalid expression
error: multiple repeat

> /usr/lib/python2.4/sre.py(227)_compile()
-> raise error, v # invalid expression
(Pdb)

googleing 。。。。。。。。。。。
未果。

郁闷中。难道让我重装oracle?
虽然作为一台测试服务器,重装oracle也是一件比较让人不爽的事情啊。


接着google。。。。。。 keywords: erverything (先看了会娱乐八卦再说。)

无果。。。

我无语了。。。


半小时后。
偶然发现Linux下面的提示如下:

[root@bogon]#

这个bogon是什么东东哩?

是不是中毒了,这台机器的防范可是超级薄弱啊,所有口令都是12345678,哈哈

赶紧看/var/log

看了一遍所有日志,和配置等等,没有发现异常。

使用了chkrootkit  http://www.chkrootkit.org下载 chkrootkit.tar.gz  最新版本 chkrootkit-0.48

./chkrootkit > result.txt

vi result.txt
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
...
Searching for suspect PHP files... nothing found
Searching for anomalies in shell history files... nothing found
Checking `asp'... not infected
Checking `bindshell'... not infected
Checking `lkm'... chkproc: nothing detected
chkdirs: nothing detected
Checking `rexedcs'... not found
Checking `sniffer'... eth0: not promisc and no PF_PACKET sockets
Checking `w55808'... not infected
Checking `wted'... chkwtmp: nothing deleted
Checking `scalper'... not infected
Checking `slapper'... not infected
Checking `z2'... chklastlog: nothing deleted
Checking `chkutmp'... chkutmp: nothing deleted

没有发现异常。

#hostname
bogon

继续google...  keywords: hostname bogon

解释说可能是内网防火墙所致,跟IP段或许有关系。
bogon是指那些不该出现在internet路由表中的地址
这些地址应该包括:
1,私有地址如10,172.16-32,192.168.....
2,还未正式分配出去的地址
Bogons are prefixes that should never appear in the Internet routing table, and obviously should not appear as the source address in any packets you receive.


联系起来最近的操作,恰恰证实了这一点。

昨天刚刚把ISA2004架设好,内网网段从192.168.1.0/24  改到了 172.16.0.1/24

但是究竟是什么修改了Linux的hostname了呢?

先不管他,修改hostname,改为原来的hostname。

#hostname localhost.localdomain


vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
172.16.0.252            localhost.localdomain localhost


#reboot 

系统重启后提示变为:[root@localhost]
#hostname
localhost.localdomain
正常了,跟oracle中监听的配置一致。


切换到oracle用户。

[oracle@localhost admin]$ lsnrctl start

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 04-MAR-2008 13:40:44

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Starting /opt/oracle/product/10g/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /opt/oracle/product/10g/network/admin/listener.ora
Log messages written to /opt/oracle/product/10g/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                04-MAR-2008 13:40:44
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/10g/network/admin/listener.ora
Listener Log File         /opt/oracle/product/10g/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

启动数据库。
[oracle@localhost admin]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Mar 4 13:40:57 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              88082000 bytes
Database Buffers          192937984 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

oracle启动正常。


总结:

如果您的oracle有这样的错误

 ORA-00600: internal error code, arguments:

 先看看是不是hostname被修改了??


 

| | Comments (0) | TrackBacks (0)

首先声明这个数据是从网上搜集,源自一个access数据库表。因为很少用到access,

所以把其中数据提出后,用shell脚本替换成一个以“,”分隔的文本文件。

包括省份、城市、区划、城市英文缩写。

这样可以建好表结构后,可以方便导入到oracle、mssql或者mysql中。

详细内容在下面的文本文件中:

city_sql.txt

 

关联的规则为:

---------------------------------------------------------------

河北,Hebei Sheng,130000,HE

唐山市,Tangshan Shi,130200,TGS

滦南县,Luannan Xian,130224,LNJ

---------------------------------------------------------------

第三栏为最后四位为‘0000’的是省级单位,全国一共31个,

第三栏为最后两位为‘00’且不是‘0000’的是地市单位,并且与省级单位的前两位相同,如:‘13’

第三栏最后两位既不是‘00’最后四位也不是‘0000’的是三级单位,或是区,或是县级市,

属于与他前四位相同的地级城市,如:‘1302’。

这样在一个表中可以体现出行政区划的三级数据。

 

| | Comments (0) | TrackBacks (0)

从oracle9i 中导出的数据导入到oracle 10g中,经过程序的调用后,发现都是乱码,

开始以为是RHEL5系统字符集的事情,修改了几次后,发觉还是数据库的字符集有问题。

以下是用dba进入后查看拿的实际情况:

select * from V$NLS_PARAMETERS ;
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY RMB
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET WE8ISO8859P1
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY RMB
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

select userenv('language') from dual;

SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1


select * from sys.props$ WHERE NAME='NLS_CHARACTERSET';

-----------------------

参考了网上的几个解决方法,都没有解决,最后还是使用了这样的方法解决了问题:

UPDATE sys.PROPS$ SET value$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';

这样把WE8ISO8859P1改变成'ZHS16GBK' 。

但是原来已经导入的数据都需要重新导入。

*******需要说明的是 上面的这种方法有些问题,尽量不要使用这种方法

 下面是正确的修改字符集的方法:

sqlplus "/as sydba"

shutdown immediate


Startup restrict

ALTER DATABASE CHARACTER SET ZHS16GBK;

有时候会遇到如下错误:

ORA-12712: new character set must be a superset of old character set

可以执行如下: 跳过超集的检查

ALTER DATABASE character set INTERNAL_USE zhs16gbk;

然后重启数据库即可,不过最好先做备份哦! 

 

| | Comments (0) | TrackBacks (0)

标签