请教:ORA-12638:身份证明检索失败怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教:ORA-12638:身份证明检索失败怎么办?相关的知识,希望对你有一定的参考价值。

解决步骤如下:

第一步:找到“\\oracle\\product\\10.2.0\\db_1\\NETWORK\\ADMIN”目录下的“sqlnet.ora”文件,打开,将SQLNET.AUTHENTICATION _SERVICES=(NTS) 改为 SQLNET.AUTHENTICATION _SERVICES=(NONE),保存该文件即可。或者,讲该语句注释掉,我没有尝试注释方法,但网络中很多人都提到了,有兴趣的人可以试一下,应该也是可以的。或者,在 oracle Net Manager 中,本地 ——> 概要文件 ——> oracle高级安全性(页面右上方下拉框中选择)——> 验证:将NTS从“所选方法”中删除。

第二步:启动 Net configuration assistant ——> 选本地网络服务名配置 ——> 删除...(删除原来的本地网络服务名);

第三步:添加新的本地网络服务名;

第四步:重新启动oracle服务。

NTS是winNT默认的,每次安装oracle的时候会自动写入,我想应该是软件设计的默认设置吧。暂时还没有找到什么方法能在安装的时候规避掉这个问题,只能每次手动修改了。

参考技术A

1. ORA 数据库启动与关闭

1.1 打开和关闭数据库 (手工)

1.1.1 sqlplus 连接

#su - oracle

#sqlplus /nolog

1.1.2 打开数据库

sql> connect sys/oracle as sysdba;

sql> startup [nomount|mount]

等待十几秒左右,当看到

oracle instances started,

database mounted,

database opened 的时候,oracle 数据库打开成功

备注:打开数据库 startup 可带三个参数,分别是

SQL > startup nomount 仅启动 instances

SQL > startup mount 启动 instances,连上(mount)数据库

SQL > startup normal 启动 instances,连上(mount)数据库(推荐)

打开(open)数据库

startup 缺省参数是 normal

1.1.3 启动 oracle listener

#su - oracle

#lsnrctl start

如果出错检查环境变量是否设好,及 lsnrctl 文件的内容和执行属性。

1.1.4 关闭 oracle listener

#su - oracle

#lsnrctl stop

1.1.5 关闭数据库

sql> connect sys/oracle as sysdba;

sql> shutdown 关闭数据库(推荐)

等待几秒左右,当看到

database closed

database dismounted

oracle instances shut down 的时候,oracle 数据库关闭成功

备注:关闭数据库 shutdown可带三个参数,分别是

shutdown 缺省参数是 normal

2. 数据库备份

2.1 冷备份

关闭数据库时作的备份称为冷备份。

关闭数据库,将所有和本实例有关的文件,包括datafile,controlfile,redolog,archived redolog,initora.ora 等全部备份。恢复时只要将这些文件放回从前的目录,startup数据库即可。

数据库处于归档非归档状态均可。

2.2 用 exp、imp 命令做逻辑备份

EXP:

有三种主要的方式(完全、用户、表)

1、完全:

exp system/manager buffer=64000 file=/backup/full.dmp full=y

如果要执行完全导出,必须具有角色 EXP_FULL_DATABASE 。

2、用户模式:

exp system/manager buffer=64000 file=/backup/bill.dmp owner=bill

这样用户 bill 的所有对象被输出到文件中。

3、表模式:

exp system/manager buffer=64000 file=/backup/area.dmp owner=bill tables=area

这样用户 bill 的表 area 就被导出到文件中。

需要注意的参数是 Inctype,这个参数可以取一下三个值:

Complete(全备份):把数据库中所有数据对象导出到 dump 文件中,只有具有 Exp_full_database 的用户有使用这个参数的权限。

Incremental(增量备份):把数据库中所有上次备份后修改的表备份出来。

Cumulative(累计备份):把数据库中所有全备份或者累计备份以后修改的表备份出来。

IMP:

具有三种模式(完全、用户、表)

1、完全:

imp system/manager buffer=64000 file=/backup/full.dmp full=y

如果要执行完全导入,必须具有角色 IMP_FULL_DATABASE 。

2、用户模式:

imp system/manager buffer=64000 file=/backup/area.dmp fromuser=bill

touser=billbak

文件中用户 bill 的所有对象被导入到用户billbakK 中。必须指定 fromuser、touser 参数。

3、表模式:

imp system/manager buffer=64000 file=/backup/area.dmp fromuser=bill

touser=billbak tables=area

文件中用户 bill 的表 area 就被导入到用户 billbak 中。

2.3 用 tar 命令做物理备份

1、#su - oracle

2、% tar cvf /dev/rmt0 .

把 oracle 路径下所有文件备份到磁带机上

3、% tar xvf /dev/rmt0

把备份磁带上所有文件恢复进 oracle 当前路径

4、% tar tvf /dev/rmt/0

查看磁带上有些什么文件

2.4 备份控制文件

控制文件是 Oracle 数据库中非常重要的文件。它记录着 oracle 数据库的物理结构信息,比如数据文件,日值文件的数量和位置等。在数据库启动过程中,需要读取控制文件。如果控制文件损坏或丢失,数据库就无法启动。因此,做好控制文件的备份十分重要。一般的数据库配置都会有多个控制文件。这些控制文件是完全相同的,分别存放在不同的位置(最好在不同的磁盘上),他们之间互为备份。数据库启动过程中,必须保证所有控制文件都是一致的,否则数据库不能启动。在 oracle 数据库的参数文件(initSid.ora)中指定控制文件的位置。如果部分控制文件损坏,可以在参数文件中去掉相应的控制文件,即可启动数据库。

每次数据库物理结构发生改变时,必须及时备份控制文件。

$sqlplus

SQL>connect internal

SQL>alter database backup controlfile to /…/test.ctl ;

也可以把控制文件备份成脚本,在必要的时候重建控制文件

SQL>alter database backup controlfile to trace;

2.5 联机全备份+日志备份

2.5.1 设置

ORACLE 数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归档方式(NOARCHIVELOG),恢复数据库到最近的回收点。这两种方式将对备份方法产生较大的影响。

1.改变不归档方式为为归档方式

2.关闭数据库,备份已有的数据

3.改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。

4.启动 Instance ,Mount 数据库但不打开数据库,来改变归档方式

#sqlplus

sql>connect internal

sql>startup mount

sql>alter database archivelog;

5.使能自动存档

在初始化文件 init*.ora(一般放 ORACLE 根目录的下层目录 dbs 下)加参数:

log_archive_start=true

6.指定存档的重做登录文件名和存放的位置

同样是在初始化文件 init*.ora 中加入下面的参数:

log_archive_format=%S.arc

log_archive_dest=/arch12/arch (arch12 是日志文件存放的目录)

7.关闭数据库,重新启动数据库,归档方式转换完成。

8.可用 archive log list 查看状态,去除归档日志功能的命令为 alter database

noarchivelog。

2.5.2 步骤

联机全备份:

数据库处于 open 状态,依次对各个表空间备份

sqlplus "/ as sysdba"

SQL>alter tablespace system begin backup;

复制此 tablespace 各个 datafile

SQL>alter tablespace system end backup;

注意:begin backup 是对 tablespace 冻结写入,end backup 是解除冻结,因此复制 datafile 的过程不宜过长

备份 controlfile

SQL>alter database backup controlfile to ……. ;

日志备份:

sqlplus "/ as sysdba"

SQL>alter system archive log stop;

移去日志目录下的所有 archived redolog

SQL>alter system archive log start;

2.5.3 恢复

数据库处于 shutdown 状态

2.5.3.1 磁盘全部损坏,仅保存上次联机全备份和每天日志备份

这是最坏情况

解决硬件故障,配置系统软件及环境

oracle 用户,将全备份和日志备份转移至相应目录,根据 initSid.ora中 controlfile 的配置,将备份控制文件复制到响应目录下

sqlplus "/ as sysdba"

SQL>startup mount

SQL>recover database until cancel using backup controlfile;

逐个确认待恢复的 archived redolog,待最后一个完成后,键入 cancel,使恢复结束

SQL>alter database open resetlogs;

注意:由于日志已经重置,所以应尽快做一次联机全备份

2.5.3.2 丢失某数据文件

只要将此文件从上次联机全备份中复制至其目录,并将自上次联机全备份以来所有日志备份移至归档目录

sqlplus "/ as sysdba"

SQL>startup mount

SQL>alter database recover datafile path/file ;或者简单些 recover database;

SQL>alter database open;

2.5.3.3 文件损坏或丢失,又无备份,

这种情况只能将此文件脱机,将数据 exp 出来,重建表空间,再 imp 进去

sqlplus "/ as sysdba"

SQL>connect internal

SQL>startup mount

SQL>alter database datafile path/file offline;

SQL>alter database open;

2.5.4 注意要点

无论有多少把握,恢复前先做冷备份,此为第一原则。不这样做,便是无路可退,一旦失误,后果十分严重。

1.rollback 段损坏

这是非常严重的问题,可在 initora.ora 中写入_corrupted_rollback_segments=(rxx),启动时避开损坏的 rollback段,这只是权宜之计。如数据库处于 archivelog,应从上一次全备份起利用备份的日志进行恢复;如数据库处于 noarchivelog,应尽快将全部数据 export 出来,重建数据库,再 import 进去。所有操作之前,应做冷备份。

2.数据库异常中止处理

通过手工 shutdown abort 操作中止数据库,不会产生大的问题,通常直接 startup无需使用介质恢复命令

如果由于机器崩溃引起的中止,则情况严重得多,有可能要使用到上面提到的恢复方法,不过这种现象并不多见。一般需要显式使用介质恢复命令,如下:

sqlplus "/ as sysdba"

SQL>startup mount;

SQL>recover database;

SQL>alter database open;

3. 数据库的扩充

3.1 增加一个表空间

3.1.1 创建表空间

命令示例:

针对具体情况增加回滚和临时表空间

命令示例:

回滚和临时表空间用完后,可删除或使它 offline

SQL>drop tablespace rbs8;

SQL>drop tablespaces billtemp;

SQL>alter tablespace rbs offline;

SQL>alter tablespace billtemp offline;

3.1.2 增加某个表空间的大小

当一个表空间的大小不能满足工作需要时,应该扩充表空间。

举例:

SQL>alter tablespace system

add datafile /usr/oracle/dbs/sys338.dbf size 3M;

3.2 增加 oracle 的用户,并给用户授权

3.2.1 增加 oracle 的用户,并给用户授权

举例:

SQL>create user newuser identified by userpasswd

default tablespace application

temporary tablespace billtemp;

SQL>grant connect to newuser;

SQL>grant resource to newuser;

SQL>grant update on emp to newuser;

3.2.2 增加 oracle 的角色

oracle 的缺省角色有 connect、resource、dba。它是一组可以分配给其它 role 或用户的权限总和,connect 有 8 个权限,resource 有 5 个权限,dba 有 77 个权限。给一般连接用户赋 connect,给一般编程人员赋 connect加 resource,只有数据库管理员才有 dba的权限。

①创建一个角色

SQL>create role newrole identified by rolepasswd;

②给角色赋权限

SQL>grant select on all table to newrolle;

SQL>grant connect to newrole with admin option;

3.2.3 中断用户同 oracle 的连接

当 oracle 数据库要关机或某个用户占有的大量的资源需要被释放时,dba 需中断用户同 oracle 的连接。

①、SQL>select sid,serial#,username from v$session;

②、SQL>alter system kill session interger1,interger2 ;

interger1,interger2 分别对应于 sid 和 serial#

3.3 表、视图、索引、约束

Oracle 数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作。

3.3.1 表和视图

Oracle 中表是数据存储的基本结构。ORACLE8 引入了分区表和对象表,ORACLE8i 引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。

3.3.1.1 管理表

3.3.1.1.1 建立表

表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用 CREATE TABLE 语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如:

转 ORA-12638: 身份证明检索失败

ORA-12638: 身份证明检索失败 的解决办法
2008年06月25日 星期三 11:42

 

the NTS option makes the Oracle client attempt to use your current Windows domain credentials to authenticate you with the oracle server. This could fail for a couple of reasons:

- The Oracle server is not configured to support Windows authentication
- The credentials you use to login to your local machine are not sufficient to allow you to login to the server.

In my case, it was the later. Despite the fact that I had told the client to use a different user name and password, it was still attempting to login using my domain credentials first. This failed because I was logged on to my local machine using my normal domain credentials rather than my administrator account.

Replacing the line:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

with

SQLNET.AUTHENTICATION_SERVICES= (NONE)

in sqlnet.ora resolved the issue by disabling local support for authenticating using Windows credentials.

 

FIX: IN DB SERVER 

找到安装目录:E:/oracle/product/10.2.0/db_1/NETWORK/ADMIN 打开sqlnet.ora

option 1: 在里面找到 SQLNET.AUTHENTICATION_SERVICES= (NTS)
将其更改为: SQLNET.AUTHENTICATION_SERVICES= (BEQ,NONE)

option 2:或者注释掉:#SQLNET.AUTHENTICATION_SERVICES= (NTS)

 

 

 

 

在windows中,是通过sqlnet.ora这个文件来实现验证机制控制的,当你装完数据库并用netca创建了监听,就会生成这个文件,通常默认是以下内容:
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file won‘t exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES = (NTS)

也就是说,默认就是采用操作系统验证的,也许Oracle认为,拥有了SA权限,就拥有了系统最高权限,所以数据库DBA的sys用户也无需再验证密码了

如果设置成(NONE),就表示采用数据库身份验证,还可以设置成(NONE,NTS),其实这样设也没有意义了,只要括号中有NTS,就会采用操作系统验证,NONE就没有用了

这里要指出一点,有些文章中说还可以设置成(ALL),但我设计测试下来,如果设置成(ALL),会提示ERROR:

C:\Documents and Settings\Administrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 28 21:26:06 2014

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

ERROR:
ORA-12641: 验证服务无法初始化

 

 

 

 

以上是关于请教:ORA-12638:身份证明检索失败怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

ORA-12638: 身份证明检索失败

ORA-12638: 身份证明检索失败 解决方法

ORA-12638: 身份证明检索失败

ORA-12638: 身份证明检索失败 的解决办法

ORA-12638: 身份证明检索失败的解决方法

IMP-00058 ORA-12638:身份证明检索失败