<%@ page contentType="text/html; charset=gb2312"%> oracle数据库开发的一些经验积累(三)
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
oracle数据库开发的一些经验积累(三)
     发布者: 发布时间:2006-05-07

41、如何修改internal的口令
 
以下是oracle8的8i你可以仿照来做

(1)、进入dos下

(2)、默认internal密码文件在c:\orant\database下,是隐藏属性,文件名称与数据库实例名有关

  如默认oracle实例名为orcl,则internal密码文件名为pwdorcl.ora

(3)、建立新的internal密码文件,起个新名字为pwdora8.ora

  orapwd80 file=pwdora8.ora password=b entries=5     --注:password项一定要用大写,并且不要用单引号

(4)、拷贝pwdora8.ora文件到c:\orant\database目录下

(5)、运行regedit,修改口令文件指向

(6)、找到hkey_local_machine\software\oracle项

  定位ora_orcl_pwfile子项,改变其值为c:\orant\database\pwdora8.ora

(7)、关闭oracle数据库,重新启动

(8)、进入svrmgr30服务程序,测试internal密码是否更改成功


42、凭证检索失败的决绝方法。

原因: 由于oracle不能应用os认证而导致凭证检索失败
   
解决办法:
   
    (1).打开network/admin下的sqlnet.ora
        修改sqlnet.authentication _services=(none)。
   
    (2).启动net8 configuration assistant-->选第三项本地网络服务名配置
    -->删除...(删除原来的本地网络服务名)

    (3).重复第二步
    -->添加.. (新建本地网络服务名)

    (4).restart oracle
  
    注意:nts是winnt的认证方式

43、命令行编译存储过程

    alter procedure procedure_name compile;

44、关于如何建立数据库链接(dblink)

可以通过建立客户机数据库网络服务名的办法,将服务器的名字或是ip地址设置为你需要连接的那个机器就行

如果你要在一个应用中连接它,现在做好上步工作,然后按如下处理

建立数据库连接
create database link dbaselinkname connect to username identified by password using ''netservicename'';
dbaselinkname  是建立的数据连接名称
username       是可以连接到的用户名
password        是可以连接到的用户的密码
netservicename  是可以连接的数据库网络服务名或是数据库名

查询建立数据连接的表实例
select * from tablename@ dbaselinkname;

注意:如果在create database link dbaselinkname connect to username identified by password using ''netservicename'';中netservicename  是数据库名修改init.ora中:global_names = true
否则global_names = false
init.ora中:global_names = false
 
45、object browser7.0中文版的破解方法

到object browser的目录里,找到deisl1.isu文件,用记事本打开,看到的是乱码吧?没关系,将stirling technologies ,inc 这个字符串前面的乱码去掉(如果有的话),让后在stirling之前加一个空格(一定要加的),保存,退出,重新运行一下看看,虽然还有提示输入验证信息,但是不用管他,直接确定就行。是不是可以用了呢?保证好使。

46、错误号ora-01536:space quota exceeded for table space ''alcatel''的解决办法
    
     三个解决办法,任你选择:
    (1) alter user username quota 100m on tablespacename;
    (2) alter user username quota unlimited on tablespacename;
    (3) grant unlimited tablespace to username;

47、如何在oracle中捕获到sql语句的全部操作内容

       select osuser, username, sql_text from v$session a, v$sqltext b
       where a.sql_address =b.address order by address, piece;  

48、oracle中如何实现自增字段:

(1)第一种方法
oracle一般的做法是同时使用序列和触发器来生成一个自增字段.
create sequence seqname
 increment by  1
 start with  1
 maxvalue  99999999
/
create trigger trgname
before  insert  on table_name
referencing
 new as :new
for each row
begin
   select seqname.nextval
     into :new.fieldname
     from dual;
end;

(2)第二种方法:
create or replace trigger tr1
  before insert on temp_table
  for each row
declare
com_num number;
begin
select max(id) into com_num from temp_table;
:new.id:=com_num+1;
end tr1;

49、job的使用:

修改initsid.ora参数
job_queue_processes = 4            8i,9i  (允许同时执行的job数)
job_queue_interval = 10            8i 
job_queue_keep_connections=true       8i


dbms_job.submit(:jobno,//job号
                ''your_procedure;'',//要执行的过程
                trunc(sysdate)+1/24,//下次执行时间
                ''trunc(sysdate)+1/24+1''//每次间隔时间
               );
删除job:dbms_job.remove(jobno);
修改要执行的操作:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);

注意:修改后一定要commit;


例子:
variable jobno number;
begin
      dbms_job.submit(:jobno,
              ''procdemo;'',//procdemo为过程名称
               sysdate, ''sysdate + 1/720'');
         commit;
end;

50、如何配置mts

修改初始化参数文件
增加以下内容:
mts_dispatchers = "(protocol=tcp)(disp=2)(con=1000)"
mts_max_dispatchers = 50
mts_servers = 20
mts_max_servers = 50

51、取出一个表的最后一条记录

select * from (select rownum id,tname.* from tname) a where a.id=(select count(*) from a);

52、重做日志(redolog)被删掉,通过什么方法才能恢复!

先mount数据库,然后再目录下建同名文件redo01.log、redo02.log、redo03.log
然后执行alter databse clear logfile group n
对于current的group,执行alter databse clear unarchived logfile group n
然后,再open,就ok了

53、oracle常见服务

几个主要的:

oracleorahome81tnslistener     监听服务
oracleservicesid               oracle服务
oracleorahome81agent           智能代理服务
oracleorahome81cman            连接管理服务
oracleorahome81httpserver      apache web 服务
oracleorahome81managementserver oracle 企业管理器服务
oracleorahome81names            oracle命名服务

剩下的也不常用。

54、oracle的热备份

在不关闭数据库的时候进行oracle的备份。

原理停复杂的,你去找本书看看吧。

举个简单的例子:备份表空间users

alter tablespace users begin backup
copy users tablespace 的数据文件到备份目录
alter tablespace users end backup

55、导致索引不起作用的解决办法

你的问题我刚处理过,是由optimizer_mode参数引起的,该参数的默认值为choose,即为如表有statis则查询走基于cost的方式,否则走基于rule的方式,因些你可以有以下几个解决方法。
(1)、简单的在init<sid>.ora中设optimizer_mode=rule,重起数据库。
(2)、使用analyze table table_name(索引基表) delete statistics;
(3)、最后一个万能办法,将表和索引drop掉,重建。

56、关于数据库进程的问题。

(1).查看相关进程在数据库中的会话
select a.sid,a.serial#,a.program, a.status ,
substr(a.machine,1,20), a.terminal,b.spid
from v$session a, v$process b
where a.paddr=b.addr
and b.spid = &spid;

(2).查看数据库中被锁住的对象和相关会话
select a.sid,a.serial#,a.username,a.program,
c.owner, c.object_name
from v$session a, v$locked_object b, all_objects c
where a.sid=b.session_id and
c.object_id = b.object_id;

(3).查看相关会话正在执行的sql
select sql_text from v$sqlarea where address =
( select sql_address from v$session where sid = &sid );


57、查看ip地址
select sys_context(''userenv'',''ip_address'')  from dual;

58、运行sqlplus时不用输入用户名和密码,进入之后使用connect
            
        sqlplus /nolog
        sql>connect scott/tiger

59、查看当前会话

        userenv() 函数

        select userenv(''language'') from dual 字符集
        select userenv(''isdba'') from dual 是否dba
        select userenv(''sessionid'') from dual sessionid
        select userenv(''terminal'') from dual 客户端名字
        select userenv(''instance'') from dual 实例数

        sys_context() 函数
    
        select sys_context(''userenv'',''current_schema'')  from dual;  当前模式
        select sys_context(''userenv'',''current_schemaid'')  from dual;  当前模式id
        select sys_context(''userenv'',''current_user'')  from dual; 当前用户 
        select sys_context(''userenv'',''db_name'')  from dual; 数据库
        select sys_context(''userenv'',''host'')  from dual; 主机
        ..........

60、删除重复列的方法

(1) delete from table_name a where rowid > (
       select min(rowid) from table_name b
        where a.key_values = b.key_values);
(2) create table table2 as select distinct * from table1;
     drop table1;
     rename table2 to table1;
(3) delete from mytable where rowid not in(
       select max(rowid) from mytable
       group by column_name );
(4) delete from mytable t1
      where  exists (select ''x'' from my_table t2
                   where t2.key_value1 = t1.key_value1
                     and t2.key_value2 = t1.key_value2
                     ...
                     and t2.rowid > t1.rowid);

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
oracle数据库开发的一些经验积累(四)
oracle数据库开发的一些经验积累(五)
oracle数据库开发的一些经验积累(六)
oracle常用命令大汇总(一)
oracle常用命令大汇总(二)
oracle常用命令大汇总(三)
 
最近评论:
        
你曾悄悄的来过!
wow gold,wow gold,wow gold,ffxi gil max(3023)
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(3296)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(6851)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(9744)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号