oracle 常见错误

导出空表解决办法

exp 导库的时候如果有空表,就是还没有分配segment ,那导库的时候就不会把这些表导出去
http://wanwentao.blog.51cto.com/2406488/545154/

锁表

在导库的时候突然被关掉了,imp到一半被强行停了,正在导数据的那张表被锁住删不掉

解决方法:
找到被锁住的用户的额session_id 然后强行kill掉

select t.session_id,t.* from v$locked_object t;

SELECT sid, serial#, username, osuser FROM v$session where sid = 1002;

ALTER SYSTEM KILL SESSION ‘1002,44899’;

ORA-01033 oracle 初始化或关闭错误

因为手动在文件夹中把 dbf 表空间删掉了,导致数据库登录不上

启动dos命令窗口 然后按下面的操作
sqlplus /nolog
conn sys/@orcl as sysdba;
alter database open;
当操作完成上面的操作就会报
ORA-01157: cannot identify/lock data file 9
XXX.DBF就是你误删除的那个文件。然后你执行下面的操作。
alter database datafile ‘d:\XXX.DBF’ offline drop;
alter database open;

导表的时候导到了错误的用户上

ORACLE下有三个视图
DBA_TABLES 拥有DBA角色的用户可以查看系统中的所有表
USER_TABLES 登录数据库的当前用户拥有的所有表
ALL_TABLES 登录数据库的当前用户有权限查看的所有表
类似的,除了表,还视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

select t.* from user_tables t where t.tablespace_name =
‘your_tablespace_name’;

select ‘drop table ‘|| TABLE_NAME || ‘;’
from user_tables
where tablespace_name = ‘your_tablespace_name’;

然后执行这些语句

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

参考博客
http://blog.sina.com.cn//blog_5007d1b10100oqo8.html
http://www.cnblogs.com/wanghongyun/p/6130024.html

(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = E:\Oracle10g)
(SID_NAME = ORCL)
)

解决方法:修改listener.ora
原:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = E:\app\Val\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = “EXTPROC_DLLS=ONLY:E:\app\Val\product\11.2.0\dbhome_1\bin\oraclr11.dll”)
)
)

修改后:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = E:\app\Val\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = “EXTPROC_DLLS=ONLY:E:\app\Val\product\11.2.0\dbhome_1\bin\oraclr11.dll”)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = E:\app\Val\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)

  • 注意连接的时候服务名一定要使用ORCL!!!
    这样以后,关掉Service和LISTENER。再启动Service和LISTENER,这样应该就可以了,注意顺序。 service listener
    加上了面一段东西,意思是把LISTENER服务主动注册到进程监视器(pmon)中去。所以,当你启动了Serivce后,启动LISTENER的时候,会主动去注册到进程监视器(pmon)中去。所以不会有什么问题。但是反过却不行。
    如果说没添加那一段,情况正好相反,是由实例的pmon进程在LISTENER中注册服务,LISTENER为被动注册。所以需要先起LISTENER才可以。
    总结一下,如果说你不加那段东西,那么就应该先起LISTENER,如果说你加了那段东西,就应该先起Serivce。

  • 补充一下,刚又爆了12514这个错,原因是连远程数据库的时候tns里的service_name 写成了本地的orcl
    而实际上是要写连接的那个数据库的实例名

  • 重启Oracle服务 — 先启service 再 listener

出现下列错误,这是由于Oracle服务未被正确启动,也是由于上面的监听名未配置到spfile中

ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist

参考文章
http://blog.csdn.net/baidu_32383657/article/details/53020624

在cmd中输入
sqlplus
sys@orcl as sysdba
sys
create pfile from
spfile=’F:\app\Administrator\product\11.2.0\dbhome_1\database\spfileorcl.ora’;

//spfile文件不能直接修改,所以使用一个 pfile 中间文件 来修改 spfile

显示文件被创建\INITorcl.ORA’;
修改INITorcl.ORA ———– 设置监听服务
*.local_listener=’(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))’

//重新启动Oracle服务 startup 直接启动
startup

–输出
database mounted
database open

修复原本的spfile文件

http://blog.csdn.net/shendeguang/article/details/24745647

解决数据库核心表被删的问题

http://www.cnblogs.com/suredandan/p/5216447.html

ORA- 01017:invalidusername/password;logond denied

问题:ORACLE用SYS和SYSTEM默认密码登录提示

默认登录密码 sys —– manager
system ——- change_on_insta
解决办法:
cmd
sqlplus
请输入用户名:/@orcl as sysdba
sql> alter user sys identified by sys(new password);

** /@orcl【注意:这里@不能有空格】 as sysdba
@orcl 是数据服服务器实例名
总结:可见sys和system并不是Oracle数据库权限最大的管理员,’/’才是。
当使用这个用户登录就 可以避免输入密码直接连接到Oracle

ORA-01090: shutdown in progress - connection is not permitted

http://blog.csdn.net/u010004460/article/details/52104282

sqlplus中用shutdown 命令关闭数据库时,觉得关闭时间太长,所以就将sql&plus窗口关闭了
后面重新打开数据库想登录的时候 ,一直报这个错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值