您的位置:首页 > 数据库 > Oracle

Oracle安装和卸载问题收集(五)

2009-06-24 15:14 387 查看
日期乱码
Oracle Server的设置如下
NLS_CHARACTERSET WE8ISO8859P1
NLS_LANGUAGE AMERICAN
NLS_NCHAR_CHARACTERSET AL16UTF16
机器上的注册表
NLS_LANGUAGE AMERICAN_AMERICA.WE8ISO8859P1
问题:
Java程序传日期到Oracle的function里,经过lower(to_char(xsched_date,'DY'))函数后,日期变成了乱码。请问:
1. 我的字符集应当怎样设置呢?
2. server的 NLS_CHARACTERSET 和 NLS_NCHAR_CHARACTERSET 不一样,没关系吧?NLS_NCHAR_CHARACTERSET 是什么意思?
解答:
1 先查看有关字符集的信息
SQL>col value$ format a40
SQL> select * from nls_database_parameters;
SQL> select * from V$NLS_PARAMETERS;
2 查得的主要对应client端的显示
SQL> select * from sys.props$ WHERE NAME='NLS_LANGUAGE';
//可以把'AMERICAN' 改为'SIMPLIFIED CHINESE ',不过这个于本问题无关
3修改字符集
SQL> select * from sys.props$ WHERE NAME='NLS_CHARACTERSET';
//把你机器上的WE8ISO8859P1改为
SQL>UPDATE sys.PROPS$ SET VALUE$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';
SQL>commit;
4 NLS_NCHAR_CHARACTERSET AL16UTF16 其中的UTF16为ZHS16GBK的子集,可显示大多数汉字。
更改字符集
最好不要修改 props$表,可能会引起不正常的工作。
如果是客户端 ,修改注册表即可;
服务器端 "alter database character set 字符集"即可
Oracle客户端打包安装问题
我的程序是C/S架构的,所以客户端电脑都要安装ORACLE的客户端程序,不知道有没有办法,将ORACLE的客户端安装程序打包进我的安装程序,进行自动安装。
解答:
1.其实ORACLE的安装很简单,你先安装一套客户端,然后把这些文件打包(从ORACLE_HOME开始全部取出),把注册表中的ORACLE部分导出。然后自己编写一个安装程序,把这些文件按照某个路径拷贝(不要修改相对路径),如果你安装的ORACLE_HOME改变了,就修改REG中的ORACLE_hone参数,然后将REG文件装入。这些都可以通过编写程序来实现。
2.实际上Oracle驱动微软也有,主要就缺那个网络服务名,用Filemon.exe软件跟踪一下,看看要用到些什么东西。
无法确定主机IP错误
问题:
Win2003+Oracle 9iR2
安装的时候告诉我无法确定主机的IP,忽略后又报了几次,最后还是不能安装
解答:修改hosts文件。确认nslookup命令可以正确执行
没有域名时设置Oracle9i中全局数据库名
set globle_name=false
双网卡连接外网问题
问题:
服务器双网卡,一个内部用,一个通外网,装ORACLE8I,客户端连接服务器,当把外网网线拔掉,连接正常,把外网网线插上,连不上。
解答:把内部网的网关去掉,再在上面加一个NETBEUI协议这样就可以了。
Oracle9i数据库的企业版和标准版的区别
Oracle9i数据库的企业版和标准版最主要的区别在于企业版有更强大的并行和分布式处理能力,标准版是专为开发、部署和管理部门级 Internet 应用程序而设计的数据库管理系统,是用于传统的部门级应用程序的一流数据库。而应用超出部门级标准或访问数据库的人较多时,则应当选用企业版。
标准版包含下列组件: Jserver Enterprise Edition
InterMedia
Enterprise Manager
Workflow Standard Edition
Standard Management Pack
Object Option
Networking kit
Object for OLE
Distributed Option
64 bit Option
ODBC Driver
Sql*Plus
OCI
企业版包括标准版中所有组件,并且还含有下列额外的组件:
Jserver Enterprise Edition
InterMedia
Object Option
Networking kit
Object for OLE
Advance Replication Option
Distributed Option
Parallel Query Option
SQL*Plus
VIR
Workflow Enterprise Edition
Advanced backup & recovery
Connection Pool
64 bit Option
ODBC Driver
OCI
Enterprise Manager
Enterprise Backup Utility
另请参考http://www.Oracle.com.cn/cgi-bin/topic_show.cgi?id=117&h=1&bpg=13&age=0
Oracle与IIS地址冲突
问题:
我的机器的系统盘是 c 盘,Oracle8i也安装在c盘,以前我把我的网站在“控制面板----管理工具——Internet服务管理器”中已经设置好了IIS的配置,所以在以前一打开http://127.0.0.1/就可以看见我的网站,自从安装了Oracle8i后,在打开http://127.0.0.1/时,显示的是关于Oracle的一个页面,在IIS中的默认WEB站点已经“停止”了,当我再重新启动的时候,说是“地址已被使用!”。我不知道该怎样恢复成以前的情形。
解答:在服务管理里面停止ORACLE HTTP服务
一个控制文件被损坏,如何启动
系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库:Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:/ORACLE错误现象:因硬盘有坏道,一个控制文件损坏了,或人工误删一个控制文件,控制面板的Oracle相关服务可以启动成功,但用SQL*Plus无法连接,显示以下错误
ORA-01034: ORACLE not available解决方法:
C:/>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown abort修改init.ora(C:/Oracle/admin/oradb/pfile/init.ora)文件,使无法使用的控制文件不在control_files参数中定义修改前
control_files = ("C:/Oracle/oradata/oradb/control01.ctl", "C:/Oracle/oradata/oradb/control02.ctl",
"C:/Oracle/oradata/oradb/control03.ctl")
修改后
control_files = ("C:/Oracle/oradata/oradb/control01.ctl", "C:/Oracle/oradata/oradb/control02.ctl")svrmgrl>startup
注意:最少要有两个控制文件的存在,即使一个也可以正常应用。
某个数据文件损坏,如何打开数据库——ORA-01033: ORACLE initialization or shutdown in progress错误
系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:/ORACLE
错误现象:
因误操作,数据库中某一数据文件被误删,
控制面板的Oracle相关服务显示已启动,但用SQL*Plus无法连接,
显示以下错误
ORA-01033: ORACLE initialization or shutdown in progress
模拟现象:
create tablespace test datafile
'c:/test.ora' size 5M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
default storage (initial 128K next 1M pctincrease 0)
/
关闭所有服务stop.bat
net stop "OracleWebAssistant0"
net stop "OracleOraHome81TNSListener"
net stop "OracleServiceORADB"
shutdown
在操作系统中删除test.ora文件
重新启动服务start.bat
net start "OracleWebAssistant0"
net start "OracleOraHome81TNSListener"
net start "OracleServiceORADB"
服务里OracleServiceORADB显示已启动,但用SQL*Plus无法连接,
显示ORA-01033: ORACLE initialization or shutdown in progress
解决方法:
先让该数据文件脱机,就可以打开数据库
C:/>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown
svrmgrl>startup mount
--ARCHIVELOG模式命令,文件名要大写
svrmgrl>alter database datafile 'C:/TEST.ORA' offline;
--NOARCHIVELOG模式命令
svrmgrl>alter database datafile 'C:/TEST.ORA' offline drop;
svrmgrl>alter database open;
--查询数据文件联、脱机状态
SQL> select file#,name,status from v$datafile;
SQL> drop tablespace test;
表空间已丢弃。
丢失联机日志文件
分两种情况处理
1、丢失的是非活动的日志文件;
2、丢失的是当前激活的日志文件。
如果是第一种情况,而发生故障的日志文件组又具有多个成员,可以先将数据库shutdown,然后用操作系统命令将损坏日志文件组中好的日志成员文件把损坏的成员文件覆盖(在同一个日志成员组中的所有日志文件的各为镜象的),如果其物理位置不可用可将其拷贝到新的驱动器上,使用alter database rename file ‘xxxx’ to ‘xxxx’改变文件位置,之后启动数据库,如果正常马上进行一个冷备份。如果损坏的日志组中只有一个日志成员,先mount上数据库,将其转换为noarchivelog模式,执行alter database add logfile member ‘xxx’ to group ‘x’给相关组增加一个成员,再执行alter database drop logfile member ‘bad_file’将损坏的日志文件删除,由于数据库的结构发生变动需要备份控制文件,之后将数据库改回archivelog模式,做一个冷备份。
如果丢失的是当前激活的日志文件,数据库又没有镜像而且当前日志组中所有成员均变为不可用。首先将数据库shutdown abort,从最近的一次全备份中恢复所有的数据文件,将数据库启动到mount状态。如果原来的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改变文件的存放位置。然后,使用recover database until cancel命令来恢复数据库,直到提示最后一个归档日志运用完之后,输入cancel。之后用alter database open resetlogs打开数据库,如果没有问题,立即进行一个冷备份。注意!所有包含在损坏的redo log中的信息将会丢失,也就是说数据库崩溃前已经提交的数据有可能会丢失。这对于某些要求很高的应用将会损失惨重,因此应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上防止发生介质故障。
需要升级或者购买服务了吗
问题:
管理我单位的数据库服务器,配置是: Compaq Alpha Es40 +512M+单800Mhz CPU. 只跑ORACLE数据库。
因为对本单位的需求在系统设计的时候不很明确,以上配置是供货商根据我单位当时的计算机应用情况配置的,Compaq的工程师在安装的时候说机器很好,就是内存和CPU的配置小了点,我不太明白影响大不大。
没想到的是,业务需求的增长大大超过了当初的预期,在最开始的时候客户端的PC数量只有不超过50台,不久很快就超过了100台,我把unix系统下的单用户进程数量调到了200,心想这应该没多大问题了吧,结果是好景不长,不到半年200也不够了,我现在把最大进程数调到了400。我想请教一下,Oracle服务器是不是为每一个客户端在服务器单独开一个进程?一台服务器能够联接的客户端数量相对于内存的大小在理论上是不是有个参考的经验值?有的话大概是多少?
解答:
1.Oracle服务器可以分为专用服务器和共享服务器两种。专用服务器为每个客户端进程开启一个服务器端进程;共享服务器则开启数个服务器端进程,为所有的客户端程序服务;
一般来说,采用专用服务器的话,你可以按照每个并发连接数需要2m内存来简单计算。512M内存相对连接数较多,处理量较大的系统是不太够的。Oracle9i 安装就推荐512m内存了。
Oracle的设计思路是假设机器具有无限能力,在过去不怎么样,因为机器性能差,但是随着技术的发展,机器的能力倍增,而且代价也大大降低,花很少的钱就可以买到很好的机器了,现在看来,这种开发思路是极其成功的。
2.共享服务并不意味着不占用内存,只是采用共享池模式,将连接数据库但暂时没有数据作的用户进程挂起,若并发用户数量多而且频繁时,会降低系统性能。
另Oracle数据库使用内存最多的应该是SGA区,多数配置合理的系统中SGA区会占到系统内存的1/3甚至1/2以上,不合理的SGA区配置会极大地影响数据库性能。至于SGA区大小和划分与应用系统的数据量、客户端数量、数据处理和程序代码等相关。
根据我从事数据库工作的经验,2G内存应该是需要的,而且贵单位的数据库很可能需要优化。
3.我觉得大家忽略了一点:系统负载不仅与用户数有关,更多的与交易量相关。
数据库中注册用户表可能达到几千万条,在创建时注意些什么设置
对超级大表,首先要注意的是存储参数的设定,估计一下行数据量,对表最终的存储空间要求大致估算以下,建表时设定好(next_extent和max_extents参数,以免最后表超过max_extents而无法扩展),pct_increase参数一定要设定为0,否则以后next_extent会呈几何级数增长。
如果该表数据变化(增加、删除、修改)频繁,需要设定 PCT_FREE和PCT_USED参数(参数定义和用法请查找资料);如果空间足够的话,最好在字段定义中不使用VARCHAR2数据类型,当前没有数据也让数据库预留出空间,减少修改数据制造的数据碎片。
对超级大表的检索、*** 作,主要靠索引,如何建好索引、用好索引是系统开发人员的职责。超级大表的检索首先应该与主表分在不同的表空间(最好是不同的存储介质),其次超级大表的检索也会占很大的空间,检索的存储参数也是要设定好的。
对超级大表而言,一点点结构设计的不合理,甚至一句糟糕的程序代码就可能使整个系统的性能让人无法忍受。有些原则要记住:在超级大表上,不要存在与其他数据表的约束关系,约束关系可以通过程序代码实现;对超级大表,不要随意与其他数据表进行关联,除非通过主键(至少是索引列)关联且where条件能使用到索引;
如果你用到了ORACLE 8,对超级大表进行分区是非常有价值的。
重装Oracle服务器后,恢复以前的数据系统环境
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:/ORACLE
说明:
恢复的前提是要保留以下全部文件:
初始化参数文件INIT.ORA
所有数据文件
所有重做日志文件(联机日志、归档日志)
所有控制文件
internal密码文件
步骤:
1、重新安装数据库时,创建和原有数据库相同的名字
2、shutdown
3、停掉NT上所有Oracle服务,删除新建数据库中的所有新建文件(和以上那些类似的文件)
4、将所有以上文件拷贝回原目录
5、startup
日文系统改成英文的办法
在注册表中改一个键值。
具体如下:把HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> HOME0 -> NLS_LANG 的健值改成 AMERICAN_AMERICA.WE8ISO8859P1,然后就正常了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: