JAVA开发程序员之Oracle学习篇
来源:互联网 发布:ps淘宝详情切片 编辑:程序博客网 时间:2024/06/05 16:31
怎样找回sys和system系统管理员的密码
C:/>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 9月 12 19:38:26 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect / as sysdba
已连接。
SQL> alter user sys identified by sys;
用户已更改。
SQL> alter user system identified by system;
用户已更改。
SQL>
sys和system用户区别
1 ) 最重要的区别,存储的数据的重要性不同
sys:
所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户。
system:
system用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有dba,sysdba等角色或系统权限。
2) 其次的区别,权限的不同。简单来说sys可以启动关闭数据库,而system不可以。
sys用户必须以as sysdba或as sysoper形式登录。
sysdba和sysoper属于system privilege,也称为administrative privilege,拥有例如数据库开启关闭之类一些系统管理级别的权限sysdba和sysoper具体的权限可以看下表:
sysdba
sysoper
区别
startup
startup
shutdown
shutdown
alter database open/mount/backup
alter database open/mount/backup
改变字符集
none
create database
none
drop database
none
create spfile
create spfile
alter database archivelog
alter database archivelog
alter database recover
只能完全恢复,不完全恢复不行
拥有restricted session权限
拥有restricted session权限
可以让用户作为sys用户连接
可以进行一些基本的操作,但不能查看用户数据
system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的,这一点类似Linux里面的sudo的感觉,从登录信息里面我们可以看出来。
SQL> conn system/manager as sysdba
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
因此在as sysdba连接数据库后,创建的对象实际上都是生成在sys中的。我们来做一个小实验:
SQL> create user test identified by test;
User created
SQL> grant sysdba to test;
Grant succeeded
SQL> conn test/test as sysdba
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as SYS
SQL> create table test (a int);
Table created
SQL> select owner from dba_tables where table_name=’TEST’;
OWNER
——————————
SYS
同样,以as sysoper登录,实际上是作为public登录的。
Oracle中Sequence的使用
Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.
下面介绍一下关于sequence 的生成,修改,删除等常用的操作:
1. 创建 Sequence
使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限):
[注意]如果设置了CACHE值,ORACLE将在内存里预先放置一些sequence,以使存取速度更快。cache里面的取完后,oracle自动再取一组到cache。 但是,使用cache可能会跳号, 当遇到数据库突然异常down掉(shutdown abort),cache中的sequence就会丢失. 因此,推荐在create sequence的时候使用 nocache 选项。
2. 使用 sequence
sequence.CURRVAL -- 返回 sequence的当前值
Returns the current value of a sequence
sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值
Increments the sequence and returns the next value
[注意] 第一次NEXTVAL返回的是初始值; 随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。
CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
sequence 存储在数据字典中,存储于user_sequences表
LAST_NUMBER 为最终序列号,也就是sequence游标当前所在的位置.
The LAST_NUMBER column displays the next available sequence number.
3. 修改 Sequence
用户必须拥有ALTER ANY SEQUENCE 权限才能修改sequence. 可以alter除start至以外的所有sequence参数. 如果想要改变start值,必须 drop sequence 再 re-create.
命令格式如下:
4. 删除 Sequence DROP SEQUENCE test_sequence;
5. sequence属于什么对象
sequence不属于某个表,也不属于某个字段,sequence仅仅属于某个用户。
其实在创建了sequence后,每个表都可以使用这个sequence,但是这样会引起应用的很多麻烦,因此,建议每个表都使用一个sequence。
- JAVA开发程序员之Oracle学习篇
- Java程序员学习之路
- Java程序员学习之路
- Java程序员学习之路
- Java程序员学习之路
- JAVA程序员学习之路
- java学习:java程序员进阶之路
- 黑马程序员--Java学习笔记之Web开发—JavaScript常用触发事件总结
- 黑马程序员--Java学习日记之eclipse开发工具的熟练使用,磨刀不误砍柴工!
- 黑马程序员--Java学习日记之eclipse开发工具的熟练使用
- 黑马程序员之java开发前奏
- 黑马程序员--Java基础之开发前奏
- 黑马程序员-java学习之基础篇(一)
- 黑马程序员-java学习之基础篇(二)
- 黑马程序员-----Java学习笔记之基础篇(一)
- 【黑马程序员】Java学习笔记之面向对象基础篇
- 【黑马程序员】Java学习笔记之面向对象高级篇
- Oracle EBS学习总结之OAF开发
- MTK-call history operate(1)
- Windows VISTA/2008/7安装了SQL 2000后关闭同步中心
- MTK6225-键盘锁状态下拨打紧急电话
- 怎样成长为一个真正的Oracle DBA
- MTK6225 Speed Dial
- JAVA开发程序员之Oracle学习篇
- 成功需要走十步,三五步间最难走
- MTK6225 PhoneBook BootUp
- 在ASP.NET中使用Session常见问题集锦
- MTK-Phonebook bootup(1)
- MTK-Phonebook bootup(2)
- MTK-Phonebook bootup(3)
- 将jboos注册为windows服务
- 关于无法将类型“object”隐式转换为“string”