【问题描述】
Oracle误删表空间文件后数据库无法启动,报错表空间文件不存在
【解决办法】
sqlplus / as sysdba #以dba身份登陆数据库
shutdown immediate; #关闭数据库
startup mount; #打开控制文件
alter database datafile '/opt/oracle/oradata/tbs.dbf' offline drop; #注销被误删的表空间文件
alter database open; #打开数据库
本文链接:http://www.cnblogs.com/kongyunzi/p/3169652.html,转载请注明。
【问题描述】
32位程序调用Oracle11gR2数据库的libclntsh.so库时会返回失败。
【问题原因】
32位程序只能调用32位的Oracle客户端实例包,而R2数据库默认安装完毕后是没有lib32文件夹的,会导致程序调用libclntsh.so出错。
【解决方法】
安装Oracle32位客户端实例包即可,具体方法如下:
1. 以oracle用户登陆数据库所在单板;
2. 查看数据库版本,选择对应的Oracle32位客户端实例包(如instantclient-basic-linux-11.2.0.3.0.zip);
3. 进入$ORACLE_HOME目录,新建lib32文件夹;
4. 以二进制方式上传软件包至lib32文件夹;
5. unzip instantclient-basic-linux-11.2.0.3.0.zip
6. mv instantclient_11_2/* .
7. chmod +x *.so
8. ln -s libclntsh.so.11.1 libclntsh.so
【附录】
可访问以下网址获取32位客户端实例包:
http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
本文链接:http://www.cnblogs.com/kongyunzi/p/3171277.html,转载请注明。
开始准备通过实验的方式,把这段日子来看的内容好好的实践一翻。于是乎打开了OEM,却神奇的发现不能用sys用户登录了,与此同时,其他的非sysdba用户可以登录。但是通过sqlplus可以用同样的密码作为sysdba登录,这是怎么一回事呢?
sysdba或sysoper用户的登录有两种方式:一是通过os认证,二是通过密码文件验证。
权限验证的大致顺序如下:
1.根据$ORACLE_HOME/NETWORK/ADMIN下的sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES值来判定是进行os验证还是密码文件验证。 (NTS)表示为os验证;none或文件中没有该参数表示密码文件验证。
2.os验证,根据当前用户的用户组判断是否具有sysdba权限,验证失败则进行密码文件验证
3. 密码文件验证,参数REMOTE_LOGIN_PASSWORDFILE的值以及密码文件是否存在决定个验证的结果
REMOTE_LOGIN_PASSWORDFILE 这个参数10.2的时候可选值有两个NONE,SHARED; 11G开始多了个exclusive(默认值)
shared:One or more databases can use the password file. The password file can contain SYS as well as non-SYS users.
exclusive:The password file can be used by only one database. The password file can contain SYS as well as non-SYS users.
none: Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system.
按照上面的顺序,先查看sqlnet.ora文件,发现SQLNET.AUTHENTICATION_SERVICES的值为nts,说明当前使用的是os认证。因为目前的认证原因,所以使用错误的密码只要是sys用户也能登录成功。所以猜测这次错误的原因是因为密码错误?
事实上因为很久没碰了,忘记了具体的密码,于是乎更改密码 alter user sys identified by new_password; 这之后再次登录,成功。
该类用户修改密码也有两种方法:
alter user sys identified by new_password;
orapwd file=PWDko.ora password=new_password entries=10 (一旦执行后,该密码文件中删除了除sys用户外的所有用户,对于曾有该权限的用户需要重新赋权)
密码文件的路径:
linux:$ORACLE_HOME/dbs/orapw$ORACLE_SID
windows:$ORACLE_HOME/database/PW%ORACLE_SID%.ora
查看密码文件中数据的状态可以查询v$pwfile_users视图
该表中的数据会随着 grant sysdba to username而自动同步,列出拥有sysdba权限的用户
----------------------------------------------------------------------------------------------------------
翻了一下以前的笔记,曾在使用pl/sql developer时,这方面遇到错误: ORA-01017:invalid username/password;logon denied
分析思路:检查密码-->检查验证方法-->检查REMOTE_LOGIN_PASSWORDFILE-->检查密码文件情况
本文链接:http://www.cnblogs.com/archersun/p/3173069.html,转载请注明。