Chinaunix首页 | 论坛 | 博客
  • 博客访问: 558239
  • 博文数量: 126
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 1112
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-22 11:41
文章分类
文章存档

2010年(1)

2009年(5)

2008年(66)

2007年(54)

我的朋友

分类: Oracle

2007-07-02 17:15:05

三、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:WINNTTemp→c: empsystmp,重新启动机器就ok了)
  
  41、如何修改INTERNAL的口令
  
  以下是oracle8的8i你可以仿照来做
  
  (1)、进入DOS下
  
  (2)、默认internal密码文件在c:orantdatabase下,是隐藏属性,文件名称与数据库实例名有关
  
  如默认ORACLE实例名为ORCL,则internal密码文件名为pwdorcl.ora
  
  (3)、建立新的internal密码文件,起个新名字为pwdora8.ora
  
  orapwd80 file=pwdora8.ora password=B entries=5     --注:password项一定要用大写,并且不要用单引号
  
  (4)、拷贝pwdora8.ora文件到c:orantdatabase目录下
  
  (5)、运行regedit,修改口令文件指向
  
  (6)、找到HKEY_LOCAL_MACHINESOFTWAREORACLE项
  
  定位ORA_ORCL_PWFILE子项,改变其值为c:orantdatabasepwdora8.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);
  修改
阅读(1318) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~