转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
oracle数据库开发的一些经验积累(一)         ★★★★

oracle数据库开发的一些经验积累(一)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2804 更新时间:2009/4/22 22:03:57
38、修改表的列名

Oracle9i:
alter table xxx rename column xx to yy;

Oracle8i & lower version
connect sys/passed;
update col$ set name=xx where obj#=对象id and name = 字段
(一般不要这样用,会造成意想不到的结果)
注:最好是删除再建立新的列


39、把用户模式对象所在的表空间移到新的表空间
(1). create the new tablesapce
(2). alter user test default tablespace test_data;
(3). alter user test quota unlimited on test_data;
(4). alter table the_table_name move tablespace test_data;
    生成脚本:
    select ''''alter table''''||tname||'''' move tablespace test_date;''''
    from tab
   where tabtype=''''TABLE''''
(5). rebuild the indexes;

40、使用OEM备份或者EXP的步骤
 WIN2000下:

(1). 控制面板――>管理工具―― >计算机管理――>本地用户和组――>用户――>新建用户sys和sysman(sys和sysman 的帐号要和登陆数据库的帐号相同);
(2).控制面板――>管理工具―― >本地安全策略――>本地策略――>用户权利指派――>
作为批处理作业登陆――>添加sys和sysman两个帐号。
(3).使用Enterprise Manager配置辅助工具
开始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant
a、使用Configuration Assistant工具来创建一个新的资料档案库。

(4).控制面板――>管理工具―― > 服务,查看OracleOraHome81ManagementServer是否启动,如果没有启动,则手动启动该服务。
(5).以sysman/oem_temp(default)登陆DBA Studio
(第二个选项:登陆到Oracle Management Server),立即修改密码为你刚才在NT下建的用户sysman的密码。
(6). 以sysman/ *** (bluesky) 从开始→程序→Oracle - OraHome81→Console 登陆到 控制台。
在 系统→首选项→首选身份证明(我的首选身份设置如下:)
DEFAULT节点:name:sysman
DEFAULT数据库:name:sys
(7). 在搜索/添加结点后,以sysman/ *** 登陆到该结点,以sys/ *** as sysdba登陆数据库(也就是在首选身份设置的结果)。
(8). 在工具→备份管理→向导→预定义备份策略(自定义备份策略)→提交备份计划
(9).从开始→程序→Oracle - OraHome81→Console 登陆到 控制台,查看活动(历史记录)可以看到你的备份是否成功,如果不成功,可以点击备份看明细。(我第一次也没成功,后来我修改系统的临时目录C:\WINNT\Temp→c:\temp\systmp,重新启动机器就ok了)

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
     &nb

上一页  [1] [2] [3] [4] [5]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台