数据库学习整理

数据库学习整理

Oracle数据库

oracle常用语句整理

资料:https://www.cnblogs.com/chinafine/articles/1755405.html

一、sql语句的三种类型
DML(操纵)

insert	update	delete	select

DDL(定义)

create	alter	drop

DCL(控制)

grant	revoke	commit	rollback	savepoint	lock
查看表结构
--命令窗口查看表结构
describe employees;
--sql窗口查看表结构
select * from user_tab_columns where table_name= 'EMPLOYEES';--大写
过滤和排序
#### select	from

算术运算符*	/	+	-

#### 空值commsion_pct

空值是无效的,未指定的,未知的或不可预知的值

空值不是空格或者0。

包含空值的数学表达式的值都为空值

#### 列的别名

三种方式:as 别名	“别名”	直接加

连接符 ||:用途合成列,其中可以使用字符串连接如

SELECT last_name	||' is a '||job_id  AS "Employee Details"

删除重复行:distinct

SQL(数据库)和SQL*Plus(格式化报表)

#### 过滤和排序数据

where子句	等于=	>	<	>=	<=	不等于<>(!=)

between	and	,in(set),like,is(not) null

like模糊查询(% 代表零个或多个字符(任意个字符)。_ 代表一个字符。可同时使用)

escape转义

and	or	not

优先级 算术运算符	连接符	比较符 	not	and	or

字符和日期要包含在单引号中。

字符大小写敏感,日期格式敏感。

##### oraer by子句

asc(升序,默认)	desc(降序)

可以按别名排序,多个列排序(越前优先级越高
单行函数
Oracle查看并修改最大连接数

参考:https://www.cnblogs.com/hjianguo/p/5898367.html

oracle容灾操作(ADG)(遇到问题)

一、adg原理
1.基本名称和概念

Oracle ADG 是一种数据库容灾方案,指的是多个数据库可以拥有相同的数据,一旦某个数据库发生故障,可快速切换到另一个数据库。同时也可以实现读写分离,主库写入,从库读取等等。Oracle adg可配置多个备库,可以是一主一从,或者一主多从的方式构成。

Oracle Adg采用的日志作为储存介质,其原理就是主库的每一个操作都会被记录成日志存储在磁盘上,然后日志通过网络传送给备库,备库接收到该日志后,根据日志内容将数据恢复在备库上。

所以日志又分为两种:
联机重做日志
联机重做日志,称为log,主要作用是记录数据库的每一步操作,每个日志有初始大小,在Oracle 11g版本中,联机重做日志默认50M大小,共有三组联机日志文件。
select * from v$log
归档日志
归档日志,是联机重做日志的归档文件,当某一组的联机重做日志满了以后,就会单独生成该组日志的归档文件。称为 archived_log。
select * from v$archived_log
2.ARCH方式

arch方式是指,主库在被操作过程中,操作记录不断写入联机重做日志文件中(redo日志中)直到该组日志容量被写满,触发归档进程生成归档日志,然后再将归档日志通过网络发送给备库。

LGWR是一个用于将操作写入磁盘的进程,即使它不是LGWR方式,也存在这个进程。

ARCH方式是一种异步的方式,只有当发生日志组切换时,才会生成归档日志传输给备库,然后备库才能同步更新数据。它是一种延时的方式。

一般日志组切换有两种方式,自动和手动。
自动就是当日志组被写满了,需要切换下一个日志组时。
手动就是执行命令强制切换:
切换日志组命令: 	alter system switch logfile;
3.LGWR方式

与ARCH不同的是,LGWR方式中,会在LGWR进程中再分出一个LNS线程,LNS可以是多个的,每一个LNS对应一个备库,当有多个备库时会有多个LNS线程。
LNS是LGWR的小弟。LGWR仍然负责将用户操作写入磁盘redo日志中,同时它会交给小弟LNS一个任务,让LNS负责将这步操作传输给它负责的备库中。因此它是一种实时的方式。

在LGWR中有同步和异步之分:
LGWR SYNC(LGWR + 同步):它的意思是指当用户操作主库时,LGWR写入磁盘 并且 LNS通知备库(有大神说至少一个备库)时,主库的操作才会commit该操作。
LGWR ASYNC (LGWR + 异步):它的意思相比较上面一种,主库只需要等到LGWR将redo日志写入成功即可提交事务,LNS变成了异步通知。
两种方式的对比差别,即LNS线程是同步的还是异步的。如果采用同步,对数据一致性要求非常高,延时要求性稍微低一些,并且备库的异常会影响主库。而异步则不会,但是数据一致性要求会稍低些。

三大模式
最大性能模式(Maximum Performance)

1)该模式是默认模式,可以保证主数据库的最高可用性;
2)保证主库运行过程中不受备库的影响,主库事务正常提交,不因备库的任何问题影响到主库的运行;
4)优点:避免了备库对主数据库的性能和可用性影响;
5)缺点:如果与主库提交的事务相关的恢复数据没有发送到备库,这些事务数据将被丢失,不能保证数据无损失;

如果不设置,数据库默认是最大性能模式,通常工作在LGWR ASYNC方式下 或 ARCH方式下,它是一种异步的,所以数据不能保证完全一致,一旦异步发送数据过程中异常,或者主库出现异常,备库会有一小部分数据损失。

最大可用模式(Maximum Availability)

1)该模式提供了仅次于“最大保护模式”的数据保护能力;
2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;
3)主库找不到合适的备库写入时,主库不会关闭,而是临时降低到“最大性能模式”模式,直到问题得到处理;

该模式只能工作在LGWR SYNC方式下。需要说明的是,即使设置了系统为最大可用模式,但是没有LGWR SYNC方式的配置支持,它会默认转为最大性能模式。

最大保护模式(Maximum Protection)
1)这种模式提供了最高级别的数据保护能力;
2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;
3)主库找不到合适的备库写入时,主库会自动关闭,防止未受保护的数据出现;
4)优点:该模式可以保证备库没有数据丢失;
5)缺点:主库的自动关闭会影响到主库的可用性,同时需要备库恢复后才能提交,对网络等客观条件要求非常的高,主库的性能会因此受到非常大的冲击。

该模式也只能工作在LGWR SYNC方式下。需要说明的是,即使设置了系统为最大保护模式,但是没有LGWR SYNC方式的配置支持,它会默认转为最大性能模式。

二、搭建流程

重要的alert_orcl日志文件
在搭建过程中,少不了有些报错。这些报错原因可在alert_orcl日志文件中寻找。
alert_orcl文件位于diag目录下,或者通过windows搜索功能可以找出来。

(一)日志模式准备(仅主库)

根据上面的ADG原理可以知道,其存储介质和核心是日志,所以在主库一端必须设置为强制日志模式和归档模式,才能开展Adg搭建。
但是在搭建之前,需要知道什么是数据库的mount、nomount、open状态、shutdown immediate命令’。

nomount:读参数文件,启动实例和后台进程,不装载数据库。
mount:打开控制文件,装载数据库但是不打开数据库。
open:在装载了数据库的前提下,打开数据库。
shutdown immediate:关闭数据库、卸载数据库、关闭操作例程。

sqlplus 通过 sys as sysdba 账户登入,密码为空
oracle adg 搭建的第一步就是要求主库配置为日志和归档模式。若要对数据库进行配置,则要求装载数据库,并且处于未打开模式。即 mount模式。
刚刚登入后oracle 会为我们连接上一个例程,并打开了数据库。因此我们需要退出oracle 例程和数据库,重新通过mount模式打开。
shutdown  immediate;
startup mount;
接着设置为强制日志模式和归档模式
alter database force logging;
alter database archivelog;
查看日志模式和归档模式是否生效;
archive log list;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FT9gpYZR-1643160757619)(D:\桌面\学习整理\数据库学习整理.assets\image-20211029154326165.png)]

日志模式和归档模式开启后,主库的操作都会记录在联机重做日志REDO LOG中。这里需要介绍两种REDO LOG日志oracle安装好后,

online redo log 是默认存在的,一共有三组,大小为50M,用于记录数据库的操作。

standby redo log是需要手动加上去的,其作用和online redo log 一样,但是只在数据库处于备库角色时才生效。当主库将日志数据传输过来后,备库会将这些信息存于standby redo log 中。

standby redo log 虽然是用于备库,但是如果在主库创建了,后面复制数据库过程中备库自然就会有了,同时当主库出现问题,主库和备库的角色也可以直接互换。

下面开始创建standby redo log 。
standby redo log 的创建组数,oracle 官方建议最好比主库的online redo log多一组。

所以这里我们创建4组standby redo log。命令中路径为自己本机需要保存standby redo log 的路径。

alter database add standby logfile group 4 ('/data/app/oracle/oradata/orcl\standby_log04.log') size 50M;
alter database add standby logfile group 5 ('/data/app/oracle/oradata/orcl\standby_log05.log') size 50M;
alter database add standby logfile group 6 ('/data/app/oracle/oradata/orcl\standby_log06.log') size 50M;
alter database add standby logfile group 7 ('/data/app/oracle/oradata/orcl\standby_log07.log') size 50M;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-186zkLjF-1643160757620)(D:\桌面\学习整理\数据库学习整理.assets\image-20211029155255211.png)]

看online redo log 的日志情况,可以通过下方命令:

select * from v$log;

通过下面命令查看standby redo log 的情况;

select * from v$standby_log;
(二)tns通信准备(主备)

通过第一节,配置了主库的模式和standby日志准备,那么日志怎么准确的传输到备库呢?
这一节,就是建立主备机的网络通信。
两个不同的主机,拥有不同的ip地址,主库要想准确的将日志传输到备库,肯定需要一个备库主机的ip地址和端口号,不然如何进行端口到端口的数据通信呢!这个需要在什么地方配置呢?
路径:在 %ORACLE_HOME%/NETWORK/ADMIN 文件夹下,有三个文件:

listener.ora
tnsnames.ora
sqlnet.ora

listener.ora 是用于服务器角色的,tnsnames.ora是用于客户端角色的,sqlnet.ora 不做讨论。
本机相对于其他主机而言,既可能是服务器,也可能是客户端。所以listener.ora 和 tnsnames.ora都需要配置

先看tnsnames.ora 文件

cat tnsnames.ora 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kq3BherK-1643160757621)(D:\桌面\学习整理\数据库学习整理.assets\image-20211029160201778.png)]

看最下面一个叫ORCL的,ADDRESS是它的通信协议、IP、端口号。SERVICE_NAME 是它要连接的数据库名称。而ORCL 就相当于一个别名,oracle 会通过这个别名找到它后面这一堆配置。
如果要使主库与备库通信,tns配置少不了。因此我们可以手动增加TNS内容,如下:

# 这是我主库的 ip和端口,主库取名为 MAIN,要连接的数据库名为 orcl
MAIN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 116.62.27.196)(PORT = 1521))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)
)
)
# 这是要通信的备库IP 和端口,取名为 BACK,要连接的数据库名为 orcl
BACK =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.115.130)(PORT = 1521))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)
)
)

tnsnames.ora 配置完成了。下面看listener.ora。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1z2us4gb-1643160757621)(D:\桌面\学习整理\数据库学习整理.assets\image-20211029160622528.png)]

这个文件中,其中LISTENER是监听服务器的配置,DESCRIPTION_LIST是一个列表,可以用很多DESCRIPTION,在DESCRIPTION中第一个ADDRESS不做讨论,是oracle内部使用。
第二个ADDRESS中,HOST为localhost,localhost也是一个别名,它是通过本地hosts文件映射成一个ip地址,通常是127.0.0.1。而在tnsnames配置中,HOST的中的ip是一个局域网IP或者公网IP。如果LISTENER中不配置这个ip的监听,就可能会出现数据库监听不到,出现无监听程序等问题。
因此可以在ADDRESS下方继续添加:

(ADDRESS = (PROTOCOL = TCP)(HOST = 116.62.27.196)(PORT = 1521)

最后一点,配置好后必须重启监听器!!!

退出oracle,回到cmd:
停止命令:	 lsnrctl stop
启动命令:	 lsnrctl start
查看监听状态:  lsnrctl status

数据库备份、恢复、迁移

参考资料:https://www.oraclejsq.com/oraclebf/010400800.html

Oracle备份概念

Oracle备份就是把数据库的内容全部复制出来保存到本地或者其它存储空间上,Oracle备份主要分为物理备份和逻辑备份两种。

物理备份

物理备份就是我们常听到的热备份和冷备份。热备份又叫归档模式备份,就是Oracle数据库在开启归档模式的情况下进行备份。冷备份又叫非归档模式备份,就是把数据库模式设置为非归档模式时对数据库进行备份。

归档模式指的是Oracle对重做日志组中的日志文件进行覆盖时,会把要覆盖的重做日志的内容进行归档,复制到归档目录下。

非归档模式,就是直接对日志文件进行覆盖,不做记录。因此,非归档模式只能进行冷备份,并且只能做完全备份。而归档模式可以做热备份,并且可以做增量备份。

逻辑备份

Oracle逻辑备份指的是对数据库数据进行导出操作,利用EXP命令操作或者利用数据泵技术(EXPDP)进行导出操作,然后可以利用对应的导入命令(IMP/IMPDP)把导出的DMP文件进行导入到新的数据库,从而达到数据恢复的目的。

逻辑备份的目的主要是用于备份各个时间点的数据状态,经常用来进行数据迁移、进行数据库升级、进行跨库迁移表等。

Oracle恢复概念

Oracle恢复就是把数据库备份出来的数据恢复到数据库当中,数据库恢复可以分为完全恢复和部分恢复两种之分。完全恢复指的是恢复到故障当时状态,部分恢复指的是只能恢复到故障之前某个时间点的状态。

Oracle恢复又可以备份方式的不同,可以分为物理恢复和逻辑恢复。物理恢复指的是把物理备份的文件还原到原来的文件位置即可完成恢复。逻辑恢复指的是把导出的DMP文件,导入到数据库当中,从而完成恢复。

Oracle物理备份和恢复数据库

Oracle物理备份是把Oracle数据库当中的文件备份到另外一个存储空间上,以备下次进行物理恢复。因此,物理备份和恢复的方式是一种比较快捷简便的保护数据库安全的策略。主要有脱机和联机两种方式进行物理备份和恢复,就是我们常说的冷备份和热备份。

脱机备份(冷备份)

数据库管理员在关闭数据库服务的情况下,对数据库要进行备份的文件进行拷贝存储到另外一个存储空间上。然后要恢复的时候,把备份的文件重新拷贝到数据库对应的文件目录下,完成数据库恢复。

进行物理备份的文件主要包括数据文件、日志文件、控制文件。具体的文件位置可以通过数据字典:v_$datafile、v_$logfile、v_$controlfile进行查询。结果如下:
select t.name from sys.v_$datafile t;
select t.member from sys.v_$logfile t;
select t.name from sys.v_$controlfile t;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eIEKov7m-1643160757622)(D:\桌面\学习整理\数据库学习整理.assets\image-20211111101505953.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6LdUpd4-1643160757622)(D:\桌面\学习整理\数据库学习整理.assets\image-20211111101612720.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRH2FmVK-1643160757623)(D:\桌面\学习整理\数据库学习整理.assets\image-20211111101427119.png)]

联机备份(热备份)

联机备份又称为热备份,是在数据库开启归档模式情况下进行备份的。Oracle数据库在默认安装时是不开启归档日志的。可以通过命令 archive log list 进行查看

设置数据库为归档模式可以通过命令行进行修改,命令如下:

--设置数据库的日志模式为归档模式
alter system set log_archive_start=true scope =spfile;
--关闭数据库
shutdown immediate;
--启动数据库实例,但是不启动数据库
startup mount;
--设置当前数据库启用归档日志模式
alter database archivelog;
--启动数据库
alter database open;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13fb7XAm-1643160757623)(D:\桌面\学习整理\数据库学习整理.assets\image-20211111102012724.png)]

归档模式下备份表空间

在开启归档模式下,可以实时备份表空间的数据文件了,不需要像冷备份一样要关闭数据库了,可以直接进行数据文件的备份,主要步骤如下:

查看数据库所有默认表空间,可以通过数据字典dba_tablespaces进行查询

select * from dba_tablespaces;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4TLX75A5-1643160757624)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122115237342.png)]

1、开始备份表空间STUDENT,命令如下:

alter tablespace students begin backup;

2、找到数据文件对应的位置,把它复制到另外一个地方去,通过数据字典dba_data_files进行查询,如下图:

select * from dba_data_files

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5tXfBOI-1643160757625)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122115543984.png)]

3、结束表空间备份,在备份完数据文件后,执行结束命令,完成表空间的备份。命令如下:

alter tablespace users end backup;
恢复表空间的数据文件

通过实例模拟student表空间的数据文件被误删和恢复的过程

1、关闭数据库服务器,然后把表空间STUDENT的数据文件STUDENT.DBF进行删除(模拟被认为误删操作),关闭数据库的命令是shutdown immediate。发现无法关闭数据库。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjLfgvJT-1643160757625)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122142534841.png)]

2、在恢复数据文件之前,我们需要把缺失的数据文件设置成脱机状态,并删除,命令如下:数据库成功关闭

alter database datafile 5 offline drop;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rGrxR7N-1643160757626)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122142812519.png)]

3、恢复数据文件:把备份好的数据文件复制回原来的位置,然后通过文件编号对数据文件进行恢复,命令如下:

chown oracle:oinstall student.dbf  更改恢复文件权限
recover datafile 5;	进行恢复

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZRFdNptP-1643160757626)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122145437072.png)]

4.在恢复完数据文件后,还需要把数据文件设置为联机状态,命令如下:

alter database datafile 6 online;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-docB81vX-1643160757627)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122145536262.png)]

Oracle逻辑备份和恢复

Oracle逻辑备份是数据库管理员(DBA)使用最多也是最经常使用的备份手段,Oracle逻辑备份就是使用EXP/EXPDP工具对数据进行备份成DMP文件,Oracle逻辑恢复就是使用IMP/IMPDP工具把DMP文件中的数据导入到数据库进行恢复。

1.Oracle exp导出数据

Oracle exp工具可以选择性的导出数据库的对象和表数据,导出DMP文件以备以后进行数据恢复。下面分别讲解如何通过EXP导出数据库的表、方案、表空间、数据库四个不同对象的数据。

使用EXP工具可以使用第三方工具PL/SQL DEVELOPER进行导出,也可以直接通过DOS命令行窗口直接进行导出。

注意:ctl+d可以退出

EXP 导出表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EUii2PV-1643160757627)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122154108031.png)]

但是在实际应用当中,我们一般是直接用一次性命令直接导出想要的数据对象。不需要这样子一步一步的选择。

EXP导出表数据命令:(注意权限问题,需要在目标目录有写权限)

exp yt/111111@orcl file=\learn\employees.dmp tables=employees buffer=4096 log=\learn\employees.log
命令解析:
1、file指定数据备份文件的保存地址。
2、tables指定要备份的表结构,可以导出多个表,通过(table1,table2...,tablen)进行选择。
3、buffer指定数据缓存区的大小。
4、log指定进行导出的日志文件的保存地址。

EXP导出带条件的表数据:(位置在当前目录,file?)

exp yt/111111@orcl file=\learn\employees.dmp tables=employees buffer=4096 log=\learn\employees.log query="'where job_id=it_prog'"
命令解析:
1、query指定要添加的条件,把表中的数据进行过滤导出。
EXP导出用户

EXP导出用户命令结构:

exp yt/111111@orcl file=\learn\student1.dmp owner=yt buffer=4096 log=\learn\student1.log
命令解析:
1、owner 指定要导出的用户的用户名,但是前提条件是登录的用户得具有访问其它用户对象的权限。一般是使用DBA用户进行登录。可以支持多用户导出,使用逗号“,”进行隔开。
EXP导出表空间

EXP导出表空间命令结构:

exp yt/111111@orcl file=student2.dmp tablespaces=student buffer=4096 log=student2.log
命令解析:
1、tablespaces指定要导出的表空间,但是前提条件是登录的用户得是DBA用户。可以支持多表空间一起导出,使用逗号“,”进行隔开。
EXP导出数据库

EXP导出数据库命令结构:

exp yt/111111@orcl file=student3.dmp FULL=Y buffer=4096 log=student3.log
命令解析:
1、full=Y指的是要导出的是整个数据库,但是前提条件是登录的用户得是DBA用户。
2.Oracle EXPDP导出数据

EXP导出数据,在数据量较大的情况下,由于导出的效率较低,所以EXPDP是Oracle 10g开始引入的数据泵技术,数据泵技术是在数据库之间或者在数据库与操作系统之间传输数据的工具。

EXPDP是数据泵导出的工具,它可以把数据库中的对象选择性的导出到操作系统中。比如:表、用户、表空间、数据库等。

使用EXPDP工具与EXP不同的是,在使用EXPDP时要先创建目录对象,通过这个对象就可以找到要备份数据的数据库服务器,并且使EXPDP工具备份出来的数据必须存放在目录对象对应的操作系统的目录中。

创建目录对象:(可以创建目录,但是实际不存在文件夹,也会创建成功)

CREATE DIRECTORY directoryname AS  'filename';
语法解析:
(1)、directoryname:创建的目录名称。
(2)、filename:存放数据的文件夹名。

给使用目录的用户赋权限:

新创建的目录对象不是任何用户都可以使用的,只有拥有该目录使用权的用户才能使用,所以要为使用该目录的用户赋一个权限。导出的数据都在yt用户下,那么赋权限的语句如下:
GRANT READ,WRITE ON DIRECTORY directoryname TO yt;
这里,directoryname就是创建的目录名称。

案例1、创建目录对象dir并给yt用户授予读写权限,代码如下:

--创建目录对象dir,数据文件存放的路径为d:/expdpdi
create directory dirs as '/learn/bakup/';
--给用户授予目录对象的读写权限
grant  read,write on directory dirs to yt;

3、选择性导出数据库数据

Oracle expdp导出表数据:

注意目录的权限 oracle:oinstall

expdp yt/111111@orcl dumpfile=employees.dmp logfile=employees.log tables= employees directory=dirs
命令解析:
(1)dumpfile指定导出的dmp文件的名字。
(2)logfile指定导出时的日志文件的 名字。
(3)tables指定备份的表结构,可以导出多个表,通过(table1,table2...,tablen)进行选择
(4)directory指定导出的目录对象,目录对象中有对应的数据文件保存在哪个目录下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfPBL4m1-1643160757628)(D:\桌面\学习整理\数据库学习整理.assets\image-20211122201618062.png)]

Oracle expdp导出表数据(带条件):

expdp yt/111111@orcl dumpfile=employees_1.dmp logfile=employees_1.log tables= employees directory=dirs 
query="'where sex=1'"
query:指定要添加的条件,把表中的数据进行过滤导出
Oracle expdp导出表空间:
expdp yt/111111@orcl dumpfile=student_tablespace.dmp logfile=student_tablespace.log tablespaces=student directory=dirs
tablespaces:指定要导出的表空间的名字。
Oracle expdp导出用户:
expdp yt/111111@orcl dumpfile=yt_user.dmp logfile=yt_user.log owner=yt  directory=dirs
owner:指定要导出的用户,前提条件是具有该用户的操作权限
Oracle expdp导出整个库:
expdp yt/111111@orcl dumpfile=full.dmp logfile=full.log full=y  directory=dirs
full=y指的是导出整个数据库,前提是该用户具有管理员权限。
3.Oracle逻辑导入数据(IMP/IMPDP)

Oracle逻辑导人数据是逻辑导出数据的逆过程,导人数据可以使用与EXP对应的IMP工具,也可以使用与EMPDP对应的IMPDP工具。本文将分别讲述如何使用IMP和IMPDP工具完成数据的导入工作,Oracle逻辑导入数据经常用来进行备份的恢复和用来做数据迁移,把要迁移的数据进行EXP/EXPDP导出后,再导入到另外一个数据库上。

使用IMP导入数据

IMP导人数据是将数据库中之前使用EXP导出的数据导入到数据库当中。IMP导入的方式也是在DOS命令窗口下完成的,根据不同的DMP文件可以进行不同方式的导入,具体如下:

imp student/123456@orcl file=d:/student.dmp log=student.log fromuser=student touser=teacher TABLES=(stuinfo) buffer=819200
语法解析:
1、使用 imp 导入之前导出student.dmp文件中的学生信息表(stuinfo)。
2、tables指定要导入的表结构,在导入之前要确定dmp文件当中是否含有该表数据。
3、fromuser指定dmp文件中是从student用户导入到目标数据库的teacher用户。在imp导入之前要确定teacher用户下是否已经存在该表,不然会报错。
4、我们选择导入表数据时,会把表相关的索引和触发器一起导入进来。
使用IMP导入用户语法:
imp student/123456@orcl file=d:/student.dmp log=student.log fromuser=student touser=teacher  buffer=819200
语法解析:
1、只需要通过fromuser指定要导出的用户,通过touser指定要导入的用户,就会把该用户中所有的数据对象和数据全部导入。
使用IMP导入一个完整数据库:
imp student/123456@orcl file=d:/student.dmp log=student.log  full=y ignore=y buffer=819200
语法解析:
1、通过full=Y指定了要导出的是完整数据库,但是前提DMP数据文件中是导出的全库数据。全库导入一般是用来做数据备份以备恢复使用,或者用来搭建测试环境时使用。
impdp导到指定用户下:
impdp student/123456@orcl DIRECTORY=dir DUMPFILE=student.dmp  logfile=student_imp.log SCHEMAS=student
1、directory指定的是目录对象,这里的目录对象就是在使用expdp导出时创建的目录对象。
2、dumpfile指定的是要导入的dmp文件,
3、SCHEMAS指定要导入的数据是导入到哪个用户下。
impdp导入表空间:
impdp student/123456@orcl DIRECTORY=dir DUMPFILE=student_tablespace.dmp logfile=student_imp.log TABLESPACES=student
语法解析:
1、tablespaces指定要导入的是表空间下的所有对象和数据,这里导入的表空间为student表空间。
impdp导入数据库:
impdp student/123456@orcl DIRECTORY=dir DUMPFILE=student_full.dmp logfile=student_imp.log full=y
语法解析:
1、full=Y指定要导入的是数据文件中全库数据,包括各种数据库对象。这里前提是dmp文件是全库导出的数据文件。
impdp导入追加数据:
impdp student/123456@orcl DIRECTORY=dir DUMPFILE=student.dmp SCHEMAS=student TABLE_EXISTS_ACTION=append
语法解析:
1、利用 table_exists_action=append指定要导入的dmp文件中,当存在表已经在库里存在的情况下,会直接对表数据进行追加,而不会报错。
Oracle RMAN

RMAN是Recovery Manager的缩写,为Oracle的恢复管理器,是Oracle数据库推荐提供的一种恢复和备份数据库的工具,也是数据库管理员管理数据库常用的工具之一。

RMAN的特点:
1、它可以备份数据库、表空间、数据文件、控制文件以及日志文件。而exp备份是不能进行控制文件、数据文件和日志文件的备份。
2、压缩备份可以只备份发生变化的内容。这是exp完全做不到的事情。
3、集成了第三方磁带媒介软件。
4、可以在Oracle数据库的目录中存放备份信息,意思就是可以用数据库来存储备份的信息,这样子更好的对备份信息进行管理。
RMAN常用概念

在我们使用RMAN进行Oracle数据备份和恢复管理时,会经常遇到一些常用的概念,这里做个解释。主要有目标数据库、RMAN客户端、闪回区、介质管理、恢复目录等。

目标数据库:当在使用RMAN进行数据库备份时,目标数据库就是使用RMAN工具进行备份和还原的数据库,即我们要进行备份的对象。

RMAN客户端:当使用RMAN工具进行数据备份时,使用的前提就是计算机或服务器要拥有RMAN客户端。
一般情况下,在Oracle数据库安装时,就会默认安装了RMAN客户端,因为这个是Oracle官方推荐的备份工具。通常安装的目录在Oracle的安装目录下。

闪回区:在Oracle10g后提出闪回区的概念,闪回区(Flash Recovery Area) 是在磁盘上的一个区域,存放与数据库的备份和恢复相关的一些文件,使用闪回区能够方便用户备份和还原数据库。

介质管理:介质管理设备通常被称为SBT (System Backup to Tape)设备,也就是把数据库备份到磁带中。RMAN通过介质管理器将数据备份到磁带上,介质管理器通常由第三方软件商提供。它将数据块中的数据流从RMAN通道进程传递到对应的磁带上,是一个数据传输的中介。

恢复目录:恢复目录(Recovery Catalog)是一个独立的数据库,用于存放目标数据库的备份。可以存放一个目标数据库,也可以多个。
RMAN使用恢复目录

我们知道RMAN中恢复目录是一个独立的数据库,是用来存放目标数据库的备份信息。在我们使用RMAN进行备份时,使用恢复目录进行备份信息的存储是Oracle官方推荐的一种方式,因为这种方式对比使用控制文件存储更为节省空间、更安全。

创建恢复目录

Oracle创建恢复目录时,为了数据安全起见,一般会把恢复目录的数据库创建在另外一个Oracle服务器上,而不是在同一个数据库中或者同一个服务器上,因为防止出现服务器宕机,导致数据文件一起丢失,而不能进行恢复,但是这里为了演示,就直接把恢复目录同时创建在本机上。

在创建恢复目录时还要考虑数据库的容量,这个容量的大小当然要取决于目标数据库容量的大小,这里会创建一个100M大小的表空间,专门单独存放恢复目录的数据。

创建恢复目录的步骤分为创建恢复目录数据库并创建用户、给恢复目录用户赋角色和权限、创建恢复目录三个步骤。
1、在本地创建一个恢复目录专用的用户RM(这里我们就不独立创建一个远程的数据库和数据库用户),具体语法如下:
--创建恢复目录专用的表空间rmtablespace
create tablespace rmtablespace
datafile '/data/app/oracle/oradata/orcl/rmtablespace.DBF'
size 100m
autoextend on next 10m maxsize 500m
permanent
extent management local;

--创建用户rm
create user rm--用户名
  identified by "123456"--密码
  default tablespace rmtablespace--表空间名
  temporary tablespace temp --临时表空间名
  quota unlimited on rmtablespace--表空间无限制
  profile DEFAULT    --数据文件(默认数据文件)
  account unlock-- 账户是否解锁(lock:锁定、unlock解锁)
2给恢复目录用户rm授权限
只创建一个数据库的用户是不能实现RMAN备份与恢复工作的,还需要给该用户赋予权限和角色。恢复目录用户应该拥有数据库管理员的权限,并在此基础上还要拥有RECOVERY_CATALOG_OWNER的权限。具体授权语法如下:
-- 授权系统管理员权限
grant dba to RM;
grant connect to RM;
grant resource to RM;
--授权拥有恢复目录权限
grant recovery_catalog_owner to RM;
3、创建恢复目录
创建好恢复目录的用户,并进行相应的授权后,就可以创建恢复目录了,创建恢复目录是在DOS界面进行操作的。
(1)首先进入恢复目录管理器(进入命令行输入RMAN)
(2)通过创建好的恢复目录用户进行登录连接到恢复目录数据库
	connect catalog rm/123456
	连接到恢复目录数据库,就可以通过命令行创建恢复目录了,具体命令如下:
	create catalog
至此,RMAN的恢复目录已经创建完毕。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UP1qhzxF-1643160757628)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124102203176.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDRshrf2-1643160757629)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124103233060.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NURKg1A1-1643160757629)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124103404628.png)]

RMAN连接恢复目录

前面已经创建好了恢复目录,在我们使用RMAN进行备份时,要连接到恢复目录才能够进行数据备份。连接到恢复目录的方式也是在DOS的命令行上就可以直接操作。

RMAN连接恢复目录语法:
rman target user/password@servicename catalog user/password@serviecename
语法解析:
1、target指定的是目标数据库(既是要进行备份的数据库)。
2、catalog后面指定的是恢复目录的数据库。
利用上面的语法进行连接刚刚创建好的恢复目录
rman target yt/111111@orcl catalog rm/123456
(connect target yt/111111@orcl
resync catalog;)
遇到没有权限的问题,注意file=$ORACLE_HOME/dbs/orapw+$ORACLE_SID(区分大小写)
orapwd file=$ORACLE_HOME/dbs/orapwORCL password=oracle entries=10 force=y
grant sysdba to yt;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aTljlYx2-1643160757630)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124115028951.png)]

这里连接恢复目录时,要注意假如恢复目录在本地数据库上,那实例名就不用填,一般实际开发环境中,恢复目录的数据库都会创建在远程服务器上,所以要填上实例串。

要配置tns.ora或者ip:1521@sid

RMAN通道分配

RMAN通道分配是我们进行RMAN备份时经常提起的一个概念,RMAN通道分配就是确定连接数据库备份的设置个数,每设置一个设备就代表RMAN会自动启动一个服务器会话,由此来完成数据库的备份与恢复的操作。这其中通道指的就是某个设备(可以是磁盘或磁带等其他介质)和数据库进行关联。

通道分配有手动分配和自动分配两种,其中手动分配通道时要使用run命令实现,自动分配则只需要使用configure命令即可完成。

RMAN手动通道分配

RMAN手动通道分配指的是根据用户自己定义的通道完成数据库备份工作,并且如果在恢复目录中定义好了手动通道分配,就会优先使用手动分配。手动通道分配是在RMAN命令中利用RUN命令完成分配工作。

RMAN手动通道分配语法:
run
{
 allocate channel  ch_name1 device type  typename1;
 allocate channel  ch_name2 device type  typename2;
 ....
 backup ...
}
语法解析:
1、allocate channel指定要分配的通道名称,后面跟着通道名称。
2、device type 指定介质的类型。其中typename可以是磁带(sbt)、磁盘(disk)。
3、backup是备份数据集的关键字。backup后面可以跟着要进行备份的数据库对象,比如表空间或用户等。

例1、利用手动通道分配备份student表空间。

1、首先把目标数据库注册到恢复目录当中再进备份,在RMAN命令下通过register database命令进行注册:
register database;
2、利用RUN命令手动备份表空间student,命令如下:
run
{allocate channel  c device type  disk;
 backup tablespace student;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FH9Sy7No-1643160757630)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124150916783.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrqVBkZF-1643160757631)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124151147413.png)]

注意:

1、从图中可以发现,利用通道进行备份表空间,在备份完后,通道会进行释放。

2、在使用RUN命令进行备份前,一定是得在RMAN命令状态下,而且是得连接到恢复目录和目标数据库的前提下,才能进行备份。

例2、利用多通道备份student表空间。

使用通道进行备份是可以通过定义多个通道,从而提高备份的效率。也就是利用多个通道完成数据库的备份工作。代码如下:

run
{allocate channel  c1 device type  disk;
 allocate channel  c2 device type  disk;
 backup tablespace student;
}
语法解析:
1、这里的两个通道的名字是不能重复的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UISpzjnX-1643160757631)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124151830634.png)]

RMAN自动通道分配

RMAN自动通道分配,顾名思义就是数据库自己定义分配的通道的数量和名称,不需要管理员自己手动进行通道分配。但是在进行数据备份之前,必须为目标数据库定义一下自动通道分配的参数,比如介质的类型、通道的最大个数以及默认的介质类型。命令如下:

CONFIGURE DEVICE TYPE typename PARALLELISM n
CONFIGURE DEFAULT DEVICE TYPE TO typename
语法解析:
1、configure是指定自动通道分配的配置信息的关键字。
2、typename指定介质的类型,PARALLELISM n指定通道分配的个数。
3、default指定默认的设备的介质类型。

例3、定义目标数据库的自动通道分配的配置参数,再进行自动备份student表空间。

CONFIGURE DEVICE TYPE disk PARALLELISM 3;
CONFIGURE DEFAULT DEVICE TYPE TO disk;
backup tablespace student;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XzLcRsjP-1643160757631)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124153104601.png)]

从上图,可以发现直接使用backup备份集命令进行表空间备份时,会自动分配三个通道进行表空间备份,通道的名字分别为ORA_DISK_1到3。那么这种就是使用了自动的通道分配。

Oracle RMAN备份

Oracle RMAN备份集是用来存储数据库的备份信息,RMAN使用BACKUP命令对目标数据库进行数据备份。

RMAN一个备份集可以存储一个或多个文件的备份信息,所以说备份集经常用在需要同时备份多个数据文件的情况。每一个备份集是由多个备份片组成的,备份片是一个单独的文件,并且备份片的大小也是有限制的。如果没有限制备份片的大小,那么在备份集中只能存在一个备份片。

RMAN对Oracle数据库备份,就是利用BACKUP命令把要备份的数据库对象备份成备份集,具体命令如下:

BACKUP [level] [backup_type][option]
语法解析:
1、level:指的是备份的增量,可以是1、2、3、4或者FULL, FULL代表的是全备份。
2、backup_type:指的是要进行备份的数据库对象,这里可以是database (数据库)、datafile (数据文件)、tablespace (表空间)、archivelog all (备份归档日志文件)等对象。
3、option:一个可选项,包括channel (用于指定备份所使用的通道)、maxsetsize (定义备份集的最大值)等信息。

例1、利用backup命令备份users表空间,具体命令如下:

backup full tablespace users;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BB7rqZD8-1643160757632)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124153459376.png)]

在我们进行全库备份或表空间备份时,在未开启归档模式的情况,只能进行冷备份,就是要把数据库关闭并启动mount,但是在开启归档模式下,就可以进行热备份,笔者的数据库就是在开启归档模式下进行的热备份。

例2、利用backup命令进行全库备份。代码如下

backup full database;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIEMGiwC-1643160757632)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124153808147.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ssRjpHhF-1643160757632)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124153847517.png)]

Oracle RMAN恢复

Oracle RMAN恢复是RMAN备份的逆过程,主要是通过restore命令还原备份信息,使用recover完成数据库的同步恢复工作。下面介绍RMAN是如何进行备份的恢复。

RESTORE还原

RMAN使用RESTORE命令可以还原备份的信息,就是把数据还原到之前备份时的还原点,RESTORE命令的具体语法如下:

(数据文件脱机状态才可以恢复)alter database datafile 5 offline;

RESTORE object
restore tablespace student;
语法解析:
1、object指的是数据库对象,可以是database (数据库)、datafile (数据文件)、tablespace (表空间)、archivelog (归档日志文件)、controlfile(控制文件)等对象。
2、restore 是还原,文件级的恢复,就是物理文件还原,所以只有当数据文件或其他文件丢失时,使用restore进行还原,还原的前提是数据库在mount状态下。
RECOVER恢复

RMAN使用RECOVER命令可以恢复数据库,该命令是负责把归档日志文件用于重建的数据文件,来完成数据库的同步恢复。recover恢复是数据级的恢复,逻辑上恢复,即是一步一步利用归档日志恢复到出事的那个时间点,保持数据的一致性。但是,recover恢复的前提得是数据库开启了归档日志模式。

recover恢复语法:
recover  object;
recover tablespace student;
语法解析:
1、这里的object指的是要恢复的数据库对象,和restore的语法一致。而且都需要在数据库关闭且mount状态进行数据库的恢复。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tfT6UOnK-1643160757633)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124161016705.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DO96m44h-1643160757633)(D:\桌面\学习整理\数据库学习整理.assets\image-20211124161107520.png)]

恢复完数据文件还是offline,需调整为online

总结:

在实际应用中,restore还原和recover恢复是结合一起使用的,假如出现数据文件丢失导致数据库宕机时,我们首先是利用restore命令把之前定时备份好的数据文件还原到备份的时间点,然后再利用recover命令通过归档日志把还原点到出事点之间的数据进行恢复。最终完成数据库的完全恢复。

归档日志的删除:https://blog.csdn.net/DBDeep/article/details/78510687?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.showsourcetag&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.showsourcetag

Oracle如何开启闪回

Oracle在9i版本的时候引入了闪回技术,在Oracle 10g已经全面提供了闪回功能,主要提供了快速简单恢复数据库误操作的数据的恢复方法,而不用从逻辑备份或物理备份中恢复过来。

主要的闪回技术(Flashback)支持以下几种恢复级别:

事务闪回:对表进行了insert, update, delete 操作,已经commit 了,发现弄错了,需要恢复到某个commit操作之前的数据,则需要撤销刚才的某个操作。
行级闪回:对表进行了insert, update, delete 操作,需要恢复到某个时间点。
表级闪回:错误的drop table操作,需要表和表中的数据。
数据库级闪回:错误地对整个数据库导入很多表数据,需要将整个数据库恢复到过去的时间点。
闪回查询:闪回查询主要是根据Undo表空间数据进行多版本查询,允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。

oracle闪回功能的前提是在开启了归档日志,而且设置了合理的闪回区拥有存储相关执行操作,最后数据库要开启闪回功能,步骤如下:

1、开启归档日志,这个步骤就不一一再细说了,自行查询相关操作,主要是在
mount状态:alter database archivelog;
2、设置闪回区:
--指定闪回恢复区的位置
alter system set db_recovery_file_dest='/data/app/oracle/flash_recovery_area' scope=both;
--指定闪回恢复区的可用空间大小
alter system set db_recovery_file_dest_size=4G scope=both;
--指定数据库可以回退的时间,单位为分钟,默认是一天时间,实际取决于闪回区大小
alter system set db_flashback_retention_target=4320 scope=both;
3、在mount状态下,开启Flashback,如下:
alter database flashback on;
例子:简单利用闪回查询恢复刚刚误删除的学生信息表(STUINFO)中的学生张三(学号:SC201801001)。模拟步骤如下:
1、删除学生张三 :
delete from student.stuinfo t where t.stuname='张三';
commit;
2、通过查询stuinfo执行删除之前的时间点的记录,如下:
select * from student.stuinfo as of timestamp sysdate-10/1440;

更多关于闪回的操作https://www.cnblogs.com/rangle/p/8039282.html

MySQL数据库

Redis

1.配置文件中几个重要的配置

允许外部服务器连接

1.bind 127.0.0.1改为 bind 0.0.0.0

127.0.0.1: 代表本地地址,访问redis服务只能通过本机的客户端连接,而无法通过远程连接
0.0.0.0: 接受所有来自于可用网络接口的连接,也可以直接注释掉

2.protected-mode yes 改为 protected-mode no

yes: 保护模式,只允许本地链接
no: 保护模式关闭

3.加入 daemonize no(这个是是否在后台启动不占用一个主程窗口)

daemonize yes: 代表开启守护进程模式。此时是单进程多线程的模式,redis将在后台运行,并将pid写入redis.conf–pidfile文件中,此时redis将一直运行,除非手动kill

daemonize no: 当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(xshell等)都会导致redis进程退出
其他更多见:https://blog.csdn.net/jiangshubian/article/details/77883369

一天时间,实际取决于闪回区大小
alter system set db_flashback_retention_target=4320 scope=both;
3、在mount状态下,开启Flashback,如下:
alter database flashback on;
例子:简单利用闪回查询恢复刚刚误删除的学生信息表(STUINFO)中的学生张三(学号:SC201801001)。模拟步骤如下:
1、删除学生张三 :
delete from student.stuinfo t where t.stuname=‘张三’;
commit;
2、通过查询stuinfo执行删除之前的时间点的记录,如下:
select * from student.stuinfo as of timestamp sysdate-10/1440;


更多关于闪回的操作https://www.cnblogs.com/rangle/p/8039282.html

## MySQL数据库



## Redis

### 1.配置文件中几个重要的配置

允许外部服务器连接

1.bind 127.0.0.1改为 bind 0.0.0.0

127.0.0.1: 代表本地地址,访问redis服务只能通过本机的客户端连接,而无法通过远程连接
0.0.0.0: 接受所有来自于可用网络接口的连接,也可以直接注释掉

2.protected-mode yes 改为 protected-mode no

yes: 保护模式,只允许本地链接
no: 保护模式关闭

3.加入 daemonize no(这个是是否在后台启动不占用一个主程窗口)

daemonize yes: 代表开启守护进程模式。此时是单进程多线程的模式,redis将在后台运行,并将pid写入redis.conf–pidfile文件中,此时redis将一直运行,除非手动kill

daemonize no: 当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(xshell等)都会导致redis进程退出
其他更多见:https://blog.csdn.net/jiangshubian/article/details/77883369

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值