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

转载 2013年12月05日 15:16:22

三、LINUX和UNIX下
  转到操作系统下执行:kill -9 spid (以上语句所查出的)
  
  36、ORACLE中检查表是否被锁的语句
  
  SELECT A.OWNER,
  A.OBJECT_NAME,
  B.XIDUSN,
  B.XIDSLOT,
  B.XIDSQN,
  B.SESSION_ID,
  B.ORACLE_USERNAME,
  B.OS_USER_NAME,
  B.PROCESS,
  B.LOCKED_MODE,
  C.MACHINE,
  C.STATUS,
  C.SERVER,
  C.SID,
  C.SERIAL#,
  C.PROGRAM
  FROM ALL_OBJECTS A,
  V$LOCKED_OBJECT B,
  SYS.GV_$SESSION C
  WHERE ( A.OBJECT_ID = B.OBJECT_ID )
  AND (B.PROCESS = C.PROCESS )
  ORDER BY 1,2
  杀掉:alter system kill session 'sid, serial#'
  37、ORACLE的登录问题,用户名和密码。
  
  可以直接输入:
  internal/oracle@serivce_name
  sys/change_on_install@serivce_name
  system/manager@serivce_name
  scott/tiger@serivce_name
  注意:
  9i中没有internal/oracle
  如果选择典型安装则有 scott用户
  如果自定义可以不安装  scott用户
  如果是本机则可以省略@serivce_name
  
  oem:(ORACLE ENTERPRISE MANAGER)
  sysman/oem_temp
  
  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);
  修改

Oracle数据库开发经验总结

  • 2012年03月26日 12:54
  • 48KB
  • 下载

Oracle数据库开发结构设计技巧

author:skatetime:2010-08-26尽管Oracle系统本身已经提供了若干种对系统性能进行调节的技术,但是,假如数据库设计本身就有问题特别是在结构上设计得尤其糟糕,那你纵有天大的本事...

Oracle数据库开发(四).Linux下ProC的Makefile示例

Oracle Database Development (4). Example Makefile for Pro*C Vert Melon Jun 8,2007 It is...

Oracle数据库开发和设计规范

1 命名原则 1.1约定 ü  是指对数据库、数据库对象如表、字段、索引、序列、存储过程等的命名约定; ü  命名使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划...

Oracle数据库开发之函数

函数的作用:方便数据的统计 函数分类:数值函数、字符函数、日期函数、转换函数 在查询中使用函数:将小写字母转换成大写 数值函数:四舍五入:ROUND(n [,m])      n表示要进...
  • wu_zz
  • wu_zz
  • 2017年04月01日 11:45
  • 80

Oracle数据库开发之序列

序列: 在Oracle开发中,序列最常见的功能是为数据表提供自增列值,序列是一种数据库对象,用来自动产生一组唯一的序号,多个用户可以共同使用序列中的序号,一般将序列应用于表的主键列 对于Oracl...
  • wu_zz
  • wu_zz
  • 2017年04月05日 17:20
  • 81

Oracle数据库开发

Oracle数据库开发 系统用户:sys、system、sysman、scottsys>system,当用sys用户登录时,必须有管理员或系统操作人员的权限才能登录;而system用户能直接登录。 ...

南京学思基于Oracle数据库开发的优点

 现阶段南京学思使用的数据库是Oracle数据库,Oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。 一般Orac...
  • njxuesi
  • njxuesi
  • 2015年05月15日 11:37
  • 543

Oracle数据库开发笔记 lesson5

本文来自中软开创myc老师上课笔记

Oracle数据库开发相关

1、查看被锁的表和解锁 (1)查看被锁的表 select b.owner, b.object_name, a.session_id, a.locked_mode from v$locked_obj...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle数据库开发的一些经验积累(二)
举报原因:
原因补充:

(最多只允许输入30个字)