当前位置:  数据库>oracle
本页文章导读:
    ▪Oracle 修改现有列的数据类型 - Gyoung      如果表中有数据,Oracle是不能修改其数据类型的。但可以通过新建一个临时列,将要修改列的数据复制到临时列中,删除原列再修改临时列的名字。这样说好像有点拗口,分步解说一下。表AC_.........
    ▪【实战经验】64位Win7安装+32位Oracle + PL/SQL 解决方法 - 笨笨的小蜗牛        软件环境:64位win7、32位Oracle 10g、 PL/SQL 9.0.4.1644  前言:以前开发用的都是32位系统,突然换到64位上,安装环境真的有点麻烦了,尤其对于PL/SQL只支持32位等。看了很多的资料,但一些.........
    ▪delete大批量数据引起空间爆满处理 - cycsa      前一天晚上做大表删除操作测试,分段删除,没删除100000条commit一次,由于存储过程打印了执行时间中途断网,无法看到执行时间于是直接kill了任务结果早上登录测试数据库发现空间爆满然.........

[1]Oracle 修改现有列的数据类型 - Gyoung
    来源:    发布时间: 2013-10-29

如果表中有数据,Oracle是不能修改其数据类型的。但可以通过新建一个临时列,将要修改列的数据复制到临时列中,删除原列再修改临时列的名字。这样说好像有点拗口,分步解说一下。

表AC_REG中有列:is_active,原来是字符类型的,目标是将它改为数值类型

---目标将IS_ACTIVE改为数值型
--新增一列
alter table AC_REG add is_active_temp number(1);
--将IS_ACTIVE的值,赋给is_active_temp
update AC_REG set is_active_temp = cast(is_active as number(1));
--删除原来的列
alter table AC_REG drop column is_active;
--修改名称
alter table AC_REG rename column is_active_temp to is_active;

 


本文链接:http://www.cnblogs.com/Gyoung/p/3144679.html,转载请注明。


    
[2]【实战经验】64位Win7安装+32位Oracle + PL/SQL 解决方法 - 笨笨的小蜗牛
    来源:    发布时间: 2013-10-29

  软件环境:64位win7、32位Oracle 10g、 PL/SQL 9.0.4.1644

  前言:以前开发用的都是32位系统,突然换到64位上,安装环境真的有点麻烦了,尤其对于PL/SQL只支持32位等。看了很多的资料,但一些问题并不能直接解决。花了一天时间终于安装成功了,下文将安装过程中遇到的问题记录下,以便作为以后的参照,也希望对大家解决类似问题有用。

  • 情景:安装完win7后,新建了一个用户,但在安装完Oracle后,点击Net Configuration Assistant,,没有任何反应。
  •     原因:权限问题,需要有高级管理员权限;

        解决方法:win7系统内置administor高级管理员账户。开启后在此账户下安装即可。

                            开启方法:右键【我的电脑】-【管理】-【计算机管理】-【系统工具】-【本地用户和组】-【用户】-右键【Administrator】-【属性】-取消【账户已禁用】选中状态-重启电脑即可,如图:

     

     

      2. 情景:安装pl/sql,连接不到Oracle,出现异常:Oracle-12154

        原因:pl/sql是32位的,不能加载64位的oci.dll(oracle的文件)

              解决方法:

      •   去Oracle官网下载instantclient-basiclite-win32-10.2.0.4.zip 或instantclient-basic-win32-10.2.0.4.zip;
      •   将文件解压到“D:\oracle\product”下(我Oracle安装路径是这样的);
      •   将“D:\oracle\product\ db_1\NETWORK\ADMIN”下的tnsnames.ora拷贝到“D:\oracle\product\ instantclient_10_2”;
      •   非登录状态下进入PL/SQL developer,进入【tools】-【Preferences】,在connection中设置Oracle_Home和OCI Library,其中Oracle_Home设置为InstantClient的解压目录,OCI Library设置为该目录下的oci.dll; 

      •   添加环境变量:

            Path=D:\oracle\product\instantclient_10_2;

            ORACLE_HOME= D:\oracle\product\instantclient_10_2

            TNS_ADMIN= D:\oracle\product\instantclient_10_2

            NLS_LANG= AMERICAN_AMERICA.AL32UTF8

      •   重新登录pl/SQL 即可;

     

      3. 情景:代码中采用NHibernate,连接Oracle时出错 oracle-12154 TNS:

          原因:注册表中的ORACLE_HOME变量值不正确导致的,指向的路径为oracle的原路径,不是上一步更改的路径。

              解决方法:【开始】-【输入regedit】-【回车】-【搜索ORACLE_HOME】-【修改值为:D:\oracle\product\instantclient_10_2(根据自己的情况设定)】-【重启机器】

     

     


    本文链接:http://www.cnblogs.com/muzihai1988/p/ORALCE.html,转载请注明。


        
    [3]delete大批量数据引起空间爆满处理 - cycsa
        来源:    发布时间: 2013-10-29

    前一天晚上做大表删除操作测试,分段删除,没删除100000条commit一次,由于存储过程打印了执行时间中途断网,无法看到执行时间
    于是直接kill了任务
    结果早上登录测试数据库发现空间爆满
    然后一时糊涂去弄了表的shrink跟dbms_stats.gather_table_stats想着收缩表释放空间
    弄到一半突然想起,表的收缩最多是释放表空间的空闲空间,并非系统空间
    后来想想,大量删除反复操作过程引发了undo的扩展,后来检查表空间后确实如此
    最后在线更换undo tablespace后删除原tablespace后恢复

    附上存储过程

    create or replace procedure delete_table as
    i number(15);
    l_start number default dbms_utility.get_time;
    begin
    dbms_output.put_line('begin time:'||to_char(SYSTIMESTAMP,'HH24:MI:SS:FF2'));
    i:=0;
    for x in (select log_id from user_log where user_log_id<46380000)
    loop
    delete from user_log where user_log_id = x.user_log_id;
    i:=i+1;
    if (i>10000) then
    begin
    --dbms_output.put_line('delete ok.'||i);
    commit;
    i:=0;
    end;
    end if;
    end loop;
    commit;
    dbms_output.put_line('ok.end time:'||to_char(SYSTIMESTAMP,'HH24:MI:SS:FF2'));
    exception when others then
    rollback;
    end;
    /

    另外调试时记得 set serveroutput on

    遇到的报错提示

    [oracle@centos5 osa]$ dba

    SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jun 21 09:23:18 2013

    Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

    ERROR:
    ORA-09817: Write to audit file failed.
    Linux-x86_64 Error: 28: No space left on device
    ORA-01075: you are currently logged on


    Enter user-name:
    ERROR:
    ORA-01017: invalid username/password; logon denied


    Enter user-name:
    ERROR:
    ORA-01017: invalid username/password; logon denied


    SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

    检查磁盘空间,爆满

    [oracle@centos5 osa]$ df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 93G 89G 0 100% /
    /dev/sda1 99M 12M 82M 13% /boot
    tmpfs 1006M 0 1006M 0% /dev/shm

    想着收缩下大表就有空间了,,,糊里糊涂开始shrink

    [oracle@centos5 osa]$ sqlplus test/test

    SQL*Plus: Release 10.2.0.4.0 - Production on Fri Jun
        
    最新技术文章:
    ▪current online redo log缺失后的恢复
    ▪ORA-600 2662错误解决实例
    ▪ORA-00600 2662错误解决方法
    ▪Oracle Hidden Parameter:_allow_resetlogs_corruption
    ▪Oracle诊断事件列表
    ▪Oracle 隐含参数 _disable_logging 详解
    ▪ORA-00600 [2662]错误解决过程
    ▪Oracle里常见的执行计划
    ▪Oracle里另外一些典型的执行计划
    ▪Oracle服务器自动备份
    ▪Oracle固定SQL的执行计划(一)---SQL Profile
    ▪Oracle固定SQL的执行计划(二)---SPM
    ▪同一环境下新建Standby RAC库
    ▪Oracle快速克隆安装
    ▪Oracle单实例启动多个实例
    ▪Oracle的PLSQL别名中文出现乱码解决方法
    ▪ORA-00379: no free buffers available in buffer pool DEFAULT ...
    ▪RMAN-06023: no backup or copy of datafile 16 found to restor...
    ▪RMAN还原数据库报错问题解决案例
    ▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
    ▪Oracle 性能优化建议
    ▪Oracle SQL语句优化心得
    ▪Oracle慢SQL监控脚本实现
    ▪Oracle dblink 查询 tns:无法解析指定的连接标识...
    ▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
    ▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
    ▪Oracle 12C 开启数据库归档模式
    ▪Solairs系统中配置Oracle 12c 开机启动
    ▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
    ▪Oracle ASMM 与AMM之间相互切换
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3