数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2018年03月09日
 
Oracle数据库开发的一些经验积累(二)

LINUX和UNIX下

转到操作系统下执行:kill spid (以上语句所查出的)

ORACLE中检查表是否被锁的语句

SELECT AOWNER

AOBJECT_NAME

BXIDUSN

BXIDSLOT

BXIDSQN

BSESSION_ID

BORACLE_USERNAME

BOS_USER_NAME

BPROCESS

BLOCKED_MODE

CMACHINE

CSTATUS

CSERVER

CSID

CSERIAL#

CPROGRAM

FROM ALL_OBJECTS A

V$LOCKED_OBJECT B

SYSGV_$SESSION C

WHERE ( AOBJECT_ID = BOBJECT_ID )

AND (BPROCESS = CPROCESS )

ORDER BY

杀掉alter system kill session sid serial#

ORACLE的登录问题用户名和密码

可以直接输入

internal/oracle@serivce_name

sys/change_on_install@serivce_name

system/manager@serivce_name

scott/tiger@serivce_name

注意

i中没有internal/oracle

如果选择典型安装则有scott用户

如果自定义可以不安装 scott用户

如果是本机则可以省略@serivce_name

oem:(ORACLE ENTERPRISE MANAGER)

sysman/oem_temp

修改表的列名

Oraclei:

alter table xxx rename column xx to yy;

Oraclei & lower version

connect sys/passed;

update col$ set name=xx where obj#=对象id and name = 字段

(一般不要这样用会造成意想不到的结果)

最好是删除再建立新的列

把用户模式对象所在的表空间移到新的表空间

() create the new tablesapce

() alter user test default tablespace test_data;

() alter user test quota unlimited on test_data;

() alter table the_table_name move tablespace test_data;

生成脚本

select alter table||tname|| move tablespace test_date;

from tab

where tabtype=TABLE

() rebuild the indexes;

使用OEM备份或者EXP的步骤

WIN

() 控制面板――>管理工具―― >计算机管理――>本地用户和组――>用户――>新建用户sys和sysman(sys和sysman 的帐号要和登陆数据库的帐号相同)

().控制面板――>管理工具―― >本地安全策略――>本地策略――>用户权利指派――>

作为批处理作业登陆――>添加sys和sysman两个帐号

().使用Enterprise Manager配置辅助工具

开始→程序→Oracle OraHome→Enterprise Manager→Configuration Assistant

a使用Configuration Assistant工具来创建一个新的资料档案库

().控制面板――>管理工具―― > 服务查看OracleOraHomeManagementServer是否启动如果没有启动则手动启动该服务

().以sysman/oem_temp(default)登陆DBA Studio

(第二个选项登陆到Oracle Management Server)立即修改密码为你刚才在NT下建的用户sysman的密码

(). 以sysman/ *** (bluesky) 从开始→程序→Oracle OraHome→Console 登陆到 控制台

在 系统→首选项→首选身份证明(我的首选身份设置如下

DEFAULT节点name:sysman

DEFAULT数据库name:sys

(). 在搜索/添加结点后以sysman/ *** 登陆到该结点以sys/ *** as sysdba登陆数据库(也就是在首选身份设置的结果)

(). 在工具→备份管理→向导→预定义备份策略(自定义备份策略)→提交备份计划

().从开始→程序→Oracle OraHome→Console 登陆到 控制台查看活动(历史记录)可以看到你的备份是否成功如果不成功可以点击备份看明细(我第一次也没成功后来我修改系统的临时目录C:\WINNT\Temp→c:\temp\systmp重新启动机器就ok了)

如何修改INTERNAL的口令

以下是oraclei你可以仿照来做

()进入DOS下

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

如默认ORACLE实例名为ORCL则internal密码文件名为pwdorclora

()建立新的internal密码文件起个新名字为pwdoraora

orapwd file=pwdoraora password=B entries=password项一定要用大写并且不要用单引号

()拷贝pwdoraora文件到c:\orant\database目录下

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

()找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE项

定位ORA_ORCL_PWFILE子项改变其值为c:\orant\database\pwdoraora

()关闭ORACLE数据库重新启动

()进入svrmgr服务程序测试internal密码是否更改成功

凭证检索失败的决绝方法

原因: 由于Oracle不能应用OS认证而导致凭证检索失败

解决办法:

()打开network/admin下的sqlnetora

修改SQLNETAUTHENTICATION _SERVICES=(NONE)

()启动Net configuration assistant>选第三项本地网络服务名配置

>删除(删除原来的本地网络服务名)

()重复第二步

>添加 (新建本地网络服务名)

()restart oracle

注意NTS是WinNT的认证方式

命令行编译存储过程

ALTER PROCEDURE procedure_name COMPILE;

关于如何建立数据库链接(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是数据库名修改initora中global_names = true

否则global_names = false

initora中global_names = false

Object Browser中文版的破解方法

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

错误号ORA:space quota exceeded for table space ALCATEL的解决办法

三个解决办法任你选择

() alter user USERNAME quota M on TABLESPACENAME;

() alter user USERNAME quota unlimited on TABLESPACENAME;

() grant unlimited tablespace to USERNAME;

如何在Oracle中捕获到SQL语句的全部操作内容

SELECT osuser username sql_text from v$session a v$sqltext b

where asql_address =baddress order by address piece;

ORACLE中如何实现自增字段

()第一种方法

ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段

CREATE SEQUENCE SEQname

INCREMENT BY

START WITH

MAXVALUE

/

CREATE TRIGGER TRGname

BEFOREINSERTON table_name

REFERENCING

NEW AS :NEW

FOR EACH ROW

Begin

SELECT SEQnameNEXTVAL

INTO :NEWFIELDname

FROM DUAL;

End;

()第二种方法

CREATE OR REPLACE TRIGGER TR

BEFORE INSERT ON temp_table

FOR EACH ROW

declare

com_num NUMBER;

BEGIN

SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;

:NEWID:=COM_NUM+;

END TR;

job的使用

修改initsidora参数

job_queue_processes = ii(允许同时执行的JOB数)

job_queue_interval = i

job_queue_keep_connections=true i

DBMS_JOBSUBMIT(:jobno//job号

your_procedure;//要执行的过程

trunc(sysdate)+///下次执行时间

trunc(sysdate)+/+//每次间隔时间

);

删除job:dbms_jobremove(jobno);

修改要执行的操作:dbms_jobwhat(jobnowhat);

修改下次执行时间dbms_jobnext_date(jobnext_date);

修改

上一篇:oracleisdate函数

下一篇:如何在数据库的标识列里插入特定的值