Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
分享一下入门使用oracle的基本操作
登录
安装好Oracle之后,
以管理员方式进入cmd,输入
>snrctl
>start
>exit
打开监听服务
SQL>sqlpus / as sysdba
以管理员身份进入
当然,你也可以以普通身份登录
SQL>sqlplus scott/你的密码
我们可以使用
SQL>show user
来查看当前登录的用户
切换用户
普通用户切成管理员
SQL>conn sys/你的密码 as sysdba
管理员切换至普通用户(注:Scott默认密码是tiger)
SQL>conn scott/你的密码
sys用户和system用户
Oracle安装会自动的生成sys用户和system用户
(1)、sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install
(2)、system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager。
(3)、一般讲,对数据库维护,使用system用户登录就可。
注意:也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
创建用户
在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。
create user 用户名 identified by 密码;
注意:密码需要以字母开头
修改密码
概述:如果给自己修改密码可以直接使用
SQL> password 用户名或passw
如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限
SQL> alter user 用户名 identified by 新密码
权限
一般创建用户后要赋予相应权限。因为创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令revoke。
权限分为系统权限和对象权限。
- 何为系统权限?
用户对数据库的相关权限,connect、resource、dba等系统权限,如建库、建表、建索引、建存储过程、登陆数据库、修改密码等。 - 何为对象权限?
用户对其他用户的数据对象操作的权限,insert、delete、update、select、all等对象权限,数据对象有很多,比如表,索引,视图,触发器、存储过程、包等。
执行SELECT * FROM Dba_Object_Size;
语句可得到oracle数据库对象。
SQL> create user xiaohong identified by oracle;
--创建用户叫 xiaohong ,密码 oracle。
SQL> grant connect to xiaohong;
--授权连接数据库的权限给用户。
SQL> grant select on scott.emp to xiaohong with grant option;
--授权 在emp表上的select权限给xiaohong用户,with grant option 代表它可以把这个权限传递给别人
注:with admin option用于系统权限授权,with grant option用于对象授权。
区别:
- 给一个用户授予系统权限带上with admin option时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效。
- 而with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效。
角色
Oracle角色其实就是一组权限的集合,比如我们经常用的DBA、connect、resource等角色,都是Oracle系统为我们定义好的一些常用的角色,一般利用这些角色就可以控制好不同需求用户的权限。
角色分为预定义角色和自定义角色。
上面说到赋予权限,如果有一组用户都需要赋予(或回收)一系列权限,那么一个个操作就会显得麻烦且容易出错。这时就可以定义角色,角色具有相应权限,再直接将相应角色赋予用户。
Oracle中角色可以授予给多个用户,并且一个用户可以设置多个角色。因此,Oracle数据库也提供了自定义角色的功能,方便不同用户的权限授予。例如,可以自定义个一个角色,可以查询、更新特定几个关联表的权限。那么以后但凡有用户想用到这些表的操作权限时,可以直接给该用户设置定义好的角色。
Oracle创建角色
Oracle创建角色分为两个步骤:创建角色、给角色授权:
1、创建角色的语法结构:
create role role_name ;
2、授予角色权限的语法结构:
授予角色权限的语法结构和授予用户权限的语法结构一样,只是授予对象是角色而不是对象,具体语法如下:
--授予系统权限
grant system_privilege|all privileges to role_name
[with admin option]
--授予对象权限
grant obj_privilege|all
on obj_name to role_name
[with grant option]
eg、创建一个具有操作学生信息表(stuinfo)和班级表(class)权限的角色student_role
--创建角色 student_role
create role student_role;
--给student_role授于操作stuinfo、class的操作权限
grant all on student.stuinfo to student_role;
grant all on student.class to student_role;
设置角色
角色创建好后,并不是直接生效,而是要把角色设置给对应的用户后才能生效的。具体语法如下:
grant role_name to user;
概要文件profile
profile是口令限制,资源限制的命令集合
在我们创建用户时,都会为用户指定一个概要文件。概要文件主要是设置用户限制使用数据库资源(主要CPU资源)和Oracle口令参数管理的信息。经常利用Oracle概要文件对数据库用户进行口令管理、指定口令有效期、用户连接时间以及最大空闲等待时间等。
在Oracle系统中,在不给用户指定特定的概要文件时,系统会自动使用默认的概要文件DEFAULT。
Oracle创建概要文件
Oracle创建概要文件的语法结构:
create profile pro_name
limit
[数据库资源参数|口令参数]
删除profile
概述:当不需要某个profile文件时,可以删除该文件。
SQL> drop profile password_history 【casade】
注意:文件删除后,用这个文件去约束的那些用户通通也都被释放了。
加了casade,就会把级联的相关东西也给删除掉
1.账户锁定
概述:指定该账户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令。
例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。
--创建profile文件
SQL> create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
SQL> alter user scott profile lock_account;
2.给账户(用户)解锁
SQL> alter user scott account unlock;
3.终止口令
为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba的身份来操作。
例子:给前面创建的用户test创建一个profile文件,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天。看看怎么做。
SQL> create profile myprofile limit password_life_time 10 password_grace_time 2;
SQL> alter user test profile myprofile;
退出SQLplus:
sql>exit
查看表空间
Oracle数据库在逻辑上可以划分为一系列的逻辑区域,每一个逻辑区域称为一个表空间。
表空间是Oracle最大的逻辑存储结构
使用表空间的好处:
1、突破操作系统对单个文件的限制,突破磁盘空间位置限制。
2、可以实现不同业务系统间数据的分离。
查看当前用户表空间
select * from user_users;
查看Oracle的所有表空间(这个要管理员才可以)
select * from Dba_Tablespaces;
查看数据库实例信息
desc v$instance;
点这里看Oracle自带的系统表
oracle自带的系统表
数据库基本信息查看
1、查看内存分配:
select * from v&sga;
2、看数据文件(路径和名字)
select name from v$datafile;
3、看日志文件
select member from v$logfile;
4、看控制文件
show parameter control file;
文件操作命令
1.start和@
说明: 运行sql脚本
案例:
sql>@ d:\a.sql或是sql>start d:\a.sql
2.edit
说明: 该命令可以编辑指定的sql脚本
案例:
sql>edit d:\a.sql,这样会把d:\a.sql 这个文件打开
3.spool
说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例: sql>spool d:\b.sql
并输入sql>spool off
eg、
sql>spool d:\b.sql;
sql>select * from emp;
sql>spool off;
数据库工作模式
数据库使用归档方式运行时才可以进行灾难性恢复。
归档日志模式和非归档日志模式的区别
- 非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.
- 归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.
- 用
ARCHIVE LOG LIST
可以查看当前模式状态是归档模式还是非归档模式.
归档模式
Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。
一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
查看数据库工作模式。
如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
配置数据库,模式的切换
查看当前模式
archive log list
将数据库启动到归档模式
shutdown //关闭数据库
startup mount //以mount模式启动
alter database archivelog; //将数据库设置为归档模式
或者非归档
SQL>alter database noarchivelog;
打开数据库
SQL>alter database open;
手动归档
alter system archive log current //对当前的联机日志文件(组)进行归档
alter system archive log all //对所有已经写满的重做日志文件(组)进行归档
设置归档路径
使用初始化参数log_archive_dest和log_archive_duplex_dest设置归档路径:
这种方法只能指定两个归档路径:
LOG_ARCHIVE_DEST参数指定主归档路径
LOG_ARCHIVE_DUPLEX_DEST指定次归档路径,而且只能指定本地归档。
如:
alter system set log_archive_dest='d:\oracle\backup' scope=spfile;
alter system set log_archive_duplex_dest='E:\oracle\backup' scope=spfile;
启用自动归档:
LOG_ARCHIVE_START=TRUE
归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,直到归档完成为止。这时只能读而不能写.
运行过程中关闭和重启归档日志进程 :
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START