修改密码方法SQL>; grant connect to USRNAME identified by USRPWD ;
SQL>; alter user USRNAME identified by USRPWD ;
SQL>; password USRNAME ;
更改 USRNMAE 的口令
旧口令××××××
新口令××××××
重新键入新口令××××××
修改成oracle认证方法
修改参数文件中
remote_login_passwordfile=EXCLUSIVE 或SHARED
修改/home/network/admin/SQLNETORA 文件
增加 sqlnetauthentication_services=(NFS)
ORACLE_SID是操作系统级的参数
INSTANCE_NAME是数据库级的参数
SPFILE 是服务器参数文件
PFILE 是文本参数文件
create pfile=/oracle/testora from spfile ;
show parameter spfile ; 后如果VALUE值是零则没有使用spfile
启动数据库是可以指定是用pfile还是用spfile启动 如下
startup pfile=/oracle/testora
show parameter instance
show parameter db
alter system set job_queue_processes=
comment =temporaty change on
scope = memory|spfile|both ;
alter session set
CONCAT(Good String) GoodString
SUBSTR(String) Str
LENGTH(String)
INSTR(String r)
LPAD(sal*) ******
union
union all
minus 第一个查询减去第二个查询
intersect 交集
SQL>; select replace(itpub oracleoracletraining)itpub from dual
/
ITPUB
itpub training
Translate
SQL>; select translate(This is second trianing of itpub in Beijing!abcde) itpub
from dual;
ITPUB
This is son trining of itpu in Bijing!
Floor
SQL>; select floor() from dual;
FLOOR()
Ceil
SQL>; select ceil() from dual;
CEIL()
ROUND: 捨入到指定的小数位
ROUND( )
TRUNC: 将值截断到指定的小数位
TRUNC( )
MOD: 返回相除后的余数
MOD( )
select trunc(sysdate D) from dual;
trunc(sysdate D) 截取到本周的第一天(:)
trunc(sysdate M) 截取到本月的第一天(:)
trunc(sysdate DD) 截取到本日的:
trunc(sysdateyyyy)得到今年的第一天的:
十进制与十六进制
EYGLE@vilen>; select to_char(xxxx) from dual;
TO_CH
f
已选择 行
十六进制与十进制
EYGLE@vilen>; select to_number(fxxxx) from dual;
TO_NUMBER(FXXXX)
SQL>; select enamesal
case job WHEN MANAGER THEN *sal
WHEN ANALYST THEN *SAL
WHEN CLERK THEN *SAL
ELSE sal END NEW_SAL
from emp;
ENAME SAL NEW_SAL
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
SQL>; SELECT job sal
DECODE(job ANALYSTSAL*
CLERK SAL*
MANAGER SAL*
SAL)
REVISED_SALARY
FROM emp;
JOB SAL REVISED_SALARY
PRESIDENT
MANAGER
MANAGER
将空值转换为实际的值
数据格式可以是日期字符数字
数据类型必须匹配
NVL(comm)
NVL(hiredateJAN)
NVL(jobNo Job Yet)
NVL(exprexprexpr)
如果expr不为Null返回expr如果expr为Null返回expr
expr可以为任何数据类型
NULLIF(exprexpr)
比较两个表达式如果相等返回空值如果不等返回第一个值
COALESCE(exprexprexprn)
返回表达式列表里的第一个非空表达式
错误:
在启动数据库时出现ORAORA或操作系统级错误例如ORA
在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA
ORA以及操作系统级错误ORA
解决:
以下有两种解决方案:
用户的表空间可以被轻易地重建
即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等在这种情况下最简单的方法是offline并删除该数据文件删除表空间并重建表空间以及所有的对象
svrmgrl>; startup mount
svrmgrl>; alter database datafile filename offline drop;
svrmgrl>; alter database open;
svrmgrl>; drop tablespace tablespace_name including contents;
重建表空间及所有对象
用户的表空间不能够被轻易地重建
在大多数情况下重建表空间是不可能及太辛苦的工作方法是倒备份及做介质恢复如果您的系统运行在NOARCHIVELOG模式下则只有丢失的数据在online redo log中方可被恢复
步骤如下:
)Restore the lost datafile from a backup
)svrmgrl>; startup mount
)svrmgrl>; select vgroup#membersequence#first_change#
>; from v$log vv$logfile v
>; where vgroup#=vgroup#;
)如果数据库运行在NOARCHIVELOG模式下则:
svrmgrl>; select file#change# from v$recover_file;
如果 CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复如果 CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复 恢复最近一次的全备份或采用方案一
)svrmgrl>; recover datafile filename;
)确认恢复成功
)svrmgrl>; alter database open resetlogs;
只读表空间无需做介质恢复只要将备份恢复即可唯一的例外是:
表空间在最后一次备份后被改为readwrite 模式
表空间在最后一次备份后被改为readonly 模式
在这种情况下均需进行介质恢复
二临时表空间
临时表空间并不包含真正的数据恢复的方法是删除临时表空间并重建即可
三系统表空间
如果备份不可用则只能采用重建数据库的方法
四回滚表空间
有两种情况:
数据库已经完全关闭(使用shutdown immediate或shutdown命令)
) 确认数据库完全关闭
) 修改initora文件注释rollbacksegment
) svrmgrl>; startup restrict mount
) svrmgrl>; alter database datafile filename offline drop;
) svrmgrl>; alter database open;
基于出现的结果:
statement processed 转()
ORAORAORA转()
) svrmgrl>; shutdown immediate
修改initora文件增加如下一行:
_corrupted_rollback_segments = ()
svrmgrl>; startup restrict
) svrmgrl>; drop tablespace tablespace_name including contents;
重建表空间及回滚段
) svrmgrl>; alter system disable restricted session;
) 修改initora文件
数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库)
) 恢复备份
) svrmgrl>; startup mount
) svrmgrl>; select file#namestatus from v$datafile;
svrmgrl>; alter database datafile filename online;
) svrmgrl>; select vgroup#membersequence#first_change#
>; from v$log vv$logfile v
>; where vgroup#=vgroup#;
) svrmgrl>; select file#change# from v$recover_file;
见一方案
) svrmgrl>; recover datafile filename;
) svrmgrl>; alter database open;
数据库处于打开状态
) 删除回滚段和表空间
) 重建表空间和回滚段
五控制文件恢复
.所有的控制文件均被破坏
将备份的控制文件拷贝至原目录下
对于RAW DEVICE则:
dd if=conbak of=/dev/rdrd/drd seek=
.并非所有的控制文件均被破坏用其他的控制文件启动数据库
数据文件上所存储的表
select asegment_name from dba_extents adba_data_files b
where afile_id = bfile_id
and bfile_name = 文件名全路径
and asegment_type = TABLE
job不能自动运行
check db parameters
job_queue_processes
if it set to
then set it larger than
job_queue_processes=
问题描述
执行如下语句
select session_idobject_name from v$locked_object adba_objects b
where aobject_id=bobject_id
error: ora Temporary Segment cannt be cteated in locallymanaged tablespace
更改为sys 用户 以dba登录可以查询
SHUTDOWN IMMEDIATE
STARTUP MOUNT
RECOVER DATABASE
ALTER DATABASE OPEN
查看表大小!
select segment_name(bytes/)/||M 大小
((BLOCKS*DB_BLOCK_SIZE)/)/||M占用空间
from dba_segments
wheresegment_name =
db_block_size 是参数
查询未提交事务
select username SID|||| SERIAL# ses TSTATUS START_TIME RNNAME USED_UBLK USED_UREC
from v$transaction T v$session S v$rollstat RS v$rollname RN
where TSES_ADDR = SSADDR
and TXIDUSN = RSUSN
and RNUSN = RSUSN
order by USED_UBLK;
我们在操作数据库的时候有时候会由于操作不当引起数据库表被锁定这么我们经常不知所措不知怎么给这些表解锁在pl/sql Developer工具的的菜单tools里面的sessions可以查询现在存在的会话但是我们很难找到那个会话被锁定了想找到所以被锁的会话就更难了下面这叫查询语句可以查询出所以被锁的会话如下
SELECT snusername mSIDsnSERIAL# mTYPE
DECODE (mlmode
None
Null
Row Share
Row Excl
Share
S/Row Excl
Exclusive
lmode LTRIM (TO_CHAR (lmode ))
) lmode
DECODE (mrequest
None
Null
Row Share
Row Excl
Share
S/Row Excl
Exclusive
request LTRIM (TO_CHAR (mrequest ))
) request
mid mid
FROM v$session sn v$lock m
WHERE (snSID = mSID AND mrequest != ) 存在锁请求即被阻塞
OR ( snSID = mSID 不存在锁请求但是锁定的对象被其他会话请求锁定
AND mrequest =
AND lmode !=
AND (id id) IN (
SELECT sid sid
FROM v$lock s
WHERE request != AND sid = mid
AND sid = mid)
)
ORDER BY id id mrequest;
通过以上查询知道了sid和 SERIAL#就可以开杀了
alter system kill session sidSERIAL#;
在SQLPLUS里
不显示 行头
set heading off pages
不显示行数信息
set feedback off
不在屏幕上显示结果
set termout off
由于该问题由oarcle工程师定位为无法恢复并在网上进行了求助也每人能解决所以
我可以方下包袱去大胆的尝试新办法按照我对数据库的框架理解去寻求办法
因为无法联机的表空空间为用户表空间所以不影响数据库系统的启动所以
通过 SQL>;startup mount;
SQL>;alter database open;启动数据库
我查看了l#sysobj#表想从表中得到关于datafile的信息但没有能找
到我认为需要的信息
后来我查看了sysfile#发现了所有数据文件的记录然后我找到对应的file的记录
想通过删除该记录来屏蔽表空间启动时的数据文件的完整性检测于是现对sysfile#进
行了备份然后删除了file对应的记录
此时执行SQL>;alter database tablespace ts_user online;
提示数据库已被修改我惊喜的发现表空间被联机成功了
由于相应的数据文件在这之前已经损坏而且该数据文件已经被设置成了offline并且局方在数据库关闭后在mount状态下直接对该文件所在表空间进行了offline操作所以现在如果再通过alter database datafile filename offline drop已经不起作用因为此时的表空间默认的状态为offline该数据文件与其所在表空间(联机或脱机)具有一致性所以此时如果想启动该表空间只能通过屏蔽数据文件的完整性检查! 数据库业务表空间联机失败 数据库业务表空间联机失败
由于该问题由oarcle工程师定位为无法恢复并在网上进行了求助也每人能解决所以我可以方下包袱去大胆的尝试新办法按照我对数据库的框架理解去寻求办法因为无法联机的表空空间为用户表空间所以不影响数据库系统的启动所以通过 SQL>;startup mount;SQL>;alter database open;启动数据库我查看了l#sysobj#表想从表中得到关于datafile的信息但没有能找到我认为需要的信息后来我查看了sysfile#发现了所有数据文件的记录然后我找到对应的file的记录想通过删除该记录来屏蔽表空间启动时的数据文件的完整性检测于是现对sysfile#进行了备份然后删除了file对应的记录此时执行SQL>;alter database tablespace ts_user online;提示数据库已被修改我惊喜的发现表空间被联机成功了
/dev/rlvdata文件需要介质恢复表空间联机失败!