Oracle学习笔记第四天
现在表已经建好了,数据也插入进去了,但是感觉之前的知识还有所欠缺,现在开始查漏补缺一下,中间可能点重复的内容。
数据库基本操作都离不开 CRUT(增删查改)
这篇暂时用来记录用户和表空间的操作
注意:用户和表空间操作只有在系统用户下才能执行,普通用户时没有权限的,但是不清楚有没有权限赋给普通用户,让其可以操作,如果有,那这个用户也不是普通用户了,也是系统用户了。
用户:
-
增
这个之前介绍了,
-
删
注意:添加 cascade 会删除用户下的所有对象(包括表、视图、主键、外键、索引等;但不会删除存储过程、函数、包)。但是如果不加则仅仅只删除用户,一般建议添加,用户都删了,属于它的东西不也没用了吗?如果有用,那还删它干嘛。
drop user 用户名 cascade;
-
查
select * from dba_users; -- 查询dba_users下的所有用户 select username from dba_users; -- 查询dba_users下的所有用户名 select username from dba_users where username='JACK'; -- 查询dba_users下的用户名为JACK的用户 select username from all_users where username='JACK'; -- 查询all_users下的用户 select * from user$ -- 查询所有用户
dba_users:表示数据库所有角色,all_users表示你能管理的所有角色。
-
改
-
修改用户名
update user$ set name = '新用户名' where user# = '之前查出来的Id';
注意:删除数据之后记得commit提交,不然不会生效。但是提交了之后,你会发现还是不能登录,这是数据库没有同步的问题,重启一下数据库就好了,一般公司数据库都跑着,不可能会让你重启,所以我们可以通过强制刷新来刷新数据。
alter system checkpoint; alter system flush shared_pool;
修改密码还有一个方法:就是先将要删除的用户数据导出,然后在导入新增的用户里,再删除要删除的用户。
-
修改密码
alter user 用户名 identified by 新密码;
注意:修改后记得提交数据。
-
表空间:
增:
之前已有新增永久表空间和临时表空间的语句,这里就不多介绍。
删:
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
查:
select * from user_tablespaces; -- 查询所有表空间名字等
select * from user_users; -- 查询默认表空间,临时表空间
select * from dba_free_space; -- 查询表空间空闲情况
select * from dba_data_files; -- 查询数据文件
select * from dba_tablespaces -- 查询表空间状态
select table_name from user_tables; -- 当前用户下的表
select table_name from all_tables; -- 所有用户下的表
select table_name from dba_tables; -- 所有用户表和系统表
改:
-
修改表空间的状态:
-
在线
当表空间的状态为online时,才允许访问该表空间中的数据。alter tablespace 表空间名 online; -- 修改为在线状态
-
离线
当表空间的状态为offline时,不允许访问该表空间中的数据。例如向表空间中创建表或者读取表空间的表灯数据操作都将无法进行,这时可以对表空间进行脱机备份,也可以对应用程序进行升级和维护等。alter tablespace 表空间名 offline parameter; -- 修改为离线状态
其中,parameter表示将表空间切换为offline状态时可以使用的参数。主要可以应用如下的几个参数。
normal
temporary
immediate
for recover -
只读
当表空间的状态为read only时,虽然可以访问表空间的数据,但范文仅仅仅限于阅读,而不能进行任何的更新和删除操作,目的是为了保证表空间的数据安全。alter tablespace tablespace_name read only; -- 修改为只读状态
不过,将表空间的状态修改为read only之前,需要注意如下的事项:
1.表空间必须处于online状态
2.表空间不能包含任何事务的回退段
3.表空间不能正处于在线的数据库备份期间 -
读写
当表空间的状态为read write时,可以对表空间进行正常访问,包括对表空间中的数据进行查询,更新和操作。alter tablespace tablespace_name read write; -- 修改为读写状态
修改表空间的状态为read write,也需要保证表空间处于online状态。
-
-
修改数据文件大小
alter database datafile 'H:\Oracle_data_base\MYTEMPTBS.DBF' RESIZE 1024M;
H:\Oracle_data_base\MYTEMPTBS.DBF:表空间之前那保存的路径。