写在前面
Oracle 在使用过程中常会遇到小问题的解决办法
一、Oracle 用户密码过期
执行以下语句前,先确认是否有dba权限,如果没有,可使用sys以dba角色登录执行:
grant dba to XXX;
授权;
- 查询用户及其对应的配置文件,一般是default
select username,PROFILE FROM dba_users
- 查询default配置文件中密码的有效期
select * from dba_profiles s where s.profile='DEFAULT' and resource_name = 'PASSWORD_LIFE_TIME'
- 修改密码有效期
alter profile default limit password_life_time unlimited
二、Orcale导出table 时,提示表不存在问题解决
原因:当数据库中的表为imp生成,且没有数据时,oracle 默认不会分配 segment ,如果此时exp表,则会提示这些表不存在
解决:手动为表分配segment
- 执行语句
alter table 表名 allocate extent;
- 批量修改语句:
select 'alter table ' || table_name || ' allocate extent;' from user_tables where segment_created = 'NO';
- 将执行结果中的语句复制出来执行即可。
三、Oracle sys密码过期问题
1.方法一 重建密码文件(适合密码认证登录的方式)
需要重建密码文件,具体步骤如下:
- 首先,确定你的密码文件的路径和名称:
- 在windows下在windows下
密码文件路径oracle_home\database
密码文件名称pwd+sid.ora - 在unix下
密码文件路径oracle_home/dbs
密码文件名称pwd+sid - Sid为实例名称,查看实例名称语句:
Select instance_name from v$instance; select 'pwd'||instance_name||'.ora' from v$instance;
- 在windows下在windows下
- 将原密码文件重命名为pwd+sid+back.ora
在windows命令提示符下重建密码文件:
Orapwd file=….. Password=….
密码文件中含有sys的密码
例如:
orapwd file=F:\oracle\product\10.2.0\db_1\database\PWDorcl.ora password=123
这样就建立了SYS的密码为123,可以登录了.
经验证,使用方法一可用
2.方法二(适合OS认证登录的方式)
Oracle提供两种验证方式,一种是OS验证,另一种密码文件验证方式
如果是OS认证,则需要用以下方法修改密码:
sqlplus /nolog;
connect / as sysdba
alter user sys identified by
alter user system identified by ;