知识大全 学习oracle快速入门随笔

Posted 空间

篇首语:今日长缨在手,何时缚住苍龙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 学习oracle快速入门随笔相关的知识,希望对你有一定的参考价值。

修改密码方法 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/neork/admin/SQLNET ORA 文件  增加 sqlnet authentication_services=(NFS)ORACLE_SID是操作系统级的参数INSTANCE_NAME是数据库级的参数SPFILE 是服务器参数文件PFILE 是文本参数文件create pfile= /oracle/test ora from spfile ;show parameter spfile ; 后如果VALUE值是零 则没有使用spfile 启动数据库是可以指定是用pfile还是用spfile启动 如下 startup pfile= /oracle/test ora show parameter instanceshow parameter dbalter system set job_queue_processes= ment = temporaty change on scope = memory|spfile|both ;alter session set CONCAT( Good String )   GoodStringSUBSTR( String )       Str       LENGTH( String )                     INSTR( String r )                LPAD(sal * )           ****** union union allminus 第一个查询减去第二个查询intersect 交集 SQL>; select replace( itpub oracle oracle training )  itpub from dual    /ITPUB itpub trainingTranslate        SQL>; select translate( This is second trianing of itpub in Beijing! abcde ) itpub     from dual;ITPUB This is s on tri ning of itpu in B ijing!FloorSQL>; select floor( ) from dual;FLOOR( )           CeilSQL>; 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(sysdate yyyy )得到今年的第一天的 : 十进制与十六进制EYGLE@vilen>; select to_char( xxxx ) from dual;TO_CH    f已选择 行 十六进制与十进制EYGLE@vilen>; select to_number( f xxxx ) from dual;TO_NUMBER( F XXXX )                    SQL>; select ename sal      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 ANALYST   SAL*                          CLERK    SAL*                          MANAGER SAL*                                    SAL)                   REVISED_SALARY     FROM   emp;JOB             SAL REVISED_SALARY PRESIDENT                   MANAGER                     MANAGER                     将空值转换为实际的值数据格式可以是日期 字符 数字数据类型必须匹配 NVL(m )NVL(hiredate JAN )NVL(job No Job Yet )NVL (expr expr expr )如果expr 不为Null 返回expr 如果expr 为Null 返回expr expr 可以为任何数据类型NULLIF(expr expr )比较两个表达式 如果相等返回空值 如果不等返回第一个值 COALESCE(expr expr exprn)返回表达式列表里的第一个非空表达式 错误:在启动数据库时出现ORA ORA 或操作系统级错误例如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 v group# member sequence# first_change#   >; from v$log v v$logfile v    >; where v group#=v group#;   )如果数据库运行在NOARCHIVELOG模式下则:   svrmgrl>; select file# change# from v$recover_file;    如果 CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复 如果 CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复 恢复最近一次的全备份或采用方案一    )svrmgrl>; recover datafile filename;    )确认恢复成功    )svrmgrl>; alter database open resetlogs; 只读表空间无需做介质恢复 只要将备份恢复即可 唯一的例外是: 表空间在最后一次备份后被改为read write 模式  表空间在最后一次备份后被改为read only 模式  在这种情况下 均需进行介质恢复 二 临时表空间临时表空间并不包含真正的数据 恢复的方法是删除临时表空间并重建即可 三 系统表空间如果备份不可用 则只能采用重建数据库的方法 四 回滚表空间有两种情况: 数据库已经完全关闭(使用shutdown immediate或shutdown命令) ) 确认数据库完全关闭    ) 修改init ora文件 注释 rollback segment    ) svrmgrl>; startup restrict mount    ) svrmgrl>; alter database datafile filename offline drop;    ) svrmgrl>; alter database open;    基于出现的结果:     statement processed 转( )     ORA ORA ORA 转( )    ) svrmgrl>; shutdown immediate    修改init ora文件 增加如下一行:    _corrupted_rollback_segments = ( )    svrmgrl>; startup restrict    ) svrmgrl>; drop tablespace tablespace_name including contents;    重建表空间及回滚段    ) svrmgrl>; alter system disable restricted session;    ) 修改init ora文件 数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库) ) 恢复备份    ) svrmgrl>; startup mount    ) svrmgrl>; select file# name status from v$datafile;    svrmgrl>; alter database datafile filename online;    ) svrmgrl>; select v group# member sequence# first_change#    >; from v$log v v$logfile v    >; where v group#=v group#;    ) svrmgrl>; select file# change# from v$recover_file;    见一方案    ) svrmgrl>; recover datafile filename;    ) svrmgrl>; alter database open; 数据库处于打开状态 ) 删除回滚段和表空间    ) 重建表空间和回滚段 五 控制文件恢复                      .所有的控制文件均被破坏 将备份的控制文件拷贝至原目录下   对于RAW DEVICE 则:   dd if= con bak of= /dev/rdrd/drd seek= .并非所有的控制文件均被破坏用其他的控制文件启动数据库 数据文件上所存储的表select a segment_name from dba_extents a dba_data_files b where a file_id = b file_id and b file_name = 文件名全路径 and a segment_type = TABLE job不能自动运行check db parameters job_queue_processes if it set to then set it larger than job_queue_processes= 问题描述执行如下语句select session_id object_name from v$locked_object a dba_objects bwhere a object_id=b object_iderror:   ora Temporary Segment cannt be cteated in locally managed 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    where  segment_name = db_block_size 是参数查询未提交事务select username SID|| || SERIAL# ses T STATUS START_TIME RN NAME USED_UBLK USED_UREC from v$transaction T v$session S v$rollstat RS v$rollname RN where T SES_ADDR = S SADDR and T XIDUSN = RS USN and RN USN = RS USN order by USED_UBLK;   我们在操作数据库的时候 有时候会由于操作不当引起数据库表被锁定 这么我们经常不知所措 不知怎么给这些表解锁 在pl/sql Developer工具的的菜单 tools 里面的 sessions 可以查询现在存在的会话 但是我们很难找到那个会话被锁定了 想找到所以被锁的会话就更难了 下面这叫查询语句可以查询出所以被锁的会话 如下 SELECT   sn username m SID sn SERIAL# m TYPE          DECODE (m lmode                   None                   Null                   Row Share                   Row Excl                   Share                   S/Row Excl                   Exclusive                  lmode LTRIM (TO_CHAR (lmode ))                ) lmode          DECODE (m request                   None                   Null                   Row Share                   Row Excl                   Share                   S/Row Excl                   Exclusive                  request LTRIM (TO_CHAR (m request ))                ) request          m id m id     FROM v$session sn v$lock m   WHERE (sn SID = m SID AND m request != )          存在锁请求 即被阻塞      OR (    sn SID = m SID                         不存在锁请求 但是锁定的对象被其他会话请求锁定          AND m request =           AND lmode !=           AND (id id ) IN (                        SELECT s id s id                           FROM v$lock s                         WHERE request != AND s id = m id                                AND s id = m id )         )ORDER BY id id m request;通过以上查询知道了sid和 SERIAL#就可以开杀了   alter system kill session sid SERIAL# ;在SQLPLUS里 不显示 行头 set heading off pages 不显示行数信息 set feedback off 不在屏幕上显示结果 set termout off 由于该问题由oarcle工程师定位为无法恢复 并在网上进行了求助也每人能解决 所以我可以方下包袱 去大胆的尝试新办法 按照我对数据库的框架理解去寻求办法 因为无法联机的表空空间为用户表空间 所以不影响数据库系统的启动 所以通过 SQL>;startup mount;       SQL>;alter database open;启动数据库 我查看了l# sys obj#表 想从表中得到关于datafile 的信息 但没有能找到我认为需要的信息 后来我查看了sys file# 发现了所有数据文件的记录 然后我找到对应的file 的记录 想通过删除该记录来屏蔽表空间启动时的数据文件的完整性检测 于是现对sys file#进行了备份 然后删除了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# sys obj#表 想从表中得到关于datafile 的信息 但没有能找到我认为需要的信息 后来我查看了sys file# 发现了所有数据文件的记录 然后我找到对应的file 的记录 想通过删除该记录来屏蔽表空间启动时的数据文件的完整性检测 于是现对sys file#进行了备份 然后删除了file 对应的记录 此时执行SQL>;alter database tablespace ts_user online;提示数据库已被修改 我惊喜的发现表空间被联机成功了 /dev/rlvdata 文件需要介质恢复 表空间联机失败! cha138/Article/program/Oracle/201311/18996

相关参考

知识大全 Oracle新手入门: Oracle问答精选

Oracle新手入门:Oracle问答精选  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Q:如

知识大全 ORACLE入门之如何增加ORACLE连接数

ORACLE入门之如何增加ORACLE连接数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  OR

知识大全 oracle 基础入门

  一ORACLE的表的分类  REGULARTABLE普通表ORACLE推荐的表使用很方便人为控制少  PARTITIONEDTABLE分区表人为控制记录的分布将表的存储空间分为若干独立的分区记录按

知识大全 VC++ Oracle 开发入门教程

VC++Oracle开发入门教程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ORACLE数据

知识大全 ORACLE入门之物理文件大小的限制

ORACLE入门之物理文件大小的限制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle

知识大全 Oracle数据库入门之函数/类型

Oracle数据库入门之函数/类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle主

知识大全 入门基础-Oracle常用脚本备忘

入门基础-Oracle常用脚本备忘  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!创建一个表T使之具

知识大全 Oracle入门教程,新手必读

Oracle入门教程,新手必读  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  删除表的注意事项 

知识大全 入门oracle命令语录

  哎一学期又结束了我想把这些简单命令记录下虽然可能我不会深入研究oracle搞不好以后也会要用到的时候现在花点时间把它给存起来  怎么安装oracle软件我就不介绍了只要下个安装包接下来的安装就不在

知识大全 ORACLE入门之关于ROLLBACK SEGEMNT

ORACLE入门之关于ROLLBACKSEGEMNT  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!