【oracle使用笔记2】使用Oracle数据库遇到的若干问题总结

一. 关于Oracle 11g数据库在查询表中数据显示中文乱码问题

【描述】本人一开始使用的Oracle是11g版本的,用PLSQL一次查询表中的数据时出现了中文显示乱码,为此搜了许多解决办法,最终通过下面三个步骤解决了问题

【解决】三个步骤:

    1. 查询一下当前的字符集类型
        select userenv('language') from dual
     若不是IMPLIFIED CHINESE_CHINA.ZHS16GBK,需要去设置环境变量

    2. 我的电脑上右键属性--高级系统设置--高级--环境变量,新建用户变量: 
        变量名:NLS_LANG 
        变量值:SIMPLIFIED   CHINESE_CHINA.ZHS16GBK
        
    3. 重启PLSQL

二. 关于数据库被锁的解决方法

【描述】整个项目开发的过程中,许多人会同时操作数据库,有时候不经意间会遇到自己插入SQL语句执行时,下方的显示栏一直显示“正在执行...”,出现这种情况的原因是有人操作数据库时没有commit,导致数据库被锁,自己就无法进行增删改数据的操作了!

【解决】杀掉当前系统的会话,通过以下三个步骤即可解决被锁情况:

    1.  查询被锁的模块,会话
        select object_id,session_id,locked_mode from v$locked_object

    2. 查询被锁的用户名,sid,seria以及其他信息
        select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time

    3. 填写步骤2对应的sid,serial#
        alter system kill session 'sid,serial#‘   

三. Oracle数据库长时间不使用会出现一些问题,如服务没开完出现:Oracle initialization or shutdown inprogress

【解决】Windows的服务中找到以下服务启动,如果跟随系统启动可以设置为自动
    OracleDBConsoleorcl
    OracleOraDb11g_home1TNSListener
    OracleServiceORCL

【服务解释】

    OracleDBConsolexx(xx表示实例名称,非必须启动):Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。

    OracleOraDb11g_home1TNSListener(非必须启动):监听器服务,服务只有在数据库需要远程访问的时候才需要。

    OracleServicexx(xx表示实例名称,必须启动):数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启

【总结】
        要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_home1TNSListener服务也要开启。OracleDBConsoleorcl是进入基于web的EM必须开启的,其余服务很少用。注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名。

猜你喜欢

转载自www.cnblogs.com/xxwei3-wings/p/9403929.html