Oracle数据库基础(安装、基础命令)以Oracle 11g为例

以下都是以Oracle 11g为例,我也不知道别的版本有没有区别 其实顺了一遍还是有点乱,之后如果发现错误会回来改的!


一、安装

win下安装 Oracle 11g 教程:
https://www.hangge.com/blog/cache/detail_2817.html

win10安装报错:https://blog.csdn.net/W_Y_L_/article/details/82702444
注意安装包下载好 一定要全解压到一个文件里面,不然安装时候会报错说少文件


字符集

选择字符集时一定要注意,不一定选Unicode,ZHS16GBK也可以
在这里插入图片描述
选好字符集后如果显示有问题还需要修改系统环境变量
https://blog.csdn.net/weixin_30919235/article/details/96855227
在这里插入图片描述
ps.如果字符集错了,导入备份时候会报这个错

A-02374: conversion error loading table "schema名"."表名"
ORA-12899: value too large for column xxxx (actual: 60, maximum: 50)

ORA-02372: data for row: xxxx : 0X'xxxxxxxxxxxxxxxxxxxx'

连接使用工具 PL/SQL Developer

PL/SQL Developer下载安装见以下博客
https://blog.csdn.net/qq_34602804/article/details/114218054

如果需要远程连接客户端的话,照着这篇博文https://blog.csdn.net/weixin_42637495/article/details/106601011

1.修改安装目录app/……/product/11.2.0/dbhome_1/network/admin/下的listener.oratnsnames.ora的localhost
2.开启防火墙对应端口


关闭Oracle服务

要在Windows的服务中关闭Oracle实例服务+Oracle的监听服务
https://www.php.cn/oracle/451001.html
在这里插入图片描述
(打码那部分就是Oracle实例的名字)
像是做删除实例之类的操作


二、Oracle基础概念

可以再看看:https://blog.csdn.net/wanghai__/article/details/4683983

Oracle是一种关系型的数据库。
关系型的数据库都有这几个概念:database,schema,table,user

我在知乎看到一个大佬的比喻,很形象
https://www.zhihu.com/question/20355738/answer/230743815

如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射user有每个schema(房间)的钥匙。

oracle一个服务就是一个库,库下面是表空间,一个表空间可以有几个不同的数据文件,然后就是表。oracle里的表,每个用户有个缺省的表空间,也就是说这个用户建的表会在这个表空间里面:
a用户建的表ta,用a用户登录可以直接select * from ta这样访问,而其他用户(有权限的)要用select * from a.ta这样来访问。


1.database

Oracle在数据库层面,有几个难分区的概念:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名

在安装11g的时候,如果选择了“创建和配置数据库”,典型安装配置时会让我们填一个全局数据库名:
在这里插入图片描述
这篇博客这样解释Oracle9i https://www.cnblogs.com/ccption/p/3664201.html

数据库名 就是数据库的名称标识,如myOracle, 这种叫法一般只适用于单机;
全局数据库名 就是数据库处于一个网络中的名称标识。
比如数据库宿主机的域为mydomain, 则数据库的全局数据库名为myOracle.mydomain; 实际上myOracle和myOracle.mydomain两者指的是同一个数据库. 即:全局数据库名 = 数据库名+"."+网络位置(宿主机所在的域)

再联系这一篇博文:https://cloud.tencent.com/developer/article/1683759
所以我觉得在Oracle11g中,这里的全局数据库名其实是 创建的实例的名字,也是数据库名

再来写一下我现在对这几个名词的理解:

1) 数据库名

DB_NAME
数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的

查询当前数据名
方法一:select name from v$database;
方法二:show parameter db_name
方法三:查看参数文件。

2) 实例名 & ORACLE_SID

instance_name
在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。

查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance_name
方法三:在参数文件中查询。

show parameter instance只能在cmd命令行用
在这里插入图片描述
instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量,存于注册表。ORACLE_SID必须与instance_name的值一致(SID = Oracle实例,SID是Oracle实例的唯一名称标识

数据库域名:db_domain
全局数据库名:GLOBAL_NAME 全局数据库名=数据库名+数据库域名
服务名:SERVICE_NAME


2.schema+user

A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
Schemas and users help database administrators manage database security.

schema是数据库对象的集合,这个集合包含了各种对象如:tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

Schema是基于用户的,在数据库中创建一个用户,就创建了一个和用户名相同的Shema。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决。
也就是说一个用户一般对应一个 schema,该用户的schema名等于用户名,并作为该用户默认schema。

关于用户及其权限

dba和sysdba的区别:https://blog.csdn.net/huoshuyinhua/article/details/76819827


3.tablespaces(表空间) 和 table

表空间:
这是个逻辑概念,本质上是一个或者多个数据文件的集合。

数据文件:
具体存储数据的物理文件,是一个物理概念。

一个数据文件只能属于一个表空间,一个表空间可以包含一个或多个数据文件。一个数据库由多个表空间组成,一个表空间只能属于一个数据库。


三、文件的路径

1.orapw密码文件

密码文件在这个目录下app/电脑用户/product/11.2.0/dbhome_1/database/
(打码的都是我的数据库名)
在这里插入图片描述
里面放的是sys权限的用户,sys用户以sysdba登陆之后就会存在里面
在这里插入图片描述
https://blog.csdn.net/hongkaihua1987/article/details/51605647

2.参数文件

https://www.cnblogs.com/xqzt/p/4832597.html

dbs和database路径都看一下,9i和11g不一样

pfile: 初始化参数文件(Initialization Parameters Files),Oracle9i之前,ORACLE一直采用pfile方式存储初始化参数,pfile默认的名称为“init+例程名.ora”文件路径:/data/app/oracle/product/12.1.0/dbhome_1/dbs,这是一个文本文件,可以用任何文本编辑工具打开。
参数文件init.ora记录了控制文件的位置

在这里插入图片描述

spfile:服务器参数文件(Server Parameter Files),从Oracle9i开始,Oracle引入了Spfile文件,spfile默认的名称为“spfile+例程名.ora”文件路径:/data/app/oracle/product/12.1.0/dbhome_1/dbs以二进制文本形式存在,不能用vi编辑器对其中参数进行修改,只能通过SQL命令在线修改。

在这里插入图片描述

3.数据文件

数据文件的详细信息记载在控制文件中

查看数据文件

select name from v$datafile;

三、命令

可以看w3cschool的教程
https://www.w3cschool.cn/oraclejc/

1.连接/登陆

sqlplus有几种登陆方式 比如:

C: > sqlplus "/as sysdba"   --以操作系统权限认证的oracle sys管理员登陆

C: > sqlplus /nolog             --不在cmd或者terminal当中暴露密码的登陆方式
SQL> conn /as sysdba
SQL> conn sys/password as sysdba

C: > sqlplus scott/tiger      --非管理员用户登陆

C: > sqlplus scott/tiger@orcl    --非管理员用户使用tns别名登陆

C: > sqlplus sys/password@orcl as sysdba --管理员用户使用tns别名登陆
C: > sqlplus                       --不显露密码的登陆方式
Enter user-name:sys
Enter password:password as sysdba     --以sys用户登陆的话 必须要加上 as sysdba 子句

在这里插入图片描述


2.基础信息

查询服务端字符集
select userenv(‘language’) from dual;
在这里插入图片描述

用户

创建用户
SQL> CREATE USER [用户名] IDENTIFIED BY [密码];
赋予用户DBA权限
SQL> GRANT CONNECT, RESOURCE, DBA TO [用户名];

查看当前用户
SQL> show user

3.建数据库,表空间和表

https://www.cnblogs.com/chanshuyi/p/3821023.html

1 建立数据库最简单的是使用DBCA(Database Configuration Assistant)
在这里插入图片描述
详细步骤+命令行创建:https://blog.csdn.net/hyh17808770899/article/details/106433160

2 表空间建立

--创建临时表空间
create temporary tablespace test_temp
tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;

--创建数据表空间
create tablespace test_data
logging
datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'	//数据文件名(包含全路径)
size 32m	//表空间大小
autoextend on	//设定数据文件自动扩展
next 32m maxsize 2048m
extent management local;

--创建用户并指定表空间
create user username identified by password
default tablespace test_data
temporary tablespace test_temp;

-- 查询当前用户拥有的所的有表空间
select tablespace_name from user_tablespaces;

3 创建表

create table 表名
(
    name varchar(12),
    age varchar(12)
)
tablespace 表空间名;

-- 查看某表空间下的所有表
select tablespace_name, table_name from user_tables
where tablespace_name = '表空间名';

注意:上面的’表空间名’一定要大写。即使你在创建表空间的时候输入的表空间名是小写的,也还是要大写。因为ORACLE在存储表空间的时候自动将名字转化成大写了。


4.备份与恢复

利用自带的expdp和impdp(备份出来的文件如果用file命令看是data)

恢复备份

假设我有一份Oracle备份文件,其相关名称

表空间名: TBS_TEST
schema/username:user_test

首先要创建同名的表空间,表空间如果不够大可以申明两个数据文件

CREATE TABLESPACE TBS_TEST DATAFILE 
  'E:\test01.DBF' size 5G autoextend on next 200M maxsize 30G,
  'E:\test02.DBF' size 5G autoextend on next 200M maxsize 30G;

然后创建备份里面的同名用户

CREATE USER user_test IDENTIFIED BY user_test DEFAULT TABLESPACE TBS_TESTTEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;
GRANT CONNECT TO user_test;
GRANT RESOURCE TO user_test;
GRANT CREATE ANY TABLE TO user_test;
GRANT CREATE ANY VIEW TO user_test;
GRANT CREATE SESSION TO user_test;
GRANT UNLIMITED TABLESPACE TO user_test;
GRANT SELECT ANY DICTIONARY TO user_test;
GRANT ALTER SYSTEM TO user_test;

指定存放导出导入数据的目录名称backup_dir

create directory backup_dir as 'F:\dmp';

--给使用目录的用户赋权限
grant read,write on directory backup_dir to user_test;

最后,在cmd导入备份文件(不是在sql的命令行)

impdp 用户名/密码 dumpfile=备份文件的文件名 directory=backup_dir table_exists_action=replace logfile=xxx

备份导出
https://blog.csdn.net/qq_36891027/article/details/81315425
https://blog.csdn.net/xcymorningsun/article/details/72877156
https://blog.csdn.net/g342105676/article/details/79978076

修改System和Sys的密码
https://www.cnblogs.com/taosim/articles/2516767.html

创建 策略
https://blog.csdn.net/weixin_30787531/article/details/95875798

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shu天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值