搜档网
当前位置:搜档网 › Oracle常见问题及其解决方法(doc 10页)

Oracle常见问题及其解决方法(doc 10页)

Oracle常见问题及其解决方法(doc 10页)
Oracle常见问题及其解决方法(doc 10页)

Oracle常见问题及其解决方法(doc 10页)

iSQL*Plus URL:http://10.10.43.137:5560/isqlplus

Enteprise Manager 10g Database Control URL:

http://information:5500/em

OracleDBConsoleorcl不能启动,报错误码2解决策略

解决策略一:

修改你的主机参数文件

修改一下:

C:\WINDOWS\system32\drivers\etc下的host文件.

如果没有的话就自己加一个IP和你的计算机名对应,如果已有了就把你的IP地址和你的计算机名对应起来.

如:

# copyright (c) 1993-1999 microsoft corp.

#

# this is a sample hosts file used by microsoft tcp/ip for windows.

#

# this file contains the mappings of ip addresses to host names. each

# entry should be kept on an individual line. the ip address should

# be placed in the first column followed by the corresponding host name.

# the ip address and the host name should be separated by at least one

# space.

#

# additionally, comments (such as these) may be inserted on individual

# lines or following the machine name denoted by a '#' symbol.

#

# for example:

#

# 102.54.94.97 https://www.sodocs.net/doc/1a16267141.html, # source server

# 38.25.63.10 https://www.sodocs.net/doc/1a16267141.html, # x client host

127.0.0.1 localhost

10.10.43.137 information

解决策略二:

启动电脑,到登陆界面,电脑报有个服务启动失败,电脑没有新装软件,周六还没有问题,怎么突然报这个错误?于是到事件查看器中看看什么问题,显示是OracleDBConsoleorcl启动失败,到服务里一看,确实没有启动。手动启动一下,报错误码2

我装的是10g,于是到ORACLEproduct10.2.0db_1test_orclsysmanlog目录看一下log里写了什么,打开OracleDBConsoleorclsrvc.log.

log最后记录的是:

日志让看emdbconsole.nohup文件,目录里没有这个文件呀。

手动执行一下emctl.bat,于是启动控制台,执行emctl.bat istart dbconsole,报错,ORACLE_SID 没有定义,打开emctl.bat看看,这里是定义环境变量的地方,其中已经设置了这些:if not defined REMOTE_EMDROOT (set ORACLE_HOME=Ec:oracleproduct10.2.0db_1)

if not defined REMOTE_EMDROOT (set EMDROOT=%ORACLE_HOME%)

if defined REMOTE_EMDROOT (set ORACLE_HOME=%REMOTE_EMDROOT%)

if defined REMOTE_EMDROOT (set EMDROOT=%ORACLE_HOME%)

if defined REMOTE_EMDROOT (set LOCAL_EMDROOT=c:oracleproduct10.2.0db_1)

……

后边还有一条设置:

if not defined DBCONSOLE_SERVICE_NAME (set DBCONSOLE_SERVICE_NAME=OracleDBConsole%ORACLE_SID%),用到了ORACLE_SID,但没有看到前面设置,只能手动设置ORACLE_SID试试,于是加了一条设置:

if defined REMOTE_EMDROOT (set ORACLE_SID=orcl) orcl是我的数据库实例名

到服务中启动OracleDBConsoleorcl,ok,没有报错;

重新启动计算机,也没有报错,OracleDBConsoleorcl服务也启动了。

系统出错的解决

今天机器死机了,然后OracleDBConsoleORCL服务就起不来了,在一阵瞎搞后,还终于被我找到了解决办法,方法如下:

运行Database Configuration Assistant程序,选择“配置数据库选项”重新配置Database Control 配置工具,配置完后端口号会变(我原来是1158,后来被改为5500),可以在.\oracle\product\10.2.0\db_1 \cfgtoollogs\emca\orcl\文件夹下,最后生成的一个日志文件下找到新的Database Control 的URL;运行即可。

原来经常改IP会导致OracleDBConsoleORCL无法启动,一下是正规的解决方案:

修改你的主机参数文件

修改一下:

C:\WINDOWS\system32\drivers\etc下的host文件.

如果没有的话就自己加一个IP和你的计算机名对应,如果已有了就把你的IP地址和你的计算机名对应起来.

如:

# copyright (c) 1993-1999 microsoft corp.

#

# this is a sample hosts file used by microsoft tcp/ip for windows.

#

# this file contains the mappings of ip addresses to host names. each

# entry should be kept on an individual line. the ip address should

# be placed in the first column followed by the corresponding host name.

# the ip address and the host name should be separated by at least one

# space.

#

# additionally, comments (such as these) may be inserted on individual

# lines or following the machine name denoted by a '#' symbol.

系统找不到指定的路径。

////以上是启动时的错误,我的数据库是oracle10.2.0.1.0 的版本

解决方法:

在命令行输入

$ emca –config dbcontrol db

输入以下信息:

SID:XXXX

Listener port number: 1521

Sys 口令:******

……

好了,再次emctl start dbconsole EM就可以正常运行了!

Oracle 10gR2–EMCA常用命令

在10g 中,我们可能会经常遇到OEM不能正常使用的问题,但导致问题的原因不尽相同,最后绝大多数问题可以通过emca 这个命令来解决,详细的说明可以查看连机帮助,下面给出一些常用的命令,及实例步骤.

创建一个EM资料库

emca -repos create

重建一个EM资料库

emca -repos recreate

删除一个EM资料库

emca -repos drop

配置数据库的 Database Control

emca -config dbcontrol db

删除数据库的 Database Control配置

emca -deconfig dbcontrol db

重新配置db control的端口,默认端口在1158

emca -reconfig ports

emca -reconfig ports -dbcontrol_http_port 1160

emca -reconfig ports -agent_port 3940

先设置ORACLE_SID环境变量后,启动EM console服务

emctl start dbconsole

先设置ORACLE_SID环境变量后,停止EM console服务

emctl stop dbconsole

先设置ORACLE_SID环境变量后,查看EM console服务的状态

emctl status dbconsole

配置dbconsole的步骤

emca -repos create

emca -config dbcontrol db

emctl start dbconsole

重新配置dbconsole的步骤

emca -repos drop

emca -repos create

emca -config dbcontrol db

emctl start dbconsole

Oracle建立数据的方法

方法一:打开命令提示符,进入DOS后输入dgmgrl

方法二:SQL*Plus命令行方式

方法三:数据库配置助手(DBCA,database configuation assistant)图形方式

方法四:网络配置助手(ONCA,Oracle net configuration Assistant)与网络管理

器(ONM,Oracle Net Manager)图形方式

方法五:企业管理器(OEM)图形方式

启动和关闭数据库

数据库的启动与关闭与例程(instance)的启动和关闭是有区别的,它们并不是一回事。严格地讲,后者是前者的一个步骤,而不是全部。但由于它们是紧密相连的,所以在实际中往往将它们等同起来。

在启动数据库之前应该启动监听程序,否则就不能利用命令行方式来管理数据库,包括启动和关闭数据库。虽然数据库正常运行,但如果没有启动监听程序,客户端就不能连接到数据库,在服务器端就不能使用OEM和iSQL*Plus工具。

启动和关闭监听程序可以使用命令行方式,也可以在windows服务中启动和关闭,结果一样。

例如可以在命令提示符下,输入 lsnrctl start 来启动用lsnrctl stop来关闭。也可以在计算机管理服务中对OracleOraDb10g_home1TNSListener进行关闭和启动操作。

在命令提示符下输入sqlplus /noolog

D:\oracle\product\10.1.0\db_1\NETWORK\ADMIN用于查找不同数据库的ERROR - ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务的问题

解决方法(1)

# listener.ora Network Configuration File:

D:\oracle\product\10.1.0\db_1\network\admin\listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = D:\oracle\product\10.1.0\db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME =wangweijian)

(ORACLE_HOME = D:\oracle\product\10.1.0\db_1) (SID_NAME =wangweijianID)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = information)(PORT = 1521)) )

)

)

(2)

# tnsnames.ora Network Configuration

File:D:\oracle\product\10.1.0\db_1\NETWORK\ADMIN\tnsnames.ora # Generated by Oracle configuration tools.

WANGWEIJIAN= //看看这个地方是否正确

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = information)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME =WANGWEIJIAN) //将小写改成了大写。

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

错误:IO异常:The Netword Adapter could not establish the connection

产生的原因:监听程序进程没有启动或输入了错误的网络服务名产生的错误提示。ERROR - ORA-12541: TNS: 没有监听程序

产生的原因:例程未打开

在使用Oracle sql*plus时,出现的错误提示:SP2-0103: SQL 缓冲区中无可运行的程序,在输入sql语句时,如果出现这个错误提示则只需输入如下命令即可:set serveroutput on

为用户解锁的sql语句:alter user scott account unlock;

用scott用户登录的时候出现的错误:ORA-01017: invalid username/password; logon denied。此时无法登录。这主要是因为scott的密码错误的原因。可能默认的scott密码不正确的原因。用下面的两条语句即可解决。

alter user scott account unlock;

alter user scott identified by wangweijian;

创建用户create user wangweijian identified by wwj123

删除用户出现的问题:(ERROR:ORA-01940: cannot drop a user that is currently connected)当前用户的系统进程还存在,所以无法删除,这时应该找到进程并kill掉。

1、查询此用户的会话进程,

SQL〉SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='wangweijian';

SID SERIAL#

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

24 25341

86 18117

2、结束此用户的所有会话

SQL>ALTER SYSTEM KILL SESSION '24,25341';

System altered.

SQL>ALTER SYSTEM KILL SESSION '86,18117';

System altered.

3、删除用户

SQL〉DROP USER USER1 CASCADE;

数据库的备份与恢复

1 数据库的脱机备份与恢复

备份文件的位置与清单:

*参数文件的位置D:\oracle\product\10.1.0\db_1\database中的三个ora文件

*查询数据字典视图V$control可以确认控制文件的位置与清单

Select status,name from V$controlfile;

STATUS NAME

D:\ORACLE\PRODUCT\10.1.0\OR

ADATA\AUST\CONTROL01.CTL

D:\ORACLE\PRODUCT\10.1.0\OR

ADATA\AUST\CONTROL02.CTL

D:\ORACLE\PRODUCT\10.1.0\OR

ADATA\AUST\CONTROL03.CTL

*查询数据字典视图dba_data_files可以确认数据文件的位置与清单。

Select status,file_name from dba_data_files;

STATUS FILE_NAME

AVAILABLE D:\ORACLE\PRODUCT\10.1.0\OR ADATA\AUST\USERS01.DBF

AVAILABLE D:\ORACLE\PRODUCT\10.1.0\OR ADATA\AUST\SYSAUX01.DBF

AVAILABLE D:\ORACLE\PRODUCT\10.1.0\OR ADATA\AUST\UNDOTBS01.DBF

AVAILABLE D:\ORACLE\PRODUCT\10.1.0\OR ADATA\AUST\SYSTEM01.DBF

*查询数据字典视图V$logfile可以确认联机重做日志文件的位置与清单

Select group#,status,member from v$logfile;

GRO UP# STAT

US

MEMBER

3 D:\ORACLE\PRODUCT\10.1.0\ORADA TA\AUST\REDO03.LOG

2 D:\ORACLE\PRODUCT\10.1.0\ORADA TA\AUST\REDO02.LOG

1 D:\ORACLE\PRODUCT\10.1.0\ORADA TA\AUST\REDO01.LOG

脱机备份的步骤:

1)打开命令提示符,在命令提示符下输入

sqlplus /NOLOG命令后按回车键,以不连接数据库的方式启动SQL*PLUS

2)以具有sysDBA或SYSOPER权限的数据库用户

(如system或sys)、sysdba的连接身份连接到oracle

3)以immediate方式关闭数据库,以便进行脱机

备份。出现以下字样:

SQL>shutdown immediate

数据库已经关闭

已经卸载数据库

Oracle例程已经关闭

4)使用操作系统命令或工具,按照备份文件清

单备份所需要备份的文件,不得漏掉一个。

5)备份完成以后,以open方式启动数据库,以便用户可以继续使用数据库。

使用数据泵进行逻辑备份与恢复

Oracle10g中引入了最新的数据泵(data pump)技术,即expdp和imppd。在oracle以前的版本中,通常使用exp和imp实用程序进行导出导入数据。现在,除了可以继续使用exp和imp之外,还可以使用expdp和imppd来进行导入导出数据。由于expdp和imppd的速度优于exp和imp。所以oracle建议使用expdp和imppd 进行导出导入数据。

注意:expdp和imppd都是服务器端实用程序,只能在oracle服务器端使用。而exp和imp是客户端实用程序,既可以在客户端使用,也可以在服务器端使用。

导出数据是指将数据库中的数据导出到一个操作系统文件(即转储文件)中,导入数据是指将转储文件中的数据导入到数据库中。

数据泵的作用a 实现逻辑备份与恢复b可以在数据库方案之间传输数据c可以在数据库

之间传输数据d数据库应用软件的版本升级e消除磁盘碎片。

在使用expdp和imppd实用程序时,其转储文件只能存放在DIRECTORY对象指定的OS目录中,而不能直接指定OS目录。因此,使用时必须首先创建DIRECTORY对象,并且运行expdp和imppd实用程序的数据库用户授予使用DIRECTORY对象的权限。具体代码如下:

SQL>connect sys/wangweijian as sysdba SQL>create directory dump_dir ad

'e:\dump';

SQL>grant read,write on directory dump_dir to system,scott;

使用expdp导出数据

一估计转储文件的大小:导出之前估计一下转储文件的大小,以免发生空间不足的现象。例子:C:\>expdp system/password fully=y estimate_only=y estimate=statistics nologfile=y

二导出表是指将一个或多个表的结构及其数据导出到转储文件中。导出表时每次只能导

出一个方案中的表。

C:\>expdp scott/wangweijian

directory=dump_dir dumpfile=scotttab.Dmp logfile=scottlog

三导出方案导出方案是指将一个或多个

方案的所有对象结构及数据导出到转储文件中。

C:\>expdp scott/wangweijian

directory=dump_dir dumpfile=mysuer.Dmp logfile=myuser.Log schemas=myuser

job_name=exp_myuser_schema

四:导出数据库,将数据库中的所有对象及数据导出到转储文件中。

热备份之前要做的修改:(只有归档才能热备份)

a.查看是否为归档:archive log list;

b.修改一下:alter system set

log_archive_start=true scope=spfile

c.关掉数据库:shutdown immediate(关掉数据

文件)

d.调用数据库的控制文件 start mount

e.修改:Alter database archivelog

f.注意这一步:archive log start;

g.启动数据库:alter database open

h.备份工作开始

这里还需要注意,如果将归档模式改为非归档模式,这时候应该改alter database noarchivelog; 其他步骤同上。

五在修改文档为归档模式时,shutdown immediate(关掉数据文件),然后再startup mount。可是出现的错误提示SP2-0310:无法打开文件"mount.sql"。这时,应该先startup,然后再shutdown abort,然后再 startup mount。六,在命令提示符下命令结束用‘;’,往往不被认可。如mkdir wangweijian; cd wangwejian;如果用了分号就会出错的。

七在命令提示符下,建立sqlplus的连接。通过@E:\chuntian\bak.Sql

这样可以执行多条系统性的语句。这样也可以重复利用。如bak.Sql文件如下。

connect wangweijian/wangweijian as sysdba shutdown immediate

host copy

D:\oracle\product\10.1.0\oradata\aust\*.* e:\hotbackup\

host copy

D:\oracle\product\10.1.0\db_1\dbs\initdw. ora e:\hotbackup\dbs

host copy

D:\oracle\product\10.1.0\db_1\database\PW DaustID.ora e:\hotbackup\database

startup

相关主题