Oracle讲解
Oracle入门
1.1 oracle物理组件
数据文件
用于存储数据库数据的文件,如表、索引数据等,一个数据库有一个或多个物理数据文件,但一个数据文件只能与一个数据库关联。 日志文件
日志文件用于记录对数据库进行的修改信息等 控制文件
控制文件是记录数据库物理结构的二进制文件
1.2 oracle逻辑组件
表空间
数据库可以划分为一个或多个逻辑单位,该逻辑单位成为表空间。Oracle使用表空间将相关的逻辑组件组合在一起,每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相联系。每一个数据库中都有一个名为SYSTEM的表空间。即系统表空间,可以用于存储数据字典表、系统程序单元、过程、函数、包和触发器等。也可以存储用户表、索引等。 创建表空间代码:
CREATE TABLESPACE worktbs DATAFILE ‘D:\\ORACLE\\ORACLEATDA\\APTECH\\WORKTBS01.DBF’ SIZE 10M
AUTOEXTEND ON; //示例:创建一个临时表空间,注意在创建表空间的时候需要使用SYSTEM用户登录(password:system) CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'd:\\aaa.dbf' SIZE 10M
AUTOEXTEND ON
NEXT 5M MAXSIZE 100M
EXTENT MANAGEMENT LOCAL; /
//示例:创建一个表空间
CREATE TABLESPACE test_data LOGGING
DATAFILE 'd:\\aaa_data.dbf' SIZE 10M
AUTOEXTEND ON
NEXT 5M MAXSIZE 100M
1
Oracle讲解
EXTENT MANAGEMENT LOCAL; /
表空间的其他操作
删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
修改表空间大小
alter database datafile '/path/NADDate05.dbf' resize 100M
移动表至另一表空间
alter table move tablespace room1;
二、建立UNDO表空间(回退表空间)
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;
三、改变表空间状态
1.使表空间脱机
ALTER TABLESPACE game OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项 ALTER TABLESPACE game OFFLINE FOR RECOVER;
2.使表空间联机
ALTER TABLESPACE game ONLINE;
3.使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;
4.使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;
5.使表空间只读
ALTER TABLESPACE game READ ONLY;
6.使表空间可读写
2
Oracle讲解
ALTER TABLESPACE game READ WRITE;
四、删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
五、扩展表空间
首先查看表空间的名字和所属文件
select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files
order by tablespace_name;
1.增加数据文件
ALTER TABLESPACE game
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 100M;
2.手动增加数据文件尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' RESIZE 4000M;
3.设定数据文件自动扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE 10000M;
1.3连接到oracle服务器
监听器协议、地址及相关信息参数配置在listener.ora文件中,ORACLE_HOME\\product\\10.1.0\\Db_1\\NETWORK\\ADMIN目录下,ORACLE_HOME是Oracle软件的主目录。(ADDRESS=(PROTOCOL=TCP)(HOST=host_name)(PORT=1521)) 另外还有一个文件tnsnames.ora文件中,保存了服务器主机名或IP地址、监听端口和数据库SID
1.4 oracle用户管理
Sys是Oracle的超级用户,它只能通过SYSOPER或SYSDBA角色登陆。 默认密码:change_on_install orcl
SYSTEM是Oracle中默认的系统管理员,只能用默认方式登录 默认密码:manager orcl 以上两个用户操作的都是SYSTEM表空间 SCOTT是Oracle的一个示范用户。
3
Oracle讲解
默认密码:tiger
查看当前登录用户使用:show user
使用SYSTEM用户登录进去管理其他用户 创建新用户并授予权限
新用户都有默认的表空间和临时表空间 CREATE USER user
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace] [TEMPPRARY TABLESPACE tablespace]
使用上节创建的临时表空间以及默认表空间创建用户 CREATE USER accp IDENTIFIED BY accp
DEFAULT TABLESPACE test_data
TEMPORARY TABLESPACE test_temp; /
给刚创建的accp用户分配权限 GRANT
CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
ALTER ANY TABLE, ALTER ANY PROCEDURE,
DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO accp; / 或者
GRANT role TO accp;
解释:把用户role拥有的资源访问权限给accp
//导入导出权限
grant exp_full_database,imp_full_database,dba to accp
查看当前用户下的所有用户表: select table_name from user_tables
sqlplusw清屏命令clea scre
-----------------------------------------------查看用户权限---------------------------------------------------------
4
Oracle讲解
查看所有用户
SELECT * FROM DBA_USERS; SELECT * FROM ALL_USERS; SELECT * FROM USER_USERS;
查看用户系统权限
SELECT * FROM DBA_SYS_PRIVS; SELECT * FROM USER_SYS_PRIVS;
查看用户对象或角色权限
SELECT * FROM DBA_TAB_PRIVS; SELECT * FROM ALL_TAB_PRIVS; SELECT * FROM USER_TAB_PRIVS;
查看所有角色
SELECT * FROM DBA_ROLES;
查看用户或角色所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS; SELECT * FROM USER_ROLE_PRIVS;
非PL/SQL的语句在输入”/”后会再次运行
分配权限
GRANT CONNECT TO user
允许用户连接数据库并在数据库中创建表或其他对象 GRANT RESOURCE TO user 允许用户使用数据库中的空间
GRANT CREATE SEQUENCE TO user 允许用户创建序列
GRANT SELECT ON EMP TO user 允许用户查看EMP表中的记录
修改用户口令 ALERT USER user IDENTIFIED BY password 删除用户
DROP USER user CASCADE 删除用户,CASCADE是删除其对应的模式对象
使用system登录
conn system/system@orcl as sysdba; conn system/system
查看所有用户: select * from all_users; 使用accp登录数据库服务器
conn accp/accp
5