Chinaunix首页 | 论坛 | 博客
  • 博客访问: 554601
  • 博文数量: 855
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-16 19:08
文章分类

全部博文(855)

文章存档

2011年(1)

2008年(854)

我的朋友

分类:

2008-10-16 19:26:07

 一、密码修改

  修改密码方法:
  1.SQL> grant connect to USRNAME identified by USRPWD ;
  2.SQL> alter user USRNAME identified by USRPWD ;
  3.SQL> password USRNAME ;
   更改 USRNMAE 的口令
   旧口令:××××××
   新口令:××××××
   重新键入新口令:××××××

  修改成oracle认证方法:

  1.修改参数文件中 
   remote_login_passwordfile=EXCLUSIVE 或SHARED
  2.修改/home/network/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 instance
  show parameter db
  
  alter system set job_queue_processes=50
  comment ='temporaty change on'
  scope = memory|spfile|both ;


  alter session set

  CONCAT('Good', 'String')   GoodString
  SUBSTR('String',1,3)       Str      
  LENGTH('String')           6        
  INSTR('String', 'r')       3        
  LPAD(sal,10,'*')           ******5000

  union
  union all
  minus 第一个查询减去第二个查询
  intersect 交集

  SQL> select replace('itpub oracle','oracle','training')  itpub from dual
     /

  ITPUB
  --------------
  itpub training


  Translate
  SQL> select translate('This is second trianing of itpub in Beijing!','abcde','12345') itpub
   2  from dual;

  ITPUB
--------------------------------------------
  This is s53on4 tri1ning of itpu2 in B5ijing!

  Floor
  SQL> select floor(4.55) from dual;

  FLOOR(4.55)
-----------
           4
  Ceil
  SQL> select ceil(4.55) from dual;
  CEIL(4.55)
----------
          5

  ROUND: 4舍5入到指定的小数位
  ROUND(45.926, 2) 45.93
  TRUNC: 将值截断到指定的小数位
  TRUNC(45.926, 2)   45.92
  MOD: 返回相除后的余数
  MOD(1600, 300)   100

  select trunc(sysdate, 'D') - 3 from dual;

  trunc(sysdate, 'D'), 截取到本周的第一天(0:00)
  trunc(sysdate, 'M'), 截取到本月的第一天(0:00)
  trunc(sysdate, 'DD'), 截取到本日的0:00
  trunc(sysdate,'yyyy')得到今年的第一天的0:00.

  十进制与十六进制
> select to_char(2463,'xxxx') from dual;

  TO_CH
-----
   99f

  已选择 1 行。
  十六进制与十进制
> select to_number('99f','xxxx') from dual;

  TO_NUMBER('99F','XXXX')
-----------------------
                    2463


  SQL> select ename,sal,
   2  case job WHEN 'MANAGER' THEN 1.1*sal
   3           WHEN 'ANALYST' THEN 1.2*SAL
   4           WHEN 'CLERK'   THEN 1.5*SAL
   5  ELSE sal END "NEW_SAL"
   6  from emp;

  ENAME             SAL    NEW_SAL
---------- ---------- ----------
  SMITH             800       1200
  ALLEN            1600       1600
  WARD             1250       1250
  JONES            2975     3272.5
  MARTIN           1250       1250
  BLAKE            2850       3135
  CLARK            2450       2695
  SCOTT            3000       3600
  KING             5000       5000
  TURNER           1500       1500
  ADAMS            1100       1650
  JAMES             950       1425
  FORD             3000       3600
  MILLER           1300       1950
 
  SQL> SELECT job, sal,
   2         DECODE(job, 'ANALYST'  SAL*1.1,
   3                     'CLERK',   SAL*1.15,
   4                     'MANAGER', SAL*1.20,
   5                                SAL)
   6                REVISED_SALARY
   7  FROM   emp;
  JOB             SAL REVISED_SALARY
--------- --------- --------------
  PRESIDENT      5000           5000
  MANAGER        2850           3420
  MANAGER        2450           2940


  将空值转换为实际的值
  数据格式可以是日期,字符,数字
  数据类型必须匹配
  NVL(comm,0)
  NVL(hiredate,'01-JAN-97')
  NVL(job,'No Job Yet')

  NVL2(expr1,expr2,expr3)

  如果expr1不为Null,返回expr2,如果expr1为Null,返回expr3。
  expr1可以为任何数据类型

  NULLIF(expr1,expr2)
  比较两个表达式,如果相等返回空值,如果不等返回第一个值。

  COALESCE(expr1,expr2,...,exprn)
  返回表达式列表里的第一个非空表达式



  错误:

  在启动数据库时出现ORA-01157,ORA-01110或操作系统级错误例如ORA-07360,
    在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA
    -01116,ORA-01110以及操作系统级错误ORA-07368

  解决:  

  以下有两种解决方案:

  1.用户的表空间可以被轻易地重建

  即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等.在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象.

  svrmgrl> startup mount
    svrmgrl> alter database datafile filename offline drop;
    svrmgrl> alter database open;
    svrmgrl> drop tablespace tablespace_name including contents;
    重建表空间及所有对象.

  2.用户的表空间不能够被轻易地重建

  在大多数情况下,重建表空间是不可能及太辛苦的工作.方法是倒备份及做介质恢复.如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据在online redo log中方可被恢复。

  步骤如下:

  1)Restore the lost datafile from a backup
  2)svrmgrl> startup mount
  3)svrmgrl> select v1.group#,member,sequence#,first_change#
   > from v$log v1,v$logfile v2
   > where v1.group#=v2.group#;
  4)如果数据库运行在NOARCHIVELOG模式下则:
   svrmgrl> select file#,change# from v$recover_file;
   如果 CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复。如果 CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复。 恢复最近一次的全备份或采用方案一.
  5)svrmgrl> recover datafile filename;
  6)确认恢复成功
  7)svrmgrl> alter database open resetlogs;

  3.只读表空间无需做介质恢复,只要将备份恢复即可.唯一的例外是:

  表空间在最后一次备份后被改为read-write 模式
  表空间在最后一次备份后被改为read-only 模式
  在这种情况下,均需进行介质恢复

[1]   

【责编:Kittoy】

--------------------next---------------------

阅读(208) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~