首页 > 代码库 > Oracle基础知识

Oracle基础知识

一、数据库登录

sqlplus请输入用户名:  输入口令:在命令行输入sqlplus;值得注意的是,以sysdba身份登录时,用户名应填写username as sysdba

二、用户

创建用户

create user username identified by password;

创建用户,并指定表空间

create user username identified by password default tablespace user_data [temporary tablespace user_temp];其中[]中内容可选;该用户登录,创建的任何数据库对象都属于user_temp 和user_data表空间,就不用再每创建一个对象给其指定表空间了

删除用户

drop user user_name cascade;

用户权限      

grant connect,resource,dba to username;     授权revoke ... from  username;                  撤权
更多关于用户、权限、角色的说明可查看如下网页:http://blog.csdn.net/junmail/article/details/4381287 

 修改用户密码

select username,password from dba_users;          查看用户alter user system identified by manager;          修改用户口令 格式 alter user 用户名 identified by 新密码connect system/manager                            现在就可以用此密码链接进行操作了另,若密码是复杂含有特殊字符的,可用双引号来使用

查询所有用户

select * from all_users;

三、表空间

创建临时表空间

create temporary tablespace user_temp tempfile D:\oracle\oradata\Oracle9i\user_temp.dbf size 50m [autoextend on next 50m maxsize 20480m extent management local];    
其中[]中内容可选

创建数据表空间

create tablespace test_data logging datafile D:\oracle\oradata\Oracle9i\user_data.dbf size 50m [autoextend on next 50m maxsize 20480m extent management local];
其中[]中内容可选

删除表空间

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

查看表空间(两种方式)

DESC DBA_TABLES;SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

四、表

创建表

create table tablename(id number(10), name char(10));其中:id与name是字段名;number与char是字段类型

创建表并指定表空间

create table tablename(id number(10), name char(10)) tablespace tablespace_name; 

插入数据

insert into tablename values();

删除表

drop table tablename;

 五、数据库状态

查询(两种方式)

select status from v$instance;select open_mode from v$database; 

检查数据库状态

ps -ef | grep oracle 查看数据库进程

启动和关闭参数说明

[关闭数据库]

有四个参数,含义如下:

Normal  需要等待所有的用户断开连接后才执行关闭数据库任务,所以有时候看起来像命令没有运行一样;在执行这个命令后不允许新的连接。 

Immediate  等待用户完成当前的语句后就断开用户连接,并不允许新用户连接。 

Transactional  等待用户完成当前的事务后断开连接,并不允许新用户连接。 

Abort  不做任何等待,执行强行断开连接并直接关闭数据库 

前三种方式不会丢失用户数据,第四种在不得已的情况下才采用。

[启动数据库]

数据库启动使用startup命令,有三种情况:

(1)不带参数,启动数据库实例并打开数据库,以便用户使用数据库,在多数情况下,使用这种方式; 

(2)带nomount参数,只启动数据库实例,但不打开数据库,在你希望创建一个新的数据库时使用,或者在你需要这样的时候使用;

(3)带mount参数,在进行数据库更名的时候采用。这个时候数据库就打开并可以使用了。

六、日志状态

select * from v$logfile    可查看日志的group、status、type、member;select * from v$log        可查看日志的group、thread#、sequence#、bytes、members、arc、status、first_change#、first_time;

常见status 的值有: 

current  当前日志,即是Oracle正在用于写入的日志;

active  活动但非当前的日志,也就是Oracle使用过,但其中包含未checkpoint的内容,即是说如果数据库非正常关闭,则数据文件需要使用这组日志进行恢复;

inactive  非活动的,其记录的内容已经通过checkpoint保存到数据文件中了。

另archived字段表明该日志是否已归档,可通过查询v$archived_log查询归档日志。

alter system switch logfile;     切换当前日志alter system archive log current;   归档当前日志 alter system archive log all;    归档所有日志
在自动归档模式下切换日志会引起日志归档,日志归档也要求切换日志,所以实际上上述命令的效果可能是相同的

七、 监听

lsnrctl start    启动监听lsnrctl status    查看监听lsnrctl stop     停止监听

八、查询

表查询
select count(*) from tablename;          求tablename表中所有记录的条数select count(coln) from tablename;        求tablename表中coln列所有的记录数,包括重复的select count(distinct coln) from tablename;  求tablename表中coln列所有的记录数,不包括重复的select max(rownum) from tablename;       求tablename表中所有记录的条数
表空间查询
select tablespace_name from dba_tablespaces;                    查看有哪些表空间select table_name from all_tables where tablespace_name=yourtablespace;  查看表空间里有哪些表 注意yourtablespace要大写
数据文件查询
select FILE_NAME,ONLINE_STATUS  from dba_data_files;          查看数据文件的状态select tablespace_name,file_id,bytes,file_name from dba_data_files;  查看数据文件名称、大小和路径
查看服务名
select global_name from global_name;  服务名

查看端口号

“configration and migration tools--Net Manager--本地--服务命名”中看到

九、版本号

查询
select * from V$VERSION;
Oracle积累知识
第一位是我们最常提到的大版本标识,它代表了数据库主要发行版本号;如10g不管是R1还是R2,其版本号的第一位总是10;不同版本号之间预示着存在功能上的巨大差别。
 
第二位代表数据库维护版本发行号,也就是我们常说的R1或者R2。已有的新特性版本号包括:8.1(比较特殊)、9.1、9.2、10.1、10.2和11.1、11.2。从9i开始每一个大版本都有2个发布版本,一般来说R1总是不那么稳定(至少11g之前是这样),通过在R1中引入大量特性后发行并根据用户实际使用情况不断修正Bug,到R2发行时R1中引入的新特性已经日渐成熟,当然按照Oracle的风格在R2中还会引入部分特性,一些特性甚至可能是颠覆性的。另外值得一提的是R1极不稳定这个铁律似乎在11g中被打破了,11gR1的使用率非常之高。
 
第三位代表了Oracle Application Server (OracleAS)的发行版本号;对于Oracle database软件而言这一位总是为0。
 
第四位代表了某个组件的发行版本号。这里说的组件是指我们在使用DBCA创建数据库是选择安装的Component,例如Oracle OLAP、Label Security等,取决于数据库上所打过的Component Patch set补丁集或interim release临时版本,同一个数据库中不同组件可能存在不同的组件版本号。实际使用中该组件发行版本号一般被我们用来指代数据库软件或者某个数据库所打过的Patch set补丁集,Patch set补丁集一般都是些大家伙(1-2GB不稀奇)。在给数据库软件打上Patch set后我们需要给已经存在的数据库升级组件版本,通俗地说是给数据库升级数据字典,这样数据库内的组件版本一般是一致的,如我将一个10.2.0.1的数据库升级到10.2.0.4,那么这个数据库里的组件版本也会是10.2.0.4(不排除说你为某个组件打了特殊的Patch后造成这个组件的版本独树一帜,当然这很少见,也不推荐)。我们可以通过查询DBA_SERVER_REGISTRY视图来了解数据库中的组件版本情况。
 
第五位代表了平台相关发行版本号。通常意义上该位数字受到另一种补丁(不是Patch set)的影响。在10g以后Oracle引入了在某个特定的补丁集的基础上发行的补丁集的更新(PSU-patch set update),用中文说起来十分拗口;通过PSU的发行,Oracle可以针对某个特定的补丁集版本上发生的Bug集中性地修复,例如 10.2.0.4是一个10g使用十分广泛的版本,如果在10.2.0.4上发现了Bug那么就可以将fix合并到PSU中。一般来说PSU会每年的1、4、7、10月份release,最近的一次PSU释放是在2011年的4月,包含了10.2.0.4的第8个PSU也就是10.2.0.4.8。注意Oracle只会为某个大版本上的几个final release制作PSU补丁,目前在10g上保持PSU发布的版本是10.2.0.4和10.2.0.5,而对于10.2.0.3则不再有PSU的支持。可以通过查询registry$history表了解数据库(DB ,not Database Software)的PSU信息。
参考:http://wenku.baidu.com/view/319a52305a8102d276a22ffa