|
入门基础 | Oracle | 3301 次查看 |
|---|---|---|
三、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); 修改 |
||