Oracle 安装和卸载问题收集(集合篇)
作者:
在安装过程中出现的一些问题的解决办法。值得收藏与学习。比如在安装的时候如果有中文的路径则会出现类似这样的提示:加载数据库时出错:areasQueries
Oracle的系统要求
企业版:CPU 最低PENTIUM 200M 推荐 PENTIUMIII 1G以上
内存 最低128M 推荐 512M
硬盘空间 系统盘140M 安装盘4.5G(FAT32)或2.75G(NTFS)
标准版:CPU 最低PENTIUM 200M 推荐 PENTIUMIII 866以上
内存 最低128M 推荐 256M
硬盘空间 系统盘140M 安装盘4.5G(FAT32)或2.5G(NTFS)
个人版:CPU 最低PENTIUM 200M 推荐 PENTIUM 266以上
内存 最低128M 推荐 256M
硬盘空间 系统盘140M 安装盘4.0G(FAT32)或2.5G(NTFS)
在P4机器上安装Oracle 8i
P4的计算机最好安装ORACLE 9I,如果不方便的话可以按照以下的方法安装ORACLE 8I (其实也不是所有的P4CPU都不可以安装ORACLE8I, 我的一台P4 1。7 安装ORACLE 8.1.6就一点问题没有)
一、系统环境及准备工作
硬件:
Intel P4的处理器
256M的内存
硬盘有三个分区C、D、E,光驱为F
软件:
操作系统WINDOWS 2000 SERVER、WINDOWS 98
数据库ORACLE 8.0.6 for NT或ORACLE 8.1.x for NT
准备工作:
确保机器上没有装过Oracle产品。如有的话请先卸载,再将注册表中所有Oracle的相关项删除。
在WINDOWS 2000 SERVER上安装Oracle Enterprise Edition
在WINDOWS 98上安装Oracle Client
二、故障现象
1、在WINDOWS 2000 SERVER上安装Oracle8.0.6时
当选择定制安装,并创建数据库时,主要应用程序都已安装完成,在提示“是否创建数据库”,选择是后就再也没有反应。重启机器后,点击应用程序后没有反应而简单终断。 点击应用程序,鼠标呈现沙漏状,然后消失,再没有任何现象发生。
2、在WINDOWS 98上安装Oracle8.0.6的Client后安装成功,点击应用程序,提示该程序执行了非法操作,即将关闭。
3、在WINDOWS 2000 SERVER上安装Oracle8i时点击安装应用程序Setup.exe,程序挂起、或消失、或终止而没有任何反应。
三、原因分析
使用Windows NT、 Windows 2000或NetWare操作系统和Intel P4处理器的计算机,安装Oracle8或者Oracle8i时,将会碰到以上问题。主要原因是Oralce8 /8i的OUI(Oracle Universal Installer) 1.7.1.9.0或以前版本使用了Sun JRE 和 Symantec JIT(Just in Time Library),而JRE 和 JIT与Intel P4处理器不兼容。
四、解决办法
1、 Oracle 8.0.6的解决办法
(1)将安装盘整个拷贝到硬盘。譬如E:\Oracle806。
(2)找到目录E:\Oracle806\win32\JRE11下的symcjit.dll文件,将symcjit.dll改名为为symcjit.old。
(3)找到目录E:\Oracle806\win32\JRE11下的Jre11.map文件,用文本编辑工具打开Jre11.map文件,找到以bin开头的段,在其中可看到" " "symcjit.dll" "%JRE11%\bin\" 398336 false false false 00 00 00 "" "",将此行删除,然后保存。注意此文件的属性是只读的。
(4)从目录E:\Oracle806中执行安装文件Setup.exe。
如果故障的现象是,Oracle8.0.6已经安装完成,但是点击建Oracle应用程序没有任何反应(一般是在WINDOWS 2000 SERVER操作系统中)或点击应用程序如Net8,提示该程序执行了非法操作,即将关闭(一般是在WINDOWS 98操作系统中)。。在这种情况下,可不卸载Oracle,而直接将系统安装目录相应位置下的symcjit.dll文件改名为symcjit.old即可。
2、Oracle 8.1.x解决办法
(1)创建一临时目录,并将Oracle8i的安装源程序拷贝到此目录。找到目录stage\Components\Oracle.swd.jre\1.1.7.30\1\DataFiles\Expanded\jre\win32\bin下的symcjit.dll 的文件,并改名为 symcjit.old。注意OEM目录下还有一个symcjit.dll文件要改名。
(2)搜索到oraparam.ini文件,打开它,改变行RE_MEMORY_OPTIONS=-mx48m的参数为JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
(3)其它的参数保持不变。
(4)执行本地硬盘install\win32\setup.exe目录下的Setup.exe文件。此时调用的是修改过的参数文件oraparam.ini。
(5)安装时选择自定义模式,并且不创建数据库。
(6)安装程序调用网络配置助手Net8 Configuration Assistant (NetCA)时你需要强制终止它,然后退出安装界面。
(7)Oracle8i安装完成后,安装目录中的下列每一个文件都有需要作相应修改。
assistants\dbca\dbassist.cl
assistants\dbma\dbmig.cl
assistants\ifa\ifa.cl
bin\elogin.cl
bin\owm.cl
ldap\oidamdin\oidadmin.cl
network\tools\netasst.cl
network\tools\netca.cl
owm\install\instelogin.cl
owm\install\instowm.cl
用编辑工具依次打开上述文件,增加参数 – nojit,以dbassist.cl文件为例示意如下:
Command=("C:\Program Files\Oracle\jre\1.1.7\BIN\JREW" -nojit -classpath ....)
用相同的方法修改所列出的每一个.cl 文件内容。
(8)安装成功的完成了,你可以在安装完成后运行DBCA和NetCA。
在P4机器上安装Oracle 8i简略版
1、将ORACLE软件拷贝到硬盘。
2、将 硬盘目录文件\stage\Components\Oracle.swd.jre\1.1.7.30/1 \DataFiles\Expanded\jre\win32\bin\symcjit.dll 的文件改名为symcjit.old
3.从\install\win32 目录下运行SETUP.exe文件进行安装
Oracle 9i 在2000高级服务器版上的安装
解决方法:
1. 如果机器上从来没有安装过Oracle817或其他版本的Oracle,则可以把待安装所有文件解压到一个临时目录,例如解压在E盘的temp\install\disk1目录中,然后用搜索文件工具,找到所有的symcjit.dll文件,将其名字更改为symcjit.old,那么就可以直接运行disk1目录下的setup.exe文件,开始安装。
2. 如果机器上曾经安装过Oracle817,则需要完全卸载Oracle,然后安装,步骤如下:
⑴开始->设置->控制面板->管理工具->服务
停止所有Oracle服务。
⑵开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer
卸装所有Oracle产品
⑶运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
⑷运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
⑸运行regedit,搜索所有与Oracle相关的项,并将其删除。
⑹从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
⑺重新启动计算机,重起后才能完全删除Oracle所在目录
⑻删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle及C:\Program Files\Oracle,删除这个入口目录及所有子目录。
⑼把Oracle所有待安装的文件解压到一个临时目录,例如解压在E盘的temp\install\disk1目录中。
⑽打开文件disk1\install\oraparam.ini,做如下改动:
● SOURCE项改为SOURCE=e:/temp/install/disk1/stage/products.jar
●JRE_LOCATION项改为JRE_LOCATION=e:/temp/install/disk1/stage/Components/Oracle.swd.jre/1.1.7.30/1/DataFiles/Expanded/jre
●OUI_LOCATION项改为 OUI_LOCATION=e:/temp/install/disk1/stage/Components/Oracle.swd.oui/1.7.1.9.0/1/DataFiles/Expanded
● JRE_MEMORY_OPTIONS 项改为JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
3. 运行disk1\install\win32\setup.exe,安装开始,根据提示做选择,安装下去,假设我安装在D:\orant\ora81目录下。
4. 安装完毕后一些服务会报出错,不能启动,这些服务为:
Net8 Configuration Assistant
Database Configuration Assistant
HTTP服务虽然启动,但是会报出一连串java.exe出错,可以点击开始->Oracle (数据库名) ->Oracle HTTP server->Stop HTTP Server来停止HTTP Server服务。安装完成了,可是全有问题。
5. 安装完成后还需要做下面的工作,在安装路径下所有的“*.cl”后缀的文件中增添“-nojit”项,共十个文件,如下:
assistants\dbca\dbassist.cl;
assistants\dbma\dbmig.cl;
assistants\ifa\ifa.cl;
bin\elogin.cl;
bin\owm.cl;
ldap\oidamdin\oidadmin.cl;
network\tools\netasst.cl;
network\tools\netca.cl;
owm\install\instelogin.cl;
owm\install\instowm.cl;
Example:
Command=("C:\Program Files\Oracle\jre\1.1.7\bin\jrew"
-classpath
"C:\Program Files\Oracle\jre\1.1.7\lib\rt.jar;
C:\Program Files\Oracle\jre\1.1.7\lib\i18n.jar;
D:\Oracle\ora81\jlib\ewt-3_3_6.jar;
D:\Oracle\ora81\jlib\ewtcompat-opt-3_3_6.zip;
D:\Oracle\ora81\jlib\share-1_0_8.jar;
D:\Oracle\ora81\jlib\swingall-1_1_1.jar;
D:\Oracle\ora81\jlib\help-3_1_8.jar;
D:\Oracle\ora81\jlib\ice-4_06_6.jar;
D:\Oracle\ora81\network\jlib\sysmanmaf.jar;
D:\Oracle\ora81\owm\jlib\owm-2_1.jar;
D:\Oracle\ora81\owm\jlib\help\elogin\help"
Oracle.security.admin.lio.lioa.LioaApp Oracle.security.admin.lio.lioa.LioaApp -nojit)
6. 到这里4中的三项服务仍不能启动,因为工作还没做完。
到java.sun.com网站下载jre软件,要1.2.2以上的版本,然后安装在你的机器上,安装完成后用其中的bin目录和lib目录覆盖d:\orant\ora81\apache\jdk\jre下的bin目录和lib目录。到这里以上三个服务就可以顺利启动了。
Win2000上安装Oracle 9i
问题:
在win2000server中安装Oracle9.2时,加载文件是出错,安装Oracle8就不会出错
解答:
需要打Sp1以上的补丁才行
同一台PC机上安装8I和9I
问题:
安装时C:\PROGRAMME\ORACLE安装程序回覆盖先安装的版本文件。不知道怎样才能避免一切可能出现的冲突问题
解答:先装8 后9,分主目录装。还有,如果在某个已经存在的Oracle_home中安装,当你修复或更新Oracle,或者添加其他产品选项时,你应该确定停止从特定主目录中运行的任何Oracle服务。
Oracle 9i的安装过程
环境:New CY1G, 256+128M, win2000 SP3,Oracle 9.2.0.1.0
1.启动OUI(Oracle universal installer),选择下一步。
2.选择安装的产品,即Oracle Database。点击下一步。
3.选中“标准版”,需要2.8G的空间,(这些安装类型的主要差别是产品被授予许可的方式不同,企业版仅仅包括每个可能的选项,而标准版要求有想使用的每个选项的单独授予许可。个人版意味着满足测试目的的单机安装)点击下一步。在“数据库配置选项”中,选中只安装Oracle软件(Software Only),不安装数据库,待安装完Oracle软件后,用DBCA创建数据库。
4.安装完Oracle软件(不含Oracle数据库)后,启动DBCA (DataBase Configuration Assistant),将一步步指导你创建数据库(New Database)。
5.创建完数据库后,启动NCA(Net Configuration Assistant),为数据库配置监听器。
Oracle Net Configration Assistan:
监听程序配置:直接下一步,监听程序名为默认的Listener,网络协议为TCP,使用默认端口1521。命名方法配置:选中本地命名。
本地Net服务名配置:即修改本地tnsnames.ora文件,添加,选择下一步,输入数据库全局名,在网络协议里选择TCP,输入主机名,使用标准端口。使用sys用户测试。
6.现在可以独立登陆OEM(Sys/password as sysdba)
7.建立资料档案库,启动EMCA(Enterprise Manager Configuration Assiatan),为数据库创建资料档案库。
8.创建资料档案库完成后,可以启动Console登陆到Oracle managerment server,默认用户名为sysman/oem_temp。
Oracle在双机备份服务器中的安装步骤
1、在其中一台电脑上安装完整的Oracle 数据库(通过自定义安装,不要创建数据库实例)
2、通过Oracle配置助手创建数据库,将所有数据库文件包括控制文件、表空间文件,日志文件等路径指定到磁盘柜上。
3、在另一台电脑上安装Oracle数据库,指定数据文件到磁盘柜上,覆盖以前建立的数据文件。
4、要保持文件Oracle\ora81\database\PWDmyora.ora两台机子文件一样,比如你在A机上导入dmp文件,需要把PWDmyora.ora拷入到B机上。
5、将两台机子的Oracle服务改成手动模式,通过dataware软件实现切换。
删除Oracle之一
软件环境: 1、Windows 2000+ORACLE 8.1.7
2、ORACLE安装路径为:C:\ORACLE
实现方法:
1、 开始->设置->控制面板->管理工具->服务,停止所有Oracle服务。
2、 开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer,卸装所有Oracle产品,但Universal Installer本身不能被删除
5、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
6、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
7、 运行regedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。
8、 开始->设置->控制面板->系统->高级->环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定
9、 从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
10、删除\Program Files\Oracle目录
11、重新启动计算机,重起后才能完全删除Oracle所在目录
12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文件ORACLE.ini、oradim73.ini、oradim80.ini、oraodbc.ini等等。
13、WIN.INI文件中若有[ORACLE]的标记段,删除该段
14、如有必要,删除所有Oracle相关的ODBC的DSN
15、到事件查看器中,删除Oracle相关的日志
说明:
如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,
安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。
删除Oracle之二
如果需要卸载Oracle,请运行安装光盘上的安装文件Setup.exe,在“欢迎”窗口中,选择“卸装产品”按钮,进入“Invertory 目录”窗口: 在该窗口中选择需要删除的产品(在产品名称前面的方框内打上在标记√),然后单击“删除”按钮即可;或者直接在开始菜单中找到Oracle for NT程序组下的Oracle installer,同样可以卸载Oracle。
卸载Oracle产品后,在系统的注册表内仍然有相关信息,您可以参考以下方法进行手工删除。
注意:对注册表的操作可能对系统产生严重影响,请在操作前进行备份,以便在系统异常时恢复到原来的注册表。该操作请参考Windows系统的相关说明。
运行RegEdit,在“HKEY_CURRENT_USER\Software”、“HKEY_LOCAL_MACHINE\Software”、“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services”主键中删除所有的Oracle入口(如果找到的话),然后重新启动计算机,如一切正常,则修改完成,如启动有错误,可能您对注册表的修改出错,运行RegEdit,将备份的注册表项目导入;如果误删了注册表中的“Microsoft ODBC for Oracle”,可用以下方法恢复:
将“HKEY_LOCAL_MACHINE\software\Microsoft\DataAccess”中的Version的值由‘2.1.1a'改为‘1.1.1a'然后重新安装财务软件,安装程序会自动安装 MADC,并恢复“Microsoft ODBC for Oracle”。 (对Windows95/98,请立即进入Dos方式,将备份的system.dat文件(如system.bak)复制回system.dat);
(对Windows NT,如启动失败,请重新启动计算机,在提示下,按空格键启动“硬件配置文件/已知的最新正确配置”菜单,该菜单将注册表还原到稳定状态。按照屏幕上的指示操作,可以将注册表还原为上次成功启动时的状态。)
在XP上安装Oracle9i老是报错提示加载数据库时出错:areasQueris
解答:去除安装路径中的中文
无法启动监听器——Ora-12560错误
1、控制面板-->管理工具-->服务下面的查看OracleOraHome92TNSListener服务有没有启动,如果没有启动则启动。
2、把tnsnames.ora和listener.ora里面的HOST(等于机器名或者等于IP地址例如:HOST = springal)值一定要保持一致。
3、多配置几次监听器然后启动尝试。
4、DOS下lsnrctl命令进入监听器信息窗口,使用help查看命令帮助,然后使用相关命令查看监听器情况,并多次stop和start。
5、查看注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener项并设置ImagePath>D:\Oracle\Ora92\BIN\TNSLSNR(你的安装目录)
6、查看你配置的监听器端口有没有被其他服务站用(默认的是1521端口),DOS下可以使用netstat –a查看。
7、查看你的防火墙或者防病毒软件是否屏蔽掉了1521端口。
8、据说还与你的系统有关系,重新安装一下windows 2000 SP3,这个问题通常与sp3有关系。
Oracle启动时,监听器不启动或打开出错
软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT
错误现象:
1、ORACLE启动时,监听器不启动或打开出错
2、服务器端:用username/password登录正常,但用username/password@alias登录不成功
3、客户端:用username/password@alias登录不成功
解决方法:
1、如果是因为修改了NT的机器名,则把listener.ora文件中的host参数全部改为新的NT机器名,
重新启动OracleTNSListenr80服务即可。
例如:
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1521))
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1526))
)
2、使用监听器实用程序:LSNRCTL80.exe
3、检查监听器参数文件:c:\orant\NET80\admin\listener.ora
4、检查监听器日志文件:c:\orant\NET80\log\listener.log
5、Tnsnames.ora文件配置错误,重新配置。
6、检查client 端 Tnsnames.ora
在单机上安装805,OracleTNSListener80不能启动
问题:
我在win2000下安装了ORACLE805,有网卡,但是没有没有连网。
解答:
1.805必须联网,设置Microsoft loopback或使用816。直接把Listener的侦听地址设到127.0.0.1上试试看。
2.把(PROTOCOL=ipc 和snmp)的配置删除,我是在win98下装的804,
listener.ora配置如下:
LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 192.168.1.4)
(Port = 1521)
)
(ADDRESS =
(PROTOCOL = TCP)
(Host = 127.0.0.1)
(Port = 1521)
)
#被注释 (ADDRESS =
# (PROTOCOL = SPX)
# (Service = y_lsnr)
# )
)
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER = ADMIN
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = y)
(SID_NAME = ORCL)
)
(SID_DESC =
(SID_NAME = extproc)
(PROGRAM=extproc)
)
)
运行正常。
ORA-12516 TNS:监听程序无法找到匹配的信息栈的可用句柄错误
先打开 TNSNAMES.ORA 这个文件, (位于 //OraHome1/network/admin/tnsnames.ora) ,确定(INSTANCE_NAME=) 和 INITsid.ORA 文件中的 实例名(执行项次) 匹配
ORA-12154 TNS不能解析服务名
使用Oracle的网络配置助手“net configration assistant”删除所有的网络的配置(主要是监听程序的配置和本地网络服务名的配置),然后重新配置。可以使用如下命令察看是否你的数据库服务器已经启动(在 *** 作系统中的“服务”中显示为启动,但你的数据库并不一定启动了。在MS-Dos提示符下输入:
C:\svrmgrl
SVRMGR:>connect to internal
密码:<输入你的密码,如果不知道,输入ORACLE试试>
如果连接成功,执行help可以察看命令。
SVRMGR>startup
如果提示你的数据库已经启动,则执行“stop”停止数据库,然后再执行“startup”启动。
无法启动实例服务
控制面板-->管理工具-->服务下面的查看OracleServiceTest服务有没有启动,如果没有启动则启动。如果启动时候报找不到路径,则查看注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleServiceTest项并设置 ImagePath>D:\Oracle\Ora92\BIN\Oracle.exe test(你的安装目录,参数为你的服务名)以上两则都可能是由于运行了注册表软件造成,比如优化大师之类,我个人的解决办法是在扫描注册表的时候略过HKEY_LOCAL_MACHINE。
在Windows平台上,安装Oracle后产生如下服务
OracleMTSRecoveryService
OracleOraHome92Agent
OracleOraHome92HTTPServer
OracleOraHome92TNSListener
OracleServiceTest——以上为缺省配置为自动启动的
OracleOraHome92ClientCache
OracleOraHome92PagingServer
OracleOraHome92SNMPPeerEncapsulator
OracleOraHome92SNMPPeerMasterAgent
设置自动启动数据库
可通过修改注册表来实现:
hkey_local_machine->software->microsoft->windows->currentversion->run->添加一个键值Oraclestart->其值为:c:\Oracle\ora81\bin\oradim.exe -startup -sid 数据库别名 -usepwd Oracle -starttype inst
在启动ORACLE服务时无法启动‘OracleOracleAgent'
问题:提示错误如下:“在本地计算机无法启动OracleOracleAgent服务。错误:3221356559”
原因:
The Intelligent Agent stores all jobs and event requests in a series of queue files in the network/agent directory. Upon startup, the Agent compares the actual hostname of the server to the hostname stored in the queue files. If the hostname of the server changes, the Agent will not recognize the queue files and will consider them corrupt. Then, the Agent will not start.
解答:
1. Remove the services.ora and all "q" files (*.q) from the $Oracle_Home\network\agent directory
2. Re-start the Intelligent Agent.
技巧:
This fix should be done with the understanding that any jobs or events registered against that Agent will be lost. Any active jobs or registered events against this agent should be removed from OEM console before deleting the agent's *.q files.
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist错误
问题:
刚刚装上Oracle8.1.7以后(安装过程非常正常),运行以下操作,一切正常。
C:\>sqlplus system/manager
SQL*Plus: Release 8.1.7.0.0 - Production on 星期四 11月 13 20:01:20 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL>
但是只要重启电脑,再运行同样操作,就会出现如下的问题:
C:\>sqlplus system/manager
SQL*Plus: Release 8.1.7.0.0 - Production on 星期四 11月 13 19:28:25 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
此时查看Oracle进程,所占用内存不到10m。
但是只要执行完Database Configuration Assistant--〉更改数据库设置后,
再次执行如上操作,就能正常运行:
此时Oracle进程占用内存接近100m,应该比较正常。
但是只要重新启动,就会依然出现
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
这种错误,只能用Database Configuration Assistant更改数据库设置后才能使用,重启后问题依旧。让我百思不得其解。
解答:
数据库实例没随计算机启动。
1.数据库启动参数中是否有非PUBLIC回滚段! 要是有的话就先屏蔽掉,等创建完回滚段后重新打开,应该就没有问题了。当时在ORACLE 7下成功。当时我用原有的数据库配置参数(*.ORA)文件创建以后就出现了上面的问题。
2.建议此时手动启动服务,观察如果出现缺少路径的提示,可以参照上文设定相关路径。
ORA-12500: TNS: 监听程序无法启动专用服务器进程
1.lsnrctl status
2.lsnrctl start
3.sqlplus /nolog
4.connect / as sysdba
5.startup nomount
6.alter database open
逐步分解查找问题。
有可能是listener.ora文件被破坏了,遇到过类似的问题,重新配置listener.ora就可以了。
ORA-04031:unable to allocate … byters of shared memory("shared pool","unknown object","sga heap","db_block_buffers")
问题:
DELL服务器装不上ORACLE8.1.5的问题,出现下面的错误提示是在建立数据库之前,系统先要检查内存时出现的,
ORA-04031:unable to allocate 85141440 byters of shared memory("shared pool","unknown object","sga heap","db_block_buffers"),是不是内存不够?但实际物理内存是2G?什么原因呢?
解答:
在安装时,把SGA区、JAVA池等东西的内存配小一些
ORA-01092 : Oracle instance terminated disconnection forced错误
Problem:
Your Oracle Server database on OpenVMS crashes. The following errors are reported: Background process DBWR unexpectedly terminated with error 1092
ORA-1092 Oracle instance terminated
ORA-313 open failed for members of log group 'n' of thread 'n'
ORA-600 [3228] reported from a PL/SQL script.
Explanation:
The most significant error reported here is the ORA-313 error. This error indicates a failure to open a file which indicates a problem with OpenVMS resources. When either CHANNELCNT and/or FILLM are too small, these errors can result.
Solution:
Increase the SYSGEN parameter CHANNELCNT. This should be done by an OpenVMS system manager and requires a reboot of your OpenVMS node. For more information on SYSGEN, please review the OpenVMS documentation.
If the CHANNELCNT parameter is already large enough to allow the expected number of files to be opened, check the FILLM quota. Review two areas when you check FILLM:
1) The Oracle background processes (PMON, DBWR, LGWR etc.)
2) The SERVER side (or SHADOW) process created when you use SVRMGRL to start the database. To get an idea of the quota available, use the command: $ SHOW PROCESS /QUOTA /ID=<pid> Where <pid> is the OpenVMS pid of the process to be reviewed. This command displays the remaining 'Open file quota' (FILLM) for the process, as well as other available quotas.
Example:
You have 226 data files, eight REDO log files and three control files for a total of 237 files. The SYSGEN setting for CHANNELCNT is at the default of 256. During normal operation, Oracle periodically needs to open additional files. These include the INIT parameter files, the ALERT log, various DCL scripts, trace files, etc. Under these conditions, a CHANNELCNT value of 256 is too small to accommodate the number of files that Oracle/OpenVMS needs open at the same time.
For most systems the default quotas should be adequate.
If not, please describe the infor u've encountered
ORA-00059错误及字符集修改
问题:在DBA studio中下的例程‘数据库'自动变为已启动,无法装载也无法打开,提示‘ORA-00059??LOG--FILES????'在这种情况下如果不卸载重装解决,能有其它的办法吗?
一般来说ORA-00059多出现maximum number of DB_FILES exceeded的错误,由于你机器上的字符集设置有些问题,所以 错误提示 变成了??,(字符集设置不对照成的) 虽然看的出于问题可能和Log file有关,但不确定.请修改Oracle的字符集
[字符集修改方法]
SQL> desc props$
列名 可空值否 类型
------------------------------- -------- ----
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(2000)
COMMENT$ VARCHAR2(2000)
SQL> col value$ format a40
SQL> select name,value$ from props$;
NAME VALUE$
------------------------------ -------------------------
DICT.BASE 2
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY$
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS.,
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_CALENDAR GREGORIAN
NLS_RDBMS_VERSION 7.3.4.0.0
GLOBAL_DB_NAME ORACLE.WORLD
EXPORT_VIEWS_VERSION 3
查询到14记录.
NLS_CHARACTERSET这个参数应该是ZHS16GBK,如不是,改为它。
ORA-12203:TNS:unable to connect destination错误
问题:
在Windows2000下安装8.0.5,选择none,没有建立实例,为什么在执行svrmgr30 时报告Ora-12203:tns:unable to connect destination!
解答:
因为没有创建实例,也就没有环境变量。可参考“手工创建数据库的全部脚本和说明”。
注意其中:
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"
Ora-12571:TNS:包写入程序失败
把虚拟内存设的大一些
Ora-12705错误
Cause: There are two possible causes: Either an attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value; or the NLS_LANG environment variable contains an invalid language, territory, or character set.
Action: Check the syntax of the ALTER SESSION command and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable. For more information about the syntax of the ALTER SESSION command, see Oracle8i SQL Reference.
ORA-03113:通信通道的文件结束
Cause:
An unexpected end-of-file was processed on the communication channel. The problem could not be handled by the SQL*Net, two task, software. This message could occur if the shadow two-task process associated with a SQL*Net connect has terminated abnormally, or if there is a physical failure of the interprocess communication vehicle, that is, the network or server machine went down.
Action:
If this message occurs during a connection attempt, check the setup files for the appropriate SQL*net driver and confirm SQL*Net software is correctly installed on the server. If the message occurs after a connection is well established, and the error is not due to a physical failure, check if a trace file was generated on the server at failure time. Existence of a trace file may suggest an Oracle internal error that requires the assistance of customer support.
Explanation:
There are numerous causes of this error. It is a 'catch all' type error which means 'I cannot communicate with the Oracle shadow process'. This usually occurs when the Oracle server process has died for some reason.
ORA-12515:TNS:监听进程无法找到该演示文稿的句柄
解决方案是检查目标服务器网络配置,并使其接受HTTP的协议。如果你是使用一般数据使用,建议使用新的数据库实例。
ORA-01031:insufficient privileges
Cause: An attempt was made to change the current username or password without the appropriate privilege. This error also occurs if attempting to install a database without the necessary operating system privileges. When Trusted Oracle is configure in DBMS MAC, this error may occur if the user was granted the necessary privilege at a higher label than the current login.
Action: Ask the database administrator to perform the operation or grant the required privileges. For Trusted Oracle users getting this error although granted the appropriate privilege at a higher label, ask the database administrator to regrant the privilege at the appropriate label.
ORA-01017:invalid username/password; logon denied
Cause: An invalid username or password was entered in an attempt to log on to Oracle. The username and password must be the same as was specified in a GRANT CONNECT statement. If the username and password are entered together, the format is: username/password.
Action: Enter a valid username and password combination in the correct format.
问题:ORACLE8.1.7.0.0版本,,不知是哪里的问题,用internal 和 system 都无法登陆,错误提示:ORA1031 、ORA1017
解答:还有没有其他DBA身份的用户,如果有,最好登陆进去,然后alter user system identified by YOURPASSWORD; 你的系统密码被人修改了
ORA-03121:没连接接口驱动程序
Cause: This message occurs usually because the Net8 driver is not loaded into memory or there is a mismatch of the version of the driver. A user program linked with an obsolete library may also cause this message. Only programs provided by Oracle Corporation should use this interface.
Action: If the message occurred during use of a program provided by Oracle Corporation, contact Oracle Support Services. If a user program caused the message, relink the program with current versions of the Oracle libraries.
ORA-12638:凭证检索失败
问题:
2000ad server SP2 具域网,在网络连接的情况下按装ORACLE8I,到创建数据库,初始化数据库时,提示“ORA-12638 凭证检索失败”,装了几次都是这样
解答:
凭证检索失败的错误一般都与网络用户集成有关,ORACLE中对于这个问题的管理是在SQLNET.ORA文件的SQLNET.AUTHENTICATION_SERVICES进行控制的,默认安装都是SQLNET.AUTHENTICATION_SERVICES= (NTS)表示安装ORACLE的用户是通过操作系统的集成认证控制的,所以,我们只要把这个参数值屏蔽掉就行了。
修改\Oracle\Ora81\network\ADMIN目录下SQLNET.ORA文件的SQLNET.AUTHENTICATION_SERVICES= (NTS)为# SQLNET.AUTHENTICATION_SERVICES= (NTS)
ORA-00604: error occurred at recursive SQL level 2
Cause: An error occurred while processing a recursive SQL statement (a statement applyingto internal dictionary tables).
Action: If the situation described in the next error on the stack can be corrected, do
so; otherwise contact Oracle Customer Support.
ORA-04030 out of process memory when trying to allocate string bytes (string,string)
Cause: Operating system process private memory has been exhausted.
Action: See the database administrator or operating system administrator to increase process memory quota. There may be a bug in the application that causes excessive allocations of process memory space.
ORA-04031:unable to allocate string bytes of shared memory("string","string","string","string")
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the DBMS_SHARED_POOL package topin large packages, reduce your use of shared memory, or increase the amount ofavailable shared memory by increasing the value of the initialization parametersSHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE. If the large pool is out of memory,increase the initialization parameter LARGE_POOL_SIZE.
ORA-01555:snapshot too old: rollback segment number 9 with name "USER_RS5" too small
问题:一个存储过程执行的数据大概有100万条,在执行到几十万条的时候,遇到了如上异常。
解答:原因有两个方面:
1、由于你的这个操作执行的时间太长,导致SNAP SHOT失效(太老了),导致你的操作失败;
2、你的RBS太小,无法容纳那么多的操作。
处理方法:
1、加大回滚段的大小(增加RBS表空间,修改回滚段的参数等)
2、你这种编程方法有问题,如果第一个方法不能解决问题,说明是因为执行时间过长,SNAPSHOT失效,需要你调整一下程序。是不是先把100万记录读到内存里(内存不够,可以采用文件作为缓冲),然后再做处理。也可以采用分段处理的方法,一次处理10万条。
ORA-01589:must use RESETLOGS or NORESETLOGS option for database open
问题:在startup 之后出现错误提示
解答:
Cause: Either incomplete or backup control file recovery has been performed. After these types of recovery you must specify either the RESETLOGS option or the NORESETLOGS option to open your database.
Action: Specify the appropriate option.
你的数据库以前做过Media Recovery,用OPEN DATABASE RESETLOGS或OPEN DATABASE NORESETLOGS打开数据库就可以了。
ORA-01017:invalid username/password; logon denied
Cause: An invalid username or password was entered in an attempt to log on to Oracle. The username and password must be the same as was specified in a GRANT CONNECT statement. If the username and password are entered together, the format is: username/password.
Action: Enter a valid username and password combination in the correct format.
缺省密码
8i:
scott/tiger
internal/change_on_install
system/manager
sys/oralce(密码也可能是manager或change_on_install)
9i:
scott/tiger
sys/change_on_install
OEM的用户名/密码:sysman/oem_temp
重设system用户的密码
可以通过以下方法登陆
sqlplus /nolog
conn / as sysdba
alter user system identifed by '123'
Oracle的密码文件
8i一般位于$ORACLE_HOME/PRODUCT/8.1.6/DBS/ORAPWD_[SID].ORA
如何激活用户
8i:在DBA Studio里面,有“用户”--然后找到用户名--->然后选中“未锁定”就可以了
Oracle的初始化文件
8i:安装时设定的ORACLEHOME的目录下会有:admin、oradata和ora81三个目录,其中在admin目录下的你安装的数据库目录下的Prfile下的init.ora就是。
9i:在原来的目录下看不到init文件了。不过你可以这样:
create pfile from spfile;
这样就可以看到init的文件了,因为9i里面的初始化文件有点变化。
Oracle 数据库自带数据的生成脚本
\ORACLE_HOME\rdbms\admin\SCOTT.SQL
日期乱码
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,然后就正常了。
Oracle 9i AS安装错误
解决:按照它的提示编辑host文件,加上127.0.0.1 localhost #localhost
spfile 和 pfile异同
spfile,服务器参数文件是在Oracle9i及更高版本中一个新特性。其使Oracle9i可以更改大多数过去在使用数据库联机和用户时不能动态更改的初始化参数。此外,服务器参数文件使Oracle9i能记住会话之间动态更改过的初始化参数的设置。
pfile,相当与Oracle8i及以前版本的Init.ora。
可以根据pfile建立spfile:如:create spfile from pfile =‘路径/init.ora'
数据库升级错误——不相关的字符集
数据库从Oracle8.0.5升级到8.1.5,备份数据恢复时出现错误。错误提示:不相关的字符集(805到820)
1、重建Oracle 8i数据库,建库时指定同一字符集,再移植; 查看原数据库字符集, select * from nls_database_parameters
2、设置原数据库Oracle 805 的环境变量NLS_LANG与ora 8i数据库一致,执行export时可以转换字符集。
3、exp 与 imp 最好都使用Oracle 816 带的,不要用Oracle 805 的exp 导出的dmp 文件,又用Oracle 816 的 imp 来导。
启动 iSQL*Plus
要启动 iSQL*Plus,请执行以下步骤:
连接到 Internet 或 Intranet,然后启动 Web 浏览器。在 Web 浏览器的“位置”字段或“地址”字段中,输入 Oracle9i HTTP Server URL,并接着输入 isqlplus。iSQL*Plus URL 如下所示:http://machine_name.domain:7777/isqlplus
如果您不知道 Oracle9i HTTP Server URL,请向系统管理员咨询。
按 Enter 键将转到该 URL。Web 浏览器中将显示 iSQL*Plus“登录”屏幕。
在“用户名”字段和“口令”字段中,输入 Oracle9i 用户名和口令。如果您不知道 Oracle9i 用户名和口令,请向数据库管理员咨询。
将“连接标识符”字段保留为空可以连接到默认数据库。输入 Oracle Net 数据库别名时,可以连接到默认数据库以外的其他数据库。如果已配置了限制的数据库访问,“连接标识符”字段就会变成可供选择的可用数据库的下拉列表。
单击“登录”,连接到相关数据库。Web 浏览器上将会显示 iSQL*Plus“工作屏幕”。
此时,您可以在“工作屏幕”的输入区域中输入并执行 SQL、PL/SQL 和 SQL*Plus 语句和命令。
Oracle 816中启动Enterprise Manager
系统环境:
1、操作系统:Windows 2000
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:\ORACLE
错误现象:
默认安装完Oracle 816 for NT后,想使用Oracle816 for NT的OEM工具来管理数据库,开始→程序→Oracle - OraHome81→Enterprise Manager→Console。这时系统出现以下画面一:
点击“确定”,出现画面二、三。
在“添加管理服务器”栏上输入本机IP地址,如:192.1.1.1,点击“确定”,出现画面四。
画面显示出的oradb就使本机名称,点击“确定”,出现画面五,进行“Oracle Enterprise Manager 登录”。
输入口令/密码:system/manager,点击“确定”,出现画面六,出现以下错误提示。
VTK-1000 : Unable to connect to the management server oradb. Please vertify that you have entered the correct host name nd the status of the Oracle Managerment Server.解决方法:
1、使用Enterprise Manager配置辅助工具
开始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant
a、使用Configuration Assistant工具来创建一个新的资料档案库,如图七。
单击“下一步”,出现画面八。
b、 先登录 用户名:system,密码:manager,服务:oradb,注:输入的用户必须具有DBA权限,单击“下一步”,出现画面九。(9i为sysman/oem_temp)
c、再创建拥有此资料档案库的用户,系统默认取机器名,这里我们设用户名为:test,密码:test,输入两遍口令,单击“下一步”,出现画面十。
d、因为输入的是一个新用户,系统要求指定用户表空间,本例使用系统推荐,
单击“下一步”,系统正在创建OEM_REPOSITORY表空间,创建完毕后出现画面十一。
e、系统显示“创建资料档案库概要”,单击“完成”,显示“配置辅助工具进度”,如图十二。
单击“显示详细资料”,可以看到系统正在创建各种对象的提示。
系统处理完成,单击“关闭”,如图十三。
2、 启动OracleOraHome81ManagementServer服务:开始→设置→控制面版→管理工具→服务,如图十四,找到Oracle相关服务的位置。
单击“启动”,如图十五,如果上一步没有创建资料档案库,则会启动失败。
把OracleOraHome81ManagementServer服务设置成自动启动方式。
3、 重新进行Oracle Enterprise Manager 登录:开始→程序→Oracle - OraHome81→Enterprise Manager→Console
Oracle Enterprise Manager 的默认管理员是 sysman/oem_temp,系统管理员应该马上更改口令。
如图十六,不要在管理员一栏直接写sysman/oem_temp,而是分别输入“用户名/密码”。
单击“确定”,出现图十七,安全警告,要求你立即更改sysman的口令。
本例输入两遍manager作为口令,输入完口令后,单击“更改”,系统正式调出“Oracle Enterprise Manager 控制台 SYSMAN@oradb”的画面。
备份和恢复数据库的时候启动OMS时总是提示VTD——0057连接资料档案库时出错Oracle sysman emSDK client ons client NoDomainException
1.run "emca" to create a "repository" for oem
2.agentctl start
oemctl start oms
$ORACLE_HOME/network/snmp/peer/start_peer -a
3.oemapp dbastudio <= initial account/password=sysman/oem_temp
数据库的创建脚本
系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:D:\ORACLE
建库步骤:
1、手工创建相关目录
D:\Oracle\admin\test
D:\Oracle\admin\test\adhoc
D:\Oracle\admin\test\bdump
D:\Oracle\admin\test\cdump
D:\Oracle\admin\test\create
D:\Oracle\admin\test\exp
D:\Oracle\admin\test\pfile
D:\Oracle\admin\test\udump
D:\Oracle\oradata\test
D:\Oracle\oradata\test\archive
2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:
3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件,
内容:IFILE='D:\Oracle\admin\test\pfile\inittest.ora'
4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora
命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5
5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"
6、生成各种数据库对象D:\>svrmgrl
--创建数据库
connect INTERNAL/Oracle
startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora"
CREATE DATABASE test
LOGFILE 'D:\Oracle\oradata\test\redo01.log' SIZE 2048K,'D:\Oracle\oradata\test\redo02.log' SIZE 2048K, 'D:\Oracle\oradata\test\redo03.log' SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'D:\Oracle\oradata\test\system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;
控制文件、日志文件在上面语句执行时生成
connect INTERNAL/Oracle
--修改系统表空间
ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;
--创建回滚表空间
CREATE TABLESPACE RBS DATAFILE 'D:\Oracle\oradata\test\rbs01.dbf' SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE(INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);
--创建用户表空间
CREATE TABLESPACE USERS DATAFILE 'D:\Oracle\oradata\test\users01.dbf' SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--创建临时表空间
CREATE TABLESPACE TEMP DATAFILE 'D:\Oracle\oradata\test\temp01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE(INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;
--创建工具表空间
CREATE TABLESPACE TOOLS DATAFILE 'D:\Oracle\oradata\test\tools01.dbf' SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--创建索引表空间
CREATE TABLESPACE INDX DATAFILE 'D:\Oracle\oradata\test\indx01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--创建回滚段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
--使回滚段在线
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;
--修改sys用户的临时表空间为TEMP
alter user sys temporary tablespace TEMP;
--创建数据字典表
@D:\Oracle\Ora81\Rdbms\admin\catalog.sql;
@D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
@D:\Oracle\Ora81\Rdbms\admin\catproc.sql
@D:\Oracle\Ora81\Rdbms\admin\caths.sql
connect system/manager
@D:\Oracle\Ora81\sqlplus\admin\pupbld.sql
connect internal/Oracle
@D:\Oracle\Ora81\Rdbms\admin\catrep.sql
exit
--生成SQL*Plus帮助系统
sqlplus SYSTEM/manager
@D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql
exit
--修改system用户默认表空间和临时表空间
svrmgrl
connect internal/Oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
exit
7、将test实例启动服务设置成自动启动方式
D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto
启动ARCHIVELOG模式
C:\>svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
版权所有 (c) 1997,1999,Oracle Corporation。保留所有权利。
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal
连接成功
SVRMGR>shutdown
已关闭数据库。
已卸下数据库。
已关闭 ORACLE 实例。
SVRMGR> startup mount
已启动 ORACLE 实例。
系统全局区域合计有 57124108个字节
Fixed Size 70924个字节
Variable Size 40198144个字节
Database Buffers 16777216个字节
Redo Buffers 77824个字节
已装入数据库。
SVRMGR> alter database archivelog;
语句已处理。
SVRMGR> archive log start
语句已处理。
SVRMGR> alter database open;
语句已处理。
SVRMGR> alter system switch logfile; --强制系统进行日志切换,可马上观察到归档日志的产生
语句已处理。
SVRMGR> exit
服务器管理程序结束。
修改数据库参数文件c:\Oracle\admin\oradb\pfile\init.ora,
取消以下语句的#注释
log_archive_start = true
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
关闭数据库,重新启动
查看C:\Oracle\oradata\oradb\archive目录下,可以看到类似ORADBT001S01201.ARC的文件,说明归档成功
PLUS:Oracle9i中需要执行的部分
SQL> alter system set log_archive_dest_1 ="location=E:\Oracle\oradata\test\archive" scope = spfile;
SQL> alter system set log_archive_start = true scope = spfile;
补充一些概念
解释init.ora参数文件中关于归档重做日志参数项的含义
归档模式是自动还是手工,true为自动,false为手工
log_archive_start = true
归档日志文件所保存的路径
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
归档日志文件的命名方法
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
归档命令:
启动自动归档模式,系统重起后,将按init.ora中的参数log_archive_start的值设置归档方式
SVRMGR> archive log start
启动手工归档模式
SVRMGR> archive log stop
查看归档信息:重做日志是否归档方式、是自动归档还是手工归档、归档路径、最旧的联机日志循序号
SVRMGR> archive log list
归档一个已满,但没有归档的联机重做日志
SVRMGR> archive log next
归档所有已满,但没有归档的联机重做日志
SVRMGR> archive log all
注意:一个事务即使不被提交,也会被写入到重做日志中。
SYS下的程序包和程序包体仅STANDARD包体可以编译为valid
问题:我的sys下的程序包和程序包体都是invalid.但是STANDARD包体可以编译为valid.其他程序包都是invalid. 编译时提示:
VBO-4553:PL/SQL 程序包编译是不。有关详细信息,请按该属性页上的显示错误。ORA-06554:????? PL/SQL ???? DBMS_STANDARD
SQLPLUS连接时提示:ERROR:ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
Error accessing package DBMS_APPLICATION_INFO
ERROR:ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
解答:
用$ORACLE_HOME/RDBMS/ADMIN下面的相关文件重新创建一下这些包。
SYSDBA登陆运行
$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL
$ORACLE_HOME/RDBMS/ADMIN/CATPROC.SQL
如何实现:插入数据到数据库A中的表TPROCESS,数据库自动更新到数据库B中的表TLOG?
1. at db1
chk tnsnames.ora
CONNECT_STRING_DB2 = ...
tnsping CONNECT_STING_DB2
sql> create public database link DB2 using 'CONNECT_STING_DB2';
2. at db2
chk tnsnames.ora
CONNECT_STRING_DB1 = ...
tnsping CONNECT_STING_DB1
sql> create public database link DB1 using 'CONNECT_STING_DB1';
3. at db1
sql> create trigger ... after insert ...
insert into USER.TABLE@DB2 ... <<== using database link !!!
:NEW.column1, :NEW.column2 ...
从一个字符集不是中文字符集的数据库中EXP数据库,然后导入到一个中文字符集的数据库中
EXP/IMP是一种数据库到出导入工具,但是在EXP/IMP对数据库的字符集要求比较严格,如果EXP出的数据库的字符集和导入数据库的字符集不兼容。导入无法完成。此时需要采取一种特殊的方法进行操作。由于该操作是有一定危害性的操作,在操作过程中,数据库突然出现故障的情况下,会导致数据库可能无法正常启动。因此操作前一定要先备份数据库。
1、在原数据库执行sqlplus,连接sys用户,修改字符集参数,然后退出。
SQL> connect sys/******;
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;
2、执行svrmgrl,关闭并重新开启Oracle数据库
SVRMGR> connect internal/******; (口令一般为"Oracle")
SVRMGR> shutdown immediate;
SVRMGR> startup mount;
SVRMGR> alter system enable restricted session;
SVRMGR> alter system set job_queue_process=0;
SVRMGR> alter database open;
SVRMGR> alter database character set ZHS16GBK;
SVRMGR> exit;
3、修改环境变量NLS_LANG
由 AMERICAN_AMERICA.WE8ISO8859P1
转换为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
如果是WINDOWS,用Regedit修改ORACLE下的键值。如果是UNIX系统,修改环境变量:NLS_LANG=...;export NLS_LANG
如果是OpenVMS:修改Login.com文件中的设置,然后重新执行一次Login.com
4、执行exp导出数据
5、将环境变量NLS_LANG修改为原来的值
6、执行sqlplus,连接sys用户,恢复字符集参数,然后退出。
connect sys/******; (口令一般为"manager")
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;
7、重复步骤2,关闭并重新开启Oracle数据库
8、将导出的dmp文件导入目标数据库(字符集为中文)
成功创建DBLink,但不能连接
问题:
ORACLE 8.1.6 for NT,现在需要连另一个ORACLE 8 FOR UNIX,当然是要建立DBLINK。但是建立本地网络服务名时可以连接上了,所建DBLINK就是连接不上,为什么?
用select <xxx> from <表名>@<db_link>
错误是:ORA-02085: 数据库链接ORA8I.US.ORACLE.COM与ORA8I相连结(ora8i 是DBLINK的名字)
解答:
如果你的源数据库的GLOBAL_NAME=TRUE,那么你的DBLINK的名字必须和远端数据库的全局名一致,否则会发生2085 错误。
你可设置源数据库的GLOBAL_NAME=FALSE,也可以在创建DBLINK的时候把DBLINK的名称设置为远程数据库的全局名。
How to Configure the 9i Agent with Multiple Network Cards
fact: Oracle Intelligent Agent 9.0.1
fix:
Configuring the Version 9.0.1 Agent for Use with Multiple Network Cards (NIC)(From the Oracle IA User's Guide Release 9.0.1 Part Number A88771-02):
As with version 8.1.7 of the Intelligent Agent, 9i Intelligent Agent users have three options to configure the Agent on a machine with multiple network cards.By default the Agent will bind to the primary NIC on its machine ('le0' on UNIX platforms and 'network0' on Windows NT platforms). The other two options are:
a. Ability to bind to a NIC specified by the user.
企业版:CPU 最低PENTIUM 200M 推荐 PENTIUMIII 1G以上
内存 最低128M 推荐 512M
硬盘空间 系统盘140M 安装盘4.5G(FAT32)或2.75G(NTFS)
标准版:CPU 最低PENTIUM 200M 推荐 PENTIUMIII 866以上
内存 最低128M 推荐 256M
硬盘空间 系统盘140M 安装盘4.5G(FAT32)或2.5G(NTFS)
个人版:CPU 最低PENTIUM 200M 推荐 PENTIUM 266以上
内存 最低128M 推荐 256M
硬盘空间 系统盘140M 安装盘4.0G(FAT32)或2.5G(NTFS)
在P4机器上安装Oracle 8i
P4的计算机最好安装ORACLE 9I,如果不方便的话可以按照以下的方法安装ORACLE 8I (其实也不是所有的P4CPU都不可以安装ORACLE8I, 我的一台P4 1。7 安装ORACLE 8.1.6就一点问题没有)
一、系统环境及准备工作
硬件:
Intel P4的处理器
256M的内存
硬盘有三个分区C、D、E,光驱为F
软件:
操作系统WINDOWS 2000 SERVER、WINDOWS 98
数据库ORACLE 8.0.6 for NT或ORACLE 8.1.x for NT
准备工作:
确保机器上没有装过Oracle产品。如有的话请先卸载,再将注册表中所有Oracle的相关项删除。
在WINDOWS 2000 SERVER上安装Oracle Enterprise Edition
在WINDOWS 98上安装Oracle Client
二、故障现象
1、在WINDOWS 2000 SERVER上安装Oracle8.0.6时
当选择定制安装,并创建数据库时,主要应用程序都已安装完成,在提示“是否创建数据库”,选择是后就再也没有反应。重启机器后,点击应用程序后没有反应而简单终断。 点击应用程序,鼠标呈现沙漏状,然后消失,再没有任何现象发生。
2、在WINDOWS 98上安装Oracle8.0.6的Client后安装成功,点击应用程序,提示该程序执行了非法操作,即将关闭。
3、在WINDOWS 2000 SERVER上安装Oracle8i时点击安装应用程序Setup.exe,程序挂起、或消失、或终止而没有任何反应。
三、原因分析
使用Windows NT、 Windows 2000或NetWare操作系统和Intel P4处理器的计算机,安装Oracle8或者Oracle8i时,将会碰到以上问题。主要原因是Oralce8 /8i的OUI(Oracle Universal Installer) 1.7.1.9.0或以前版本使用了Sun JRE 和 Symantec JIT(Just in Time Library),而JRE 和 JIT与Intel P4处理器不兼容。
四、解决办法
1、 Oracle 8.0.6的解决办法
(1)将安装盘整个拷贝到硬盘。譬如E:\Oracle806。
(2)找到目录E:\Oracle806\win32\JRE11下的symcjit.dll文件,将symcjit.dll改名为为symcjit.old。
(3)找到目录E:\Oracle806\win32\JRE11下的Jre11.map文件,用文本编辑工具打开Jre11.map文件,找到以bin开头的段,在其中可看到" " "symcjit.dll" "%JRE11%\bin\" 398336 false false false 00 00 00 "" "",将此行删除,然后保存。注意此文件的属性是只读的。
(4)从目录E:\Oracle806中执行安装文件Setup.exe。
如果故障的现象是,Oracle8.0.6已经安装完成,但是点击建Oracle应用程序没有任何反应(一般是在WINDOWS 2000 SERVER操作系统中)或点击应用程序如Net8,提示该程序执行了非法操作,即将关闭(一般是在WINDOWS 98操作系统中)。。在这种情况下,可不卸载Oracle,而直接将系统安装目录相应位置下的symcjit.dll文件改名为symcjit.old即可。
2、Oracle 8.1.x解决办法
(1)创建一临时目录,并将Oracle8i的安装源程序拷贝到此目录。找到目录stage\Components\Oracle.swd.jre\1.1.7.30\1\DataFiles\Expanded\jre\win32\bin下的symcjit.dll 的文件,并改名为 symcjit.old。注意OEM目录下还有一个symcjit.dll文件要改名。
(2)搜索到oraparam.ini文件,打开它,改变行RE_MEMORY_OPTIONS=-mx48m的参数为JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
(3)其它的参数保持不变。
(4)执行本地硬盘install\win32\setup.exe目录下的Setup.exe文件。此时调用的是修改过的参数文件oraparam.ini。
(5)安装时选择自定义模式,并且不创建数据库。
(6)安装程序调用网络配置助手Net8 Configuration Assistant (NetCA)时你需要强制终止它,然后退出安装界面。
(7)Oracle8i安装完成后,安装目录中的下列每一个文件都有需要作相应修改。
assistants\dbca\dbassist.cl
assistants\dbma\dbmig.cl
assistants\ifa\ifa.cl
bin\elogin.cl
bin\owm.cl
ldap\oidamdin\oidadmin.cl
network\tools\netasst.cl
network\tools\netca.cl
owm\install\instelogin.cl
owm\install\instowm.cl
用编辑工具依次打开上述文件,增加参数 – nojit,以dbassist.cl文件为例示意如下:
Command=("C:\Program Files\Oracle\jre\1.1.7\BIN\JREW" -nojit -classpath ....)
用相同的方法修改所列出的每一个.cl 文件内容。
(8)安装成功的完成了,你可以在安装完成后运行DBCA和NetCA。
在P4机器上安装Oracle 8i简略版
1、将ORACLE软件拷贝到硬盘。
2、将 硬盘目录文件\stage\Components\Oracle.swd.jre\1.1.7.30/1 \DataFiles\Expanded\jre\win32\bin\symcjit.dll 的文件改名为symcjit.old
3.从\install\win32 目录下运行SETUP.exe文件进行安装
Oracle 9i 在2000高级服务器版上的安装
解决方法:
1. 如果机器上从来没有安装过Oracle817或其他版本的Oracle,则可以把待安装所有文件解压到一个临时目录,例如解压在E盘的temp\install\disk1目录中,然后用搜索文件工具,找到所有的symcjit.dll文件,将其名字更改为symcjit.old,那么就可以直接运行disk1目录下的setup.exe文件,开始安装。
2. 如果机器上曾经安装过Oracle817,则需要完全卸载Oracle,然后安装,步骤如下:
⑴开始->设置->控制面板->管理工具->服务
停止所有Oracle服务。
⑵开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer
卸装所有Oracle产品
⑶运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
⑷运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
⑸运行regedit,搜索所有与Oracle相关的项,并将其删除。
⑹从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
⑺重新启动计算机,重起后才能完全删除Oracle所在目录
⑻删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle及C:\Program Files\Oracle,删除这个入口目录及所有子目录。
⑼把Oracle所有待安装的文件解压到一个临时目录,例如解压在E盘的temp\install\disk1目录中。
⑽打开文件disk1\install\oraparam.ini,做如下改动:
● SOURCE项改为SOURCE=e:/temp/install/disk1/stage/products.jar
●JRE_LOCATION项改为JRE_LOCATION=e:/temp/install/disk1/stage/Components/Oracle.swd.jre/1.1.7.30/1/DataFiles/Expanded/jre
●OUI_LOCATION项改为 OUI_LOCATION=e:/temp/install/disk1/stage/Components/Oracle.swd.oui/1.7.1.9.0/1/DataFiles/Expanded
● JRE_MEMORY_OPTIONS 项改为JRE_MEMORY_OPTIONS=-nojit -ms16m -mx32m
3. 运行disk1\install\win32\setup.exe,安装开始,根据提示做选择,安装下去,假设我安装在D:\orant\ora81目录下。
4. 安装完毕后一些服务会报出错,不能启动,这些服务为:
Net8 Configuration Assistant
Database Configuration Assistant
HTTP服务虽然启动,但是会报出一连串java.exe出错,可以点击开始->Oracle (数据库名) ->Oracle HTTP server->Stop HTTP Server来停止HTTP Server服务。安装完成了,可是全有问题。
5. 安装完成后还需要做下面的工作,在安装路径下所有的“*.cl”后缀的文件中增添“-nojit”项,共十个文件,如下:
assistants\dbca\dbassist.cl;
assistants\dbma\dbmig.cl;
assistants\ifa\ifa.cl;
bin\elogin.cl;
bin\owm.cl;
ldap\oidamdin\oidadmin.cl;
network\tools\netasst.cl;
network\tools\netca.cl;
owm\install\instelogin.cl;
owm\install\instowm.cl;
Example:
Command=("C:\Program Files\Oracle\jre\1.1.7\bin\jrew"
-classpath
"C:\Program Files\Oracle\jre\1.1.7\lib\rt.jar;
C:\Program Files\Oracle\jre\1.1.7\lib\i18n.jar;
D:\Oracle\ora81\jlib\ewt-3_3_6.jar;
D:\Oracle\ora81\jlib\ewtcompat-opt-3_3_6.zip;
D:\Oracle\ora81\jlib\share-1_0_8.jar;
D:\Oracle\ora81\jlib\swingall-1_1_1.jar;
D:\Oracle\ora81\jlib\help-3_1_8.jar;
D:\Oracle\ora81\jlib\ice-4_06_6.jar;
D:\Oracle\ora81\network\jlib\sysmanmaf.jar;
D:\Oracle\ora81\owm\jlib\owm-2_1.jar;
D:\Oracle\ora81\owm\jlib\help\elogin\help"
Oracle.security.admin.lio.lioa.LioaApp Oracle.security.admin.lio.lioa.LioaApp -nojit)
6. 到这里4中的三项服务仍不能启动,因为工作还没做完。
到java.sun.com网站下载jre软件,要1.2.2以上的版本,然后安装在你的机器上,安装完成后用其中的bin目录和lib目录覆盖d:\orant\ora81\apache\jdk\jre下的bin目录和lib目录。到这里以上三个服务就可以顺利启动了。
Win2000上安装Oracle 9i
问题:
在win2000server中安装Oracle9.2时,加载文件是出错,安装Oracle8就不会出错
解答:
需要打Sp1以上的补丁才行
同一台PC机上安装8I和9I
问题:
安装时C:\PROGRAMME\ORACLE安装程序回覆盖先安装的版本文件。不知道怎样才能避免一切可能出现的冲突问题
解答:先装8 后9,分主目录装。还有,如果在某个已经存在的Oracle_home中安装,当你修复或更新Oracle,或者添加其他产品选项时,你应该确定停止从特定主目录中运行的任何Oracle服务。
Oracle 9i的安装过程
环境:New CY1G, 256+128M, win2000 SP3,Oracle 9.2.0.1.0
1.启动OUI(Oracle universal installer),选择下一步。
2.选择安装的产品,即Oracle Database。点击下一步。
3.选中“标准版”,需要2.8G的空间,(这些安装类型的主要差别是产品被授予许可的方式不同,企业版仅仅包括每个可能的选项,而标准版要求有想使用的每个选项的单独授予许可。个人版意味着满足测试目的的单机安装)点击下一步。在“数据库配置选项”中,选中只安装Oracle软件(Software Only),不安装数据库,待安装完Oracle软件后,用DBCA创建数据库。
4.安装完Oracle软件(不含Oracle数据库)后,启动DBCA (DataBase Configuration Assistant),将一步步指导你创建数据库(New Database)。
5.创建完数据库后,启动NCA(Net Configuration Assistant),为数据库配置监听器。
Oracle Net Configration Assistan:
监听程序配置:直接下一步,监听程序名为默认的Listener,网络协议为TCP,使用默认端口1521。命名方法配置:选中本地命名。
本地Net服务名配置:即修改本地tnsnames.ora文件,添加,选择下一步,输入数据库全局名,在网络协议里选择TCP,输入主机名,使用标准端口。使用sys用户测试。
6.现在可以独立登陆OEM(Sys/password as sysdba)
7.建立资料档案库,启动EMCA(Enterprise Manager Configuration Assiatan),为数据库创建资料档案库。
8.创建资料档案库完成后,可以启动Console登陆到Oracle managerment server,默认用户名为sysman/oem_temp。
Oracle在双机备份服务器中的安装步骤
1、在其中一台电脑上安装完整的Oracle 数据库(通过自定义安装,不要创建数据库实例)
2、通过Oracle配置助手创建数据库,将所有数据库文件包括控制文件、表空间文件,日志文件等路径指定到磁盘柜上。
3、在另一台电脑上安装Oracle数据库,指定数据文件到磁盘柜上,覆盖以前建立的数据文件。
4、要保持文件Oracle\ora81\database\PWDmyora.ora两台机子文件一样,比如你在A机上导入dmp文件,需要把PWDmyora.ora拷入到B机上。
5、将两台机子的Oracle服务改成手动模式,通过dataware软件实现切换。
删除Oracle之一
软件环境: 1、Windows 2000+ORACLE 8.1.7
2、ORACLE安装路径为:C:\ORACLE
实现方法:
1、 开始->设置->控制面板->管理工具->服务,停止所有Oracle服务。
2、 开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer,卸装所有Oracle产品,但Universal Installer本身不能被删除
5、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
6、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
7、 运行regedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。
8、 开始->设置->控制面板->系统->高级->环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定
9、 从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
10、删除\Program Files\Oracle目录
11、重新启动计算机,重起后才能完全删除Oracle所在目录
12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文件ORACLE.ini、oradim73.ini、oradim80.ini、oraodbc.ini等等。
13、WIN.INI文件中若有[ORACLE]的标记段,删除该段
14、如有必要,删除所有Oracle相关的ODBC的DSN
15、到事件查看器中,删除Oracle相关的日志
说明:
如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,
安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。
删除Oracle之二
如果需要卸载Oracle,请运行安装光盘上的安装文件Setup.exe,在“欢迎”窗口中,选择“卸装产品”按钮,进入“Invertory 目录”窗口: 在该窗口中选择需要删除的产品(在产品名称前面的方框内打上在标记√),然后单击“删除”按钮即可;或者直接在开始菜单中找到Oracle for NT程序组下的Oracle installer,同样可以卸载Oracle。
卸载Oracle产品后,在系统的注册表内仍然有相关信息,您可以参考以下方法进行手工删除。
注意:对注册表的操作可能对系统产生严重影响,请在操作前进行备份,以便在系统异常时恢复到原来的注册表。该操作请参考Windows系统的相关说明。
运行RegEdit,在“HKEY_CURRENT_USER\Software”、“HKEY_LOCAL_MACHINE\Software”、“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services”主键中删除所有的Oracle入口(如果找到的话),然后重新启动计算机,如一切正常,则修改完成,如启动有错误,可能您对注册表的修改出错,运行RegEdit,将备份的注册表项目导入;如果误删了注册表中的“Microsoft ODBC for Oracle”,可用以下方法恢复:
将“HKEY_LOCAL_MACHINE\software\Microsoft\DataAccess”中的Version的值由‘2.1.1a'改为‘1.1.1a'然后重新安装财务软件,安装程序会自动安装 MADC,并恢复“Microsoft ODBC for Oracle”。 (对Windows95/98,请立即进入Dos方式,将备份的system.dat文件(如system.bak)复制回system.dat);
(对Windows NT,如启动失败,请重新启动计算机,在提示下,按空格键启动“硬件配置文件/已知的最新正确配置”菜单,该菜单将注册表还原到稳定状态。按照屏幕上的指示操作,可以将注册表还原为上次成功启动时的状态。)
在XP上安装Oracle9i老是报错提示加载数据库时出错:areasQueris
解答:去除安装路径中的中文
无法启动监听器——Ora-12560错误
1、控制面板-->管理工具-->服务下面的查看OracleOraHome92TNSListener服务有没有启动,如果没有启动则启动。
2、把tnsnames.ora和listener.ora里面的HOST(等于机器名或者等于IP地址例如:HOST = springal)值一定要保持一致。
3、多配置几次监听器然后启动尝试。
4、DOS下lsnrctl命令进入监听器信息窗口,使用help查看命令帮助,然后使用相关命令查看监听器情况,并多次stop和start。
5、查看注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener项并设置ImagePath>D:\Oracle\Ora92\BIN\TNSLSNR(你的安装目录)
6、查看你配置的监听器端口有没有被其他服务站用(默认的是1521端口),DOS下可以使用netstat –a查看。
7、查看你的防火墙或者防病毒软件是否屏蔽掉了1521端口。
8、据说还与你的系统有关系,重新安装一下windows 2000 SP3,这个问题通常与sp3有关系。
Oracle启动时,监听器不启动或打开出错
软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT
错误现象:
1、ORACLE启动时,监听器不启动或打开出错
2、服务器端:用username/password登录正常,但用username/password@alias登录不成功
3、客户端:用username/password@alias登录不成功
解决方法:
1、如果是因为修改了NT的机器名,则把listener.ora文件中的host参数全部改为新的NT机器名,
重新启动OracleTNSListenr80服务即可。
例如:
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1521))
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1526))
)
2、使用监听器实用程序:LSNRCTL80.exe
3、检查监听器参数文件:c:\orant\NET80\admin\listener.ora
4、检查监听器日志文件:c:\orant\NET80\log\listener.log
5、Tnsnames.ora文件配置错误,重新配置。
6、检查client 端 Tnsnames.ora
在单机上安装805,OracleTNSListener80不能启动
问题:
我在win2000下安装了ORACLE805,有网卡,但是没有没有连网。
解答:
1.805必须联网,设置Microsoft loopback或使用816。直接把Listener的侦听地址设到127.0.0.1上试试看。
2.把(PROTOCOL=ipc 和snmp)的配置删除,我是在win98下装的804,
listener.ora配置如下:
LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 192.168.1.4)
(Port = 1521)
)
(ADDRESS =
(PROTOCOL = TCP)
(Host = 127.0.0.1)
(Port = 1521)
)
#被注释 (ADDRESS =
# (PROTOCOL = SPX)
# (Service = y_lsnr)
# )
)
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER = ADMIN
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = y)
(SID_NAME = ORCL)
)
(SID_DESC =
(SID_NAME = extproc)
(PROGRAM=extproc)
)
)
运行正常。
ORA-12516 TNS:监听程序无法找到匹配的信息栈的可用句柄错误
先打开 TNSNAMES.ORA 这个文件, (位于 //OraHome1/network/admin/tnsnames.ora) ,确定(INSTANCE_NAME=) 和 INITsid.ORA 文件中的 实例名(执行项次) 匹配
ORA-12154 TNS不能解析服务名
使用Oracle的网络配置助手“net configration assistant”删除所有的网络的配置(主要是监听程序的配置和本地网络服务名的配置),然后重新配置。可以使用如下命令察看是否你的数据库服务器已经启动(在 *** 作系统中的“服务”中显示为启动,但你的数据库并不一定启动了。在MS-Dos提示符下输入:
C:\svrmgrl
SVRMGR:>connect to internal
密码:<输入你的密码,如果不知道,输入ORACLE试试>
如果连接成功,执行help可以察看命令。
SVRMGR>startup
如果提示你的数据库已经启动,则执行“stop”停止数据库,然后再执行“startup”启动。
无法启动实例服务
控制面板-->管理工具-->服务下面的查看OracleServiceTest服务有没有启动,如果没有启动则启动。如果启动时候报找不到路径,则查看注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleServiceTest项并设置 ImagePath>D:\Oracle\Ora92\BIN\Oracle.exe test(你的安装目录,参数为你的服务名)以上两则都可能是由于运行了注册表软件造成,比如优化大师之类,我个人的解决办法是在扫描注册表的时候略过HKEY_LOCAL_MACHINE。
在Windows平台上,安装Oracle后产生如下服务
OracleMTSRecoveryService
OracleOraHome92Agent
OracleOraHome92HTTPServer
OracleOraHome92TNSListener
OracleServiceTest——以上为缺省配置为自动启动的
OracleOraHome92ClientCache
OracleOraHome92PagingServer
OracleOraHome92SNMPPeerEncapsulator
OracleOraHome92SNMPPeerMasterAgent
设置自动启动数据库
可通过修改注册表来实现:
hkey_local_machine->software->microsoft->windows->currentversion->run->添加一个键值Oraclestart->其值为:c:\Oracle\ora81\bin\oradim.exe -startup -sid 数据库别名 -usepwd Oracle -starttype inst
在启动ORACLE服务时无法启动‘OracleOracleAgent'
问题:提示错误如下:“在本地计算机无法启动OracleOracleAgent服务。错误:3221356559”
原因:
The Intelligent Agent stores all jobs and event requests in a series of queue files in the network/agent directory. Upon startup, the Agent compares the actual hostname of the server to the hostname stored in the queue files. If the hostname of the server changes, the Agent will not recognize the queue files and will consider them corrupt. Then, the Agent will not start.
解答:
1. Remove the services.ora and all "q" files (*.q) from the $Oracle_Home\network\agent directory
2. Re-start the Intelligent Agent.
技巧:
This fix should be done with the understanding that any jobs or events registered against that Agent will be lost. Any active jobs or registered events against this agent should be removed from OEM console before deleting the agent's *.q files.
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist错误
问题:
刚刚装上Oracle8.1.7以后(安装过程非常正常),运行以下操作,一切正常。
C:\>sqlplus system/manager
SQL*Plus: Release 8.1.7.0.0 - Production on 星期四 11月 13 20:01:20 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL>
但是只要重启电脑,再运行同样操作,就会出现如下的问题:
C:\>sqlplus system/manager
SQL*Plus: Release 8.1.7.0.0 - Production on 星期四 11月 13 19:28:25 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
此时查看Oracle进程,所占用内存不到10m。
但是只要执行完Database Configuration Assistant--〉更改数据库设置后,
再次执行如上操作,就能正常运行:
此时Oracle进程占用内存接近100m,应该比较正常。
但是只要重新启动,就会依然出现
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
这种错误,只能用Database Configuration Assistant更改数据库设置后才能使用,重启后问题依旧。让我百思不得其解。
解答:
数据库实例没随计算机启动。
1.数据库启动参数中是否有非PUBLIC回滚段! 要是有的话就先屏蔽掉,等创建完回滚段后重新打开,应该就没有问题了。当时在ORACLE 7下成功。当时我用原有的数据库配置参数(*.ORA)文件创建以后就出现了上面的问题。
2.建议此时手动启动服务,观察如果出现缺少路径的提示,可以参照上文设定相关路径。
ORA-12500: TNS: 监听程序无法启动专用服务器进程
1.lsnrctl status
2.lsnrctl start
3.sqlplus /nolog
4.connect / as sysdba
5.startup nomount
6.alter database open
逐步分解查找问题。
有可能是listener.ora文件被破坏了,遇到过类似的问题,重新配置listener.ora就可以了。
ORA-04031:unable to allocate … byters of shared memory("shared pool","unknown object","sga heap","db_block_buffers")
问题:
DELL服务器装不上ORACLE8.1.5的问题,出现下面的错误提示是在建立数据库之前,系统先要检查内存时出现的,
ORA-04031:unable to allocate 85141440 byters of shared memory("shared pool","unknown object","sga heap","db_block_buffers"),是不是内存不够?但实际物理内存是2G?什么原因呢?
解答:
在安装时,把SGA区、JAVA池等东西的内存配小一些
ORA-01092 : Oracle instance terminated disconnection forced错误
Problem:
Your Oracle Server database on OpenVMS crashes. The following errors are reported: Background process DBWR unexpectedly terminated with error 1092
ORA-1092 Oracle instance terminated
ORA-313 open failed for members of log group 'n' of thread 'n'
ORA-600 [3228] reported from a PL/SQL script.
Explanation:
The most significant error reported here is the ORA-313 error. This error indicates a failure to open a file which indicates a problem with OpenVMS resources. When either CHANNELCNT and/or FILLM are too small, these errors can result.
Solution:
Increase the SYSGEN parameter CHANNELCNT. This should be done by an OpenVMS system manager and requires a reboot of your OpenVMS node. For more information on SYSGEN, please review the OpenVMS documentation.
If the CHANNELCNT parameter is already large enough to allow the expected number of files to be opened, check the FILLM quota. Review two areas when you check FILLM:
1) The Oracle background processes (PMON, DBWR, LGWR etc.)
2) The SERVER side (or SHADOW) process created when you use SVRMGRL to start the database. To get an idea of the quota available, use the command: $ SHOW PROCESS /QUOTA /ID=<pid> Where <pid> is the OpenVMS pid of the process to be reviewed. This command displays the remaining 'Open file quota' (FILLM) for the process, as well as other available quotas.
Example:
You have 226 data files, eight REDO log files and three control files for a total of 237 files. The SYSGEN setting for CHANNELCNT is at the default of 256. During normal operation, Oracle periodically needs to open additional files. These include the INIT parameter files, the ALERT log, various DCL scripts, trace files, etc. Under these conditions, a CHANNELCNT value of 256 is too small to accommodate the number of files that Oracle/OpenVMS needs open at the same time.
For most systems the default quotas should be adequate.
If not, please describe the infor u've encountered
ORA-00059错误及字符集修改
问题:在DBA studio中下的例程‘数据库'自动变为已启动,无法装载也无法打开,提示‘ORA-00059??LOG--FILES????'在这种情况下如果不卸载重装解决,能有其它的办法吗?
一般来说ORA-00059多出现maximum number of DB_FILES exceeded的错误,由于你机器上的字符集设置有些问题,所以 错误提示 变成了??,(字符集设置不对照成的) 虽然看的出于问题可能和Log file有关,但不确定.请修改Oracle的字符集
[字符集修改方法]
SQL> desc props$
列名 可空值否 类型
------------------------------- -------- ----
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(2000)
COMMENT$ VARCHAR2(2000)
SQL> col value$ format a40
SQL> select name,value$ from props$;
NAME VALUE$
------------------------------ -------------------------
DICT.BASE 2
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY$
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS.,
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_CALENDAR GREGORIAN
NLS_RDBMS_VERSION 7.3.4.0.0
GLOBAL_DB_NAME ORACLE.WORLD
EXPORT_VIEWS_VERSION 3
查询到14记录.
NLS_CHARACTERSET这个参数应该是ZHS16GBK,如不是,改为它。
ORA-12203:TNS:unable to connect destination错误
问题:
在Windows2000下安装8.0.5,选择none,没有建立实例,为什么在执行svrmgr30 时报告Ora-12203:tns:unable to connect destination!
解答:
因为没有创建实例,也就没有环境变量。可参考“手工创建数据库的全部脚本和说明”。
注意其中:
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"
Ora-12571:TNS:包写入程序失败
把虚拟内存设的大一些
Ora-12705错误
Cause: There are two possible causes: Either an attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value; or the NLS_LANG environment variable contains an invalid language, territory, or character set.
Action: Check the syntax of the ALTER SESSION command and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable. For more information about the syntax of the ALTER SESSION command, see Oracle8i SQL Reference.
ORA-03113:通信通道的文件结束
Cause:
An unexpected end-of-file was processed on the communication channel. The problem could not be handled by the SQL*Net, two task, software. This message could occur if the shadow two-task process associated with a SQL*Net connect has terminated abnormally, or if there is a physical failure of the interprocess communication vehicle, that is, the network or server machine went down.
Action:
If this message occurs during a connection attempt, check the setup files for the appropriate SQL*net driver and confirm SQL*Net software is correctly installed on the server. If the message occurs after a connection is well established, and the error is not due to a physical failure, check if a trace file was generated on the server at failure time. Existence of a trace file may suggest an Oracle internal error that requires the assistance of customer support.
Explanation:
There are numerous causes of this error. It is a 'catch all' type error which means 'I cannot communicate with the Oracle shadow process'. This usually occurs when the Oracle server process has died for some reason.
ORA-12515:TNS:监听进程无法找到该演示文稿的句柄
解决方案是检查目标服务器网络配置,并使其接受HTTP的协议。如果你是使用一般数据使用,建议使用新的数据库实例。
ORA-01031:insufficient privileges
Cause: An attempt was made to change the current username or password without the appropriate privilege. This error also occurs if attempting to install a database without the necessary operating system privileges. When Trusted Oracle is configure in DBMS MAC, this error may occur if the user was granted the necessary privilege at a higher label than the current login.
Action: Ask the database administrator to perform the operation or grant the required privileges. For Trusted Oracle users getting this error although granted the appropriate privilege at a higher label, ask the database administrator to regrant the privilege at the appropriate label.
ORA-01017:invalid username/password; logon denied
Cause: An invalid username or password was entered in an attempt to log on to Oracle. The username and password must be the same as was specified in a GRANT CONNECT statement. If the username and password are entered together, the format is: username/password.
Action: Enter a valid username and password combination in the correct format.
问题:ORACLE8.1.7.0.0版本,,不知是哪里的问题,用internal 和 system 都无法登陆,错误提示:ORA1031 、ORA1017
解答:还有没有其他DBA身份的用户,如果有,最好登陆进去,然后alter user system identified by YOURPASSWORD; 你的系统密码被人修改了
ORA-03121:没连接接口驱动程序
Cause: This message occurs usually because the Net8 driver is not loaded into memory or there is a mismatch of the version of the driver. A user program linked with an obsolete library may also cause this message. Only programs provided by Oracle Corporation should use this interface.
Action: If the message occurred during use of a program provided by Oracle Corporation, contact Oracle Support Services. If a user program caused the message, relink the program with current versions of the Oracle libraries.
ORA-12638:凭证检索失败
问题:
2000ad server SP2 具域网,在网络连接的情况下按装ORACLE8I,到创建数据库,初始化数据库时,提示“ORA-12638 凭证检索失败”,装了几次都是这样
解答:
凭证检索失败的错误一般都与网络用户集成有关,ORACLE中对于这个问题的管理是在SQLNET.ORA文件的SQLNET.AUTHENTICATION_SERVICES进行控制的,默认安装都是SQLNET.AUTHENTICATION_SERVICES= (NTS)表示安装ORACLE的用户是通过操作系统的集成认证控制的,所以,我们只要把这个参数值屏蔽掉就行了。
修改\Oracle\Ora81\network\ADMIN目录下SQLNET.ORA文件的SQLNET.AUTHENTICATION_SERVICES= (NTS)为# SQLNET.AUTHENTICATION_SERVICES= (NTS)
ORA-00604: error occurred at recursive SQL level 2
Cause: An error occurred while processing a recursive SQL statement (a statement applyingto internal dictionary tables).
Action: If the situation described in the next error on the stack can be corrected, do
so; otherwise contact Oracle Customer Support.
ORA-04030 out of process memory when trying to allocate string bytes (string,string)
Cause: Operating system process private memory has been exhausted.
Action: See the database administrator or operating system administrator to increase process memory quota. There may be a bug in the application that causes excessive allocations of process memory space.
ORA-04031:unable to allocate string bytes of shared memory("string","string","string","string")
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the DBMS_SHARED_POOL package topin large packages, reduce your use of shared memory, or increase the amount ofavailable shared memory by increasing the value of the initialization parametersSHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE. If the large pool is out of memory,increase the initialization parameter LARGE_POOL_SIZE.
ORA-01555:snapshot too old: rollback segment number 9 with name "USER_RS5" too small
问题:一个存储过程执行的数据大概有100万条,在执行到几十万条的时候,遇到了如上异常。
解答:原因有两个方面:
1、由于你的这个操作执行的时间太长,导致SNAP SHOT失效(太老了),导致你的操作失败;
2、你的RBS太小,无法容纳那么多的操作。
处理方法:
1、加大回滚段的大小(增加RBS表空间,修改回滚段的参数等)
2、你这种编程方法有问题,如果第一个方法不能解决问题,说明是因为执行时间过长,SNAPSHOT失效,需要你调整一下程序。是不是先把100万记录读到内存里(内存不够,可以采用文件作为缓冲),然后再做处理。也可以采用分段处理的方法,一次处理10万条。
ORA-01589:must use RESETLOGS or NORESETLOGS option for database open
问题:在startup 之后出现错误提示
解答:
Cause: Either incomplete or backup control file recovery has been performed. After these types of recovery you must specify either the RESETLOGS option or the NORESETLOGS option to open your database.
Action: Specify the appropriate option.
你的数据库以前做过Media Recovery,用OPEN DATABASE RESETLOGS或OPEN DATABASE NORESETLOGS打开数据库就可以了。
ORA-01017:invalid username/password; logon denied
Cause: An invalid username or password was entered in an attempt to log on to Oracle. The username and password must be the same as was specified in a GRANT CONNECT statement. If the username and password are entered together, the format is: username/password.
Action: Enter a valid username and password combination in the correct format.
缺省密码
8i:
scott/tiger
internal/change_on_install
system/manager
sys/oralce(密码也可能是manager或change_on_install)
9i:
scott/tiger
sys/change_on_install
OEM的用户名/密码:sysman/oem_temp
重设system用户的密码
可以通过以下方法登陆
sqlplus /nolog
conn / as sysdba
alter user system identifed by '123'
Oracle的密码文件
8i一般位于$ORACLE_HOME/PRODUCT/8.1.6/DBS/ORAPWD_[SID].ORA
如何激活用户
8i:在DBA Studio里面,有“用户”--然后找到用户名--->然后选中“未锁定”就可以了
Oracle的初始化文件
8i:安装时设定的ORACLEHOME的目录下会有:admin、oradata和ora81三个目录,其中在admin目录下的你安装的数据库目录下的Prfile下的init.ora就是。
9i:在原来的目录下看不到init文件了。不过你可以这样:
create pfile from spfile;
这样就可以看到init的文件了,因为9i里面的初始化文件有点变化。
Oracle 数据库自带数据的生成脚本
\ORACLE_HOME\rdbms\admin\SCOTT.SQL
日期乱码
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,然后就正常了。
Oracle 9i AS安装错误
解决:按照它的提示编辑host文件,加上127.0.0.1 localhost #localhost
spfile 和 pfile异同
spfile,服务器参数文件是在Oracle9i及更高版本中一个新特性。其使Oracle9i可以更改大多数过去在使用数据库联机和用户时不能动态更改的初始化参数。此外,服务器参数文件使Oracle9i能记住会话之间动态更改过的初始化参数的设置。
pfile,相当与Oracle8i及以前版本的Init.ora。
可以根据pfile建立spfile:如:create spfile from pfile =‘路径/init.ora'
数据库升级错误——不相关的字符集
数据库从Oracle8.0.5升级到8.1.5,备份数据恢复时出现错误。错误提示:不相关的字符集(805到820)
1、重建Oracle 8i数据库,建库时指定同一字符集,再移植; 查看原数据库字符集, select * from nls_database_parameters
2、设置原数据库Oracle 805 的环境变量NLS_LANG与ora 8i数据库一致,执行export时可以转换字符集。
3、exp 与 imp 最好都使用Oracle 816 带的,不要用Oracle 805 的exp 导出的dmp 文件,又用Oracle 816 的 imp 来导。
启动 iSQL*Plus
要启动 iSQL*Plus,请执行以下步骤:
连接到 Internet 或 Intranet,然后启动 Web 浏览器。在 Web 浏览器的“位置”字段或“地址”字段中,输入 Oracle9i HTTP Server URL,并接着输入 isqlplus。iSQL*Plus URL 如下所示:http://machine_name.domain:7777/isqlplus
如果您不知道 Oracle9i HTTP Server URL,请向系统管理员咨询。
按 Enter 键将转到该 URL。Web 浏览器中将显示 iSQL*Plus“登录”屏幕。
在“用户名”字段和“口令”字段中,输入 Oracle9i 用户名和口令。如果您不知道 Oracle9i 用户名和口令,请向数据库管理员咨询。
将“连接标识符”字段保留为空可以连接到默认数据库。输入 Oracle Net 数据库别名时,可以连接到默认数据库以外的其他数据库。如果已配置了限制的数据库访问,“连接标识符”字段就会变成可供选择的可用数据库的下拉列表。
单击“登录”,连接到相关数据库。Web 浏览器上将会显示 iSQL*Plus“工作屏幕”。
此时,您可以在“工作屏幕”的输入区域中输入并执行 SQL、PL/SQL 和 SQL*Plus 语句和命令。
Oracle 816中启动Enterprise Manager
系统环境:
1、操作系统:Windows 2000
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:\ORACLE
错误现象:
默认安装完Oracle 816 for NT后,想使用Oracle816 for NT的OEM工具来管理数据库,开始→程序→Oracle - OraHome81→Enterprise Manager→Console。这时系统出现以下画面一:
点击“确定”,出现画面二、三。
在“添加管理服务器”栏上输入本机IP地址,如:192.1.1.1,点击“确定”,出现画面四。
画面显示出的oradb就使本机名称,点击“确定”,出现画面五,进行“Oracle Enterprise Manager 登录”。
输入口令/密码:system/manager,点击“确定”,出现画面六,出现以下错误提示。
VTK-1000 : Unable to connect to the management server oradb. Please vertify that you have entered the correct host name nd the status of the Oracle Managerment Server.解决方法:
1、使用Enterprise Manager配置辅助工具
开始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant
a、使用Configuration Assistant工具来创建一个新的资料档案库,如图七。
单击“下一步”,出现画面八。
b、 先登录 用户名:system,密码:manager,服务:oradb,注:输入的用户必须具有DBA权限,单击“下一步”,出现画面九。(9i为sysman/oem_temp)
c、再创建拥有此资料档案库的用户,系统默认取机器名,这里我们设用户名为:test,密码:test,输入两遍口令,单击“下一步”,出现画面十。
d、因为输入的是一个新用户,系统要求指定用户表空间,本例使用系统推荐,
单击“下一步”,系统正在创建OEM_REPOSITORY表空间,创建完毕后出现画面十一。
e、系统显示“创建资料档案库概要”,单击“完成”,显示“配置辅助工具进度”,如图十二。
单击“显示详细资料”,可以看到系统正在创建各种对象的提示。
系统处理完成,单击“关闭”,如图十三。
2、 启动OracleOraHome81ManagementServer服务:开始→设置→控制面版→管理工具→服务,如图十四,找到Oracle相关服务的位置。
单击“启动”,如图十五,如果上一步没有创建资料档案库,则会启动失败。
把OracleOraHome81ManagementServer服务设置成自动启动方式。
3、 重新进行Oracle Enterprise Manager 登录:开始→程序→Oracle - OraHome81→Enterprise Manager→Console
Oracle Enterprise Manager 的默认管理员是 sysman/oem_temp,系统管理员应该马上更改口令。
如图十六,不要在管理员一栏直接写sysman/oem_temp,而是分别输入“用户名/密码”。
单击“确定”,出现图十七,安全警告,要求你立即更改sysman的口令。
本例输入两遍manager作为口令,输入完口令后,单击“更改”,系统正式调出“Oracle Enterprise Manager 控制台 SYSMAN@oradb”的画面。
备份和恢复数据库的时候启动OMS时总是提示VTD——0057连接资料档案库时出错Oracle sysman emSDK client ons client NoDomainException
1.run "emca" to create a "repository" for oem
2.agentctl start
oemctl start oms
$ORACLE_HOME/network/snmp/peer/start_peer -a
3.oemapp dbastudio <= initial account/password=sysman/oem_temp
数据库的创建脚本
系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:D:\ORACLE
建库步骤:
1、手工创建相关目录
D:\Oracle\admin\test
D:\Oracle\admin\test\adhoc
D:\Oracle\admin\test\bdump
D:\Oracle\admin\test\cdump
D:\Oracle\admin\test\create
D:\Oracle\admin\test\exp
D:\Oracle\admin\test\pfile
D:\Oracle\admin\test\udump
D:\Oracle\oradata\test
D:\Oracle\oradata\test\archive
2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:
3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件,
内容:IFILE='D:\Oracle\admin\test\pfile\inittest.ora'
4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora
命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5
5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工
set ORACLE_SID=test
D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"
6、生成各种数据库对象D:\>svrmgrl
--创建数据库
connect INTERNAL/Oracle
startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora"
CREATE DATABASE test
LOGFILE 'D:\Oracle\oradata\test\redo01.log' SIZE 2048K,'D:\Oracle\oradata\test\redo02.log' SIZE 2048K, 'D:\Oracle\oradata\test\redo03.log' SIZE 2048K
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXLOGHISTORY 1
DATAFILE 'D:\Oracle\oradata\test\system01.dbf' SIZE 58M REUSE AUTOEXTEND ON NEXT 640K
MAXDATAFILES 254
MAXINSTANCES 1
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET ZHS16GBK;
控制文件、日志文件在上面语句执行时生成
connect INTERNAL/Oracle
--修改系统表空间
ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;
--创建回滚表空间
CREATE TABLESPACE RBS DATAFILE 'D:\Oracle\oradata\test\rbs01.dbf' SIZE 256M REUSE
AUTOEXTEND ON NEXT 5120K
MINIMUM EXTENT 512K
DEFAULT STORAGE(INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);
--创建用户表空间
CREATE TABLESPACE USERS DATAFILE 'D:\Oracle\oradata\test\users01.dbf' SIZE 128M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--创建临时表空间
CREATE TABLESPACE TEMP DATAFILE 'D:\Oracle\oradata\test\temp01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 640K
MINIMUM EXTENT 64K
DEFAULT STORAGE(INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY;
--创建工具表空间
CREATE TABLESPACE TOOLS DATAFILE 'D:\Oracle\oradata\test\tools01.dbf' SIZE 64M REUSE
AUTOEXTEND ON NEXT 320K
MINIMUM EXTENT 32K
DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--创建索引表空间
CREATE TABLESPACE INDX DATAFILE 'D:\Oracle\oradata\test\indx01.dbf' SIZE 32M REUSE
AUTOEXTEND ON NEXT 1280K
MINIMUM EXTENT 128K
DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);
--创建回滚段
CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K );
--使回滚段在线
ALTER ROLLBACK SEGMENT "RBS0" ONLINE;
ALTER ROLLBACK SEGMENT "RBS1" ONLINE;
ALTER ROLLBACK SEGMENT "RBS2" ONLINE;
ALTER ROLLBACK SEGMENT "RBS3" ONLINE;
ALTER ROLLBACK SEGMENT "RBS4" ONLINE;
ALTER ROLLBACK SEGMENT "RBS5" ONLINE;
ALTER ROLLBACK SEGMENT "RBS6" ONLINE;
ALTER ROLLBACK SEGMENT "RBS7" ONLINE;
ALTER ROLLBACK SEGMENT "RBS8" ONLINE;
ALTER ROLLBACK SEGMENT "RBS9" ONLINE;
ALTER ROLLBACK SEGMENT "RBS10" ONLINE;
ALTER ROLLBACK SEGMENT "RBS11" ONLINE;
ALTER ROLLBACK SEGMENT "RBS12" ONLINE;
ALTER ROLLBACK SEGMENT "RBS13" ONLINE;
ALTER ROLLBACK SEGMENT "RBS14" ONLINE;
ALTER ROLLBACK SEGMENT "RBS15" ONLINE;
ALTER ROLLBACK SEGMENT "RBS16" ONLINE;
ALTER ROLLBACK SEGMENT "RBS17" ONLINE;
ALTER ROLLBACK SEGMENT "RBS18" ONLINE;
ALTER ROLLBACK SEGMENT "RBS19" ONLINE;
ALTER ROLLBACK SEGMENT "RBS20" ONLINE;
ALTER ROLLBACK SEGMENT "RBS21" ONLINE;
ALTER ROLLBACK SEGMENT "RBS22" ONLINE;
ALTER ROLLBACK SEGMENT "RBS23" ONLINE;
ALTER ROLLBACK SEGMENT "RBS24" ONLINE;
--修改sys用户的临时表空间为TEMP
alter user sys temporary tablespace TEMP;
--创建数据字典表
@D:\Oracle\Ora81\Rdbms\admin\catalog.sql;
@D:\Oracle\Ora81\Rdbms\admin\catexp7.sql
@D:\Oracle\Ora81\Rdbms\admin\catproc.sql
@D:\Oracle\Ora81\Rdbms\admin\caths.sql
connect system/manager
@D:\Oracle\Ora81\sqlplus\admin\pupbld.sql
connect internal/Oracle
@D:\Oracle\Ora81\Rdbms\admin\catrep.sql
exit
--生成SQL*Plus帮助系统
sqlplus SYSTEM/manager
@D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql
exit
--修改system用户默认表空间和临时表空间
svrmgrl
connect internal/Oracle
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;
exit
7、将test实例启动服务设置成自动启动方式
D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto
启动ARCHIVELOG模式
C:\>svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
版权所有 (c) 1997,1999,Oracle Corporation。保留所有权利。
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> connect internal
连接成功
SVRMGR>shutdown
已关闭数据库。
已卸下数据库。
已关闭 ORACLE 实例。
SVRMGR> startup mount
已启动 ORACLE 实例。
系统全局区域合计有 57124108个字节
Fixed Size 70924个字节
Variable Size 40198144个字节
Database Buffers 16777216个字节
Redo Buffers 77824个字节
已装入数据库。
SVRMGR> alter database archivelog;
语句已处理。
SVRMGR> archive log start
语句已处理。
SVRMGR> alter database open;
语句已处理。
SVRMGR> alter system switch logfile; --强制系统进行日志切换,可马上观察到归档日志的产生
语句已处理。
SVRMGR> exit
服务器管理程序结束。
修改数据库参数文件c:\Oracle\admin\oradb\pfile\init.ora,
取消以下语句的#注释
log_archive_start = true
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
关闭数据库,重新启动
查看C:\Oracle\oradata\oradb\archive目录下,可以看到类似ORADBT001S01201.ARC的文件,说明归档成功
PLUS:Oracle9i中需要执行的部分
SQL> alter system set log_archive_dest_1 ="location=E:\Oracle\oradata\test\archive" scope = spfile;
SQL> alter system set log_archive_start = true scope = spfile;
补充一些概念
解释init.ora参数文件中关于归档重做日志参数项的含义
归档模式是自动还是手工,true为自动,false为手工
log_archive_start = true
归档日志文件所保存的路径
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
归档日志文件的命名方法
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
归档命令:
启动自动归档模式,系统重起后,将按init.ora中的参数log_archive_start的值设置归档方式
SVRMGR> archive log start
启动手工归档模式
SVRMGR> archive log stop
查看归档信息:重做日志是否归档方式、是自动归档还是手工归档、归档路径、最旧的联机日志循序号
SVRMGR> archive log list
归档一个已满,但没有归档的联机重做日志
SVRMGR> archive log next
归档所有已满,但没有归档的联机重做日志
SVRMGR> archive log all
注意:一个事务即使不被提交,也会被写入到重做日志中。
SYS下的程序包和程序包体仅STANDARD包体可以编译为valid
问题:我的sys下的程序包和程序包体都是invalid.但是STANDARD包体可以编译为valid.其他程序包都是invalid. 编译时提示:
VBO-4553:PL/SQL 程序包编译是不。有关详细信息,请按该属性页上的显示错误。ORA-06554:????? PL/SQL ???? DBMS_STANDARD
SQLPLUS连接时提示:ERROR:ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
Error accessing package DBMS_APPLICATION_INFO
ERROR:ORA-06554: package DBMS_STANDARD must be created before using PL/SQL
解答:
用$ORACLE_HOME/RDBMS/ADMIN下面的相关文件重新创建一下这些包。
SYSDBA登陆运行
$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL
$ORACLE_HOME/RDBMS/ADMIN/CATPROC.SQL
如何实现:插入数据到数据库A中的表TPROCESS,数据库自动更新到数据库B中的表TLOG?
1. at db1
chk tnsnames.ora
CONNECT_STRING_DB2 = ...
tnsping CONNECT_STING_DB2
sql> create public database link DB2 using 'CONNECT_STING_DB2';
2. at db2
chk tnsnames.ora
CONNECT_STRING_DB1 = ...
tnsping CONNECT_STING_DB1
sql> create public database link DB1 using 'CONNECT_STING_DB1';
3. at db1
sql> create trigger ... after insert ...
insert into USER.TABLE@DB2 ... <<== using database link !!!
:NEW.column1, :NEW.column2 ...
从一个字符集不是中文字符集的数据库中EXP数据库,然后导入到一个中文字符集的数据库中
EXP/IMP是一种数据库到出导入工具,但是在EXP/IMP对数据库的字符集要求比较严格,如果EXP出的数据库的字符集和导入数据库的字符集不兼容。导入无法完成。此时需要采取一种特殊的方法进行操作。由于该操作是有一定危害性的操作,在操作过程中,数据库突然出现故障的情况下,会导致数据库可能无法正常启动。因此操作前一定要先备份数据库。
1、在原数据库执行sqlplus,连接sys用户,修改字符集参数,然后退出。
SQL> connect sys/******;
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'ZHS16GBK' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;
2、执行svrmgrl,关闭并重新开启Oracle数据库
SVRMGR> connect internal/******; (口令一般为"Oracle")
SVRMGR> shutdown immediate;
SVRMGR> startup mount;
SVRMGR> alter system enable restricted session;
SVRMGR> alter system set job_queue_process=0;
SVRMGR> alter database open;
SVRMGR> alter database character set ZHS16GBK;
SVRMGR> exit;
3、修改环境变量NLS_LANG
由 AMERICAN_AMERICA.WE8ISO8859P1
转换为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
如果是WINDOWS,用Regedit修改ORACLE下的键值。如果是UNIX系统,修改环境变量:NLS_LANG=...;export NLS_LANG
如果是OpenVMS:修改Login.com文件中的设置,然后重新执行一次Login.com
4、执行exp导出数据
5、将环境变量NLS_LANG修改为原来的值
6、执行sqlplus,连接sys用户,恢复字符集参数,然后退出。
connect sys/******; (口令一般为"manager")
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_CHARACTERSET';
update props$ set value$ = 'WE8ISO8859P1' where name = 'NLS_NCHAR_CHARACTERSET';
commit;
SQL> quit;
7、重复步骤2,关闭并重新开启Oracle数据库
8、将导出的dmp文件导入目标数据库(字符集为中文)
成功创建DBLink,但不能连接
问题:
ORACLE 8.1.6 for NT,现在需要连另一个ORACLE 8 FOR UNIX,当然是要建立DBLINK。但是建立本地网络服务名时可以连接上了,所建DBLINK就是连接不上,为什么?
用select <xxx> from <表名>@<db_link>
错误是:ORA-02085: 数据库链接ORA8I.US.ORACLE.COM与ORA8I相连结(ora8i 是DBLINK的名字)
解答:
如果你的源数据库的GLOBAL_NAME=TRUE,那么你的DBLINK的名字必须和远端数据库的全局名一致,否则会发生2085 错误。
你可设置源数据库的GLOBAL_NAME=FALSE,也可以在创建DBLINK的时候把DBLINK的名称设置为远程数据库的全局名。
How to Configure the 9i Agent with Multiple Network Cards
fact: Oracle Intelligent Agent 9.0.1
fix:
Configuring the Version 9.0.1 Agent for Use with Multiple Network Cards (NIC)(From the Oracle IA User's Guide Release 9.0.1 Part Number A88771-02):
As with version 8.1.7 of the Intelligent Agent, 9i Intelligent Agent users have three options to configure the Agent on a machine with multiple network cards.By default the Agent will bind to the primary NIC on its machine ('le0' on UNIX platforms and 'network0' on Windows NT platforms). The other two options are:
a. Ability to bind to a NIC specified by the user.