解决Oracle中,用户作为SYSDBA可以以任何密码登录
oracle认证方式分为操作系统认证和口令文件认证2种方式,操作系统认证有时候也叫本地认证。
--操作系统认证:即oracle认为操作系统用户是可靠的,即既然能登陆到操作系统那么oracle数据库你也能登陆
--口令文件认证:oracle认证认为操作系统用户是不可信任的,如果要访问数据库,必须进行再次认证。
具体实现如下:
--操作系统认证:
配置sqlnet.ora文件中的参数:SQLNET.AUTHENTICATION_SERVICES=(NTS)
spfile(pfile)文件参数:REMOTE_LOGIN_PASSWORDFILE=('NONE')
这个时候,只要你登陆操作系统oracle用户后,就可以直接conn /as sysdba登陆数据库了。但是不能通过oracle的client去直接连接/as sysdba。如客户端SQLPLUSw或者其它客户端软件直接conn /as sysbd 。
--口令文件认证:
配置sqlnet.ora文件中的参数:SQLNET.AUTHENTICATION_SERVICES=(NONE)
spfile(pfile)文件参数:REMOTE_LOGIN_PASSWORDFILE=('EXCLUSIVE')或('SHARED')
这个时候需要配置口令文件PWDorcl.ora。(orcl为数据库SID)可以通过orapwd命令进行配置口令,具体用法man orapwd。
这种情况下,就是口令认证模式,不能使用本地用户conn /as sysdba 这个时候会报错:ORA-01031 权限不足。你必须使用conn sys/pwd@orcl as sysdba进行登陆:就是说必须提供用户名和密码才能登陆。(orcl 为SID)
系统默认是操作系统认证模式。
另解:
如果用的是Win系统的话,操作系统里面有一个ora_dba组,这个组里面
Members can connect to the Oracle database as a DBA without a password
去掉这个组里的所有成员,这样sys登陆就一定要正确的密码
相关文档:
1.USEREVN()
返回当前用户环境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
1.ISDBA 查看当前用户是否是DBA如果是则返回true
SQL> select userenv('isdba') from dual;
USEREN
------
FALSE
2.SESSION 返回会话标志
SQL> select userenv('sessio ......
-建立表空间(oracle中的tablespace(表空间)就相当于sqlserver的database)
CREATE TABLESPACE data01
DATAFILE 'D:\oracle\ora92\oradata\db\DATA01.dbf' SIZE 200M
UNIFORM SIZE 128k;
#指定区尺寸为128k,如不指定,区尺寸默认为64k
--建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE 'D:\TEMP_DA ......
dba_users 数据库用户信息
dba_segments 表段信息
dba_extents 数据区信息
dba_objects 数据库对象信息
dba_tablespaces 数据库表空间信息
dba_data_files 数据文件设置信息
dba_temp_files 临时数据文件信息
dba_rollback_segs 回滚段信息
dba_ts_quotas 用户表空间配额信息
dba_free_space 数据库空闲空间 ......
AU
ASM的最小分配单元,默认是1M,可以在创建diskgroup时指定。在diskgroup中的每个盘都被切分为很多个AU,可以是1, 2, 4, 8, 16, 32, or 64MB。
File Extent
由一个或多个AU组成,一个file extent总是在一块磁盘上(不跨磁盘分配AU),这里的file extent和数据库中的extent是不同的,我们可以这样理解,这里的file ex ......