Skip to content

Instantly share code, notes, and snippets.

@lihb
Last active June 30, 2022 02:01
Show Gist options
  • Select an option

  • Save lihb/fe768406d26cb46f19dc to your computer and use it in GitHub Desktop.

Select an option

Save lihb/fe768406d26cb46f19dc to your computer and use it in GitHub Desktop.
记录oracle要点和重点

oracle体系:

是由实例(instance)和库文件组成的。

管理员方式连接数据库

C:\>sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 24 22:37:49 2014

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

查看数据库名称命令

两种方法:

1.
SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
orcl
2.
SQL> select name from v$database;//这种常用

NAME
------------------
ORCL

ps:凡是以 v$表名的表都为系统表

关闭数据库命令

2种方法:

1.
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

2.
SQL> shutdown abort; //此方法是强制关闭,少用。
ORACLE 例程已经关闭。

打开数据库命令

SQL> startup;
ORACLE 例程已经启动。

Total System Global Area  431038464 bytes
Fixed Size                  1375088 bytes
Variable Size             289408144 bytes
Database Buffers          134217728 bytes
Redo Buffers                6037504 bytes
数据库装载完毕。
数据库已经打开。

startup命令实际上包含了三条命令来打开数据库。

1.
SQL> startup nomount;  //启动数据库的参数文件
ORACLE 例程已经启动。

Total System Global Area  431038464 bytes
Fixed Size                  1375088 bytes
Variable Size             289408144 bytes
Database Buffers          134217728 bytes
Redo Buffers                6037504 bytes

2.
SQL> alter database mount; // 启动数据库的控制文件

数据库已更改。

3.
SQL> alter database open; // 启动数据库的数据库文件和日志文件

数据库已更改。

查看数据库的状态命令

SQL> select status from v$instance;

STATUS
------------------------
OPEN   //open为正常

要点一

Oracle的功能由管理+开发完成

  • 管理分为逻辑结构和物理结构

    • 逻辑结构:表空间——段——区——数据块

    • 物理结构:数据文件——OS块

ps:逻辑结构中的数据块和是和物理结构中的OS块相对应的。

pps: 一个表空间由一个或者多个数据文件组成,整个oracle是由表空间组成的。

查看表空间命令

SQL> select name from v$tablespace; // 查询系统自带的6个表空间

NAME
--------------------------------------
SYSTEM    //系统表空间
SYSAUX    //系统表空间
UNDOTBS1  //回滚表空间
USERS     //用户表空间
TEMP      //临时表空间
EXAMPLE   //例子表空间

已选择6行。

一般用户的表空间分为数据表空间和临时表空间两种。

自定义数据表空间

SQL> create tablespace tbs1 datafile 'c:\tbs\tbs1.dbf' size 10m //基础语法
  2  autoextend on next 1m   //开启自增模式,每次增加1m
  3  maxsize 20m;   // 最大值为20m

表空间已创建。

ps:其中tbs1为表空间的名字,datafile表示数据文件,**'c:\tbs\tbs1.dbf'**表示数据文件存放的位置,size 10m表示初始大小。

自定义临时表空间

SQL> create temporary tablespace usertemptbs1 tempfile 'c:\tbs\tempdbs1.dbf' //基础语法
  2  size 10m               //初始值为10m
  3  autoextend on next 1m  //开启自增模式,每次增加1m
  4  maxsize 20m;           // 最大值为20m

表空间已创建。

ps:其中usertemptbs1为临时表空间的名字,tempfile表示临时文件,**'c:\tbs\tempdbs1.dbf'**表示临时文件存放的位置,size 10m表示初始大小。

删除表空间命令

SQL> drop tablespace tbs1; //表空间中无数据

表空间已删除。

SQL> drop tablespace tbs1 including contents; //表空间中有数据

表空间已删除。

创建用户命令

SQL> create user test identified by 123; //用户名为test,密码为:123

用户已创建。

切换用户

SQL> create user test identified by 123;  //创建用户

用户已创建。

SQL> conn test/123; 切换用户
ERROR:
ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied  //登录不了数据库,因为没有登录权限


警告: 您不再连接到 ORACLE。
SQL> conn /as sysdba; // 切换到管理员账户
已连接。
SQL> grant connect to test; // 给test账户connect权限

授权成功。

SQL> conn test/123; //再次切换,登录成功。
已连接。

为用户创建的表指定表空间

SQL> create table stu1(id int, age int, name varchar(20)) tablespace tbs1;
create table stu1(id int, age int, name varchar(20)) tablespace tbs1
*
第 1 行出现错误:
ORA-01031: 权限不足 //因为新建的test用户只给了connect权限,没给resource权限(该权限涉及到表的创建、删除以及增删改查)。


SQL> conn /as sysdba;
已连接。
SQL> grant resource to test;  //切换到管理员账户给test账户赋予resource权限。

授权成功。

SQL> conn test/123;//切换回test账户
已连接。
SQL> create table stu1(id int, age int, name varchar(20)) tablespace tbs1; // 建表同时为用户显式的指定表空间

表已创建。

查询用户中的表所在的表空间

SQL> create table stu2(id int, age int, name varchar(20)); //新建表stu2,不显式的指定表空间

表已创建。

SQL>  select table_name,tablespace_name from user_tables; //查询用户中的表所在的表空间

TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
STU1                           TBS1
STU2                           USERS  //默认放在Users表空间中

为用户指定默认的数据表空间和临时表空间

SQL> alter user test default tablespace tbs1; //指定默认的数据表空间

User altered

SQL> alter user test  temporary tablespace usertemptbs1; //指定默认的临时表空间

User altered

SQL> create table stu3(id int, name varchar(30), age int);//新建表stu3,没有显式的给该表指定表空间

Table created

SQL> select table_name,tablespace_name from user_tables;//查看用户的表和表所在的表空间

TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
STU1                           TBS1
STU2                           USERS
STU3                           TBS1  //默认表空间已经改成tbs1了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment