Oracle数据库的登录以及常用数据导入查询

 


1、Oracle数据库的关闭与启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
关闭:
    1、su - oracle
    2、lsnrctl stop
    3、sqlplus /nolog
    4、connect / as sysdba
    5、shutdown immediate
    6、quit
     
启动:
    1、su - oracle
    2、export ORACLE_SID=orcl[服务名]
    3、sqlplus /nolog
    4、connect / as sysdba
    5、startup
    6、quit
    7、lsnrctl start

2、Oracle数据库的登录:

1、登录到数据库服务器

2、登录到SQLPlus

1
2
su - oracle
sqlplus / as sysdba

3、【可选】连接要具体操作的用户

  conn 用户名/密码

或者:

  sqlplus 用户名/密码@orcl

  (sqlplus sys/密码 as sysdba)

*** 关于Oracle中sys和system用户的区别于联系***

SYS和SYSTEM都是Oracle数据库默认创建的内部管理员账户,都拥有高级权限,但它们之间还是存在一些区别:

  1. SYS用户:

    • SYS用户是Oracle数据库的超级用户,它具有最高权限。

    • SYS用户主要用于数据库内部的维护任务,例如数据库的启动和关闭。

    • SYS用户拥有所有的系统特权和角色,且无法修改或撤销。

    • 默认情况下,SYS模式下的所有数据库对象在SYS模式下创建。

    • 在执行一些特定的DBA任务时需要以SYSDBA或SYSOPER的权限登录,如备份、恢复和PATCH更新等。

  2. SYSTEM用户:

    • SYSTEM用户被用于创建数据字典表和视图,并向Oracle数据库用户授予权限。

    • SYSTEM用户通常用于一般的管理员工作,例如创建和管理用户账户、操纵数据库事例和数据库对象等。

    • SYSTEM用户默认拥有DBA角色。

简单来说,Oracle数据库的核心和内部功能是由SYS用户管理的,而其他日常的数据库管理任务则通常由SYSTEM用户执行。由于SYS和SYSTEM用户的权限都非常高,因此应当谨慎使用,并且尽量只在必要的情况下使用这两个账户。对于日常操作和应用程序的运行,应当尽可能创建和使用权限较低的数据库普通用户账户,以方便管理也能够降低风险。

3、用户的创建以及数据库文件的导入导出

用户的创建

1
2
3
4
5
6
7
8
9
10
11
1、使用oracle用户:
    su - oracle
2、登录:
    sqlplus / as sysdba
3、创建用户及设置密码:
    create user 用户名 identified by "密码";
4、给数据库用户授权:
    grant dba to 用户名;
    grant create session,resource to 用户名;
删除用户
    drop user 用户名 cascade;

修改用户密码并设置数据库默认密码为永久有效

1
2
3
4
5
6
7
8
9
10
11
12
-- 1、设置用户的密码
ALTER USER 用户名 IDENTIFIED BY 密码;
-- 2、设置密码的过期时间为永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;
-- 3、查看数据库默认的密码管理方式有效期
SELECT
    *
FROM
    dba_profiles
WHERE
    profile ='DEFAULT'
    AND resource_name ='PASSWORD_LIFE_TIME';

数据库文件的导出(备份):

注意:

  如果公司要求使用的用户名或者密码是包含特殊符号,比如@,这时候就需要进行一些转义,比如下面密码包含@,则要使用双引号括起来:

  nohup exp userid='username/"KNfc2@#"'

参考:https://www.cnblogs.com/lhrbest/p/6560906.html


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
进入到oracle用户执行:
    su - oracle
后台导出:
    nohup exp userid=数据库用户名/数据库密码@主机IP:1521/服务名 file=/备份文件名.dmp > /日志文件.log 2>&1 &
    nohup exp userid=username/userpasswd@192.168.145.xx:1521/orcl file=/xxx.dmp > /xxx.log 2>&1 &
导出指定的表:
    nohup exp userid=username/userpasswd@192.168.145.xx:1521/orcl file=/xxx.dmp TABLES=\(表名[多个表用逗号隔开]\)  > /xxx.log 2>&1 &
增量导出:   
(1)“完全”增量导出(Complete)   
    即备份整个数据库,包括所有用户的数据:   
        $exp   system/manager   inctype=complete   file=990702.dmp   
(2)“增量型”增量导出   
    备份上一次备份后改变的数据。比如:   
        $exp   system/manager   inctype=incremental   file=990702.dmp   
(3)“累计型”增量导出(Cumulative)   
    累计型导出方式只是导出自上次“完全”   导出之后数据库中变化了的信息。比如:   
        $exp   system/manager   inctype=cumulative   file=990702.dmp

数据库文件的导入:

参数说明:

  full=y,是导入文件中全部内容,有可能有多个用户的内容。

说明:一般情况下,不需要导入某张表,是因为这张表数据量庞大,就需要使用下面参数:

  ignore=y,在导入数据时忽略错误,并继续导入其他对象,如果已经存在该表的话直接就忽略不导入,

  statistics=none,(表不存在情况下:导入)是为了不导入统计信息,如果表很大,导入统计信息会花很长时间。

  replace=y,(表存在情况下:更新)将 replace参数设置为 Yy,可以让 imp命令在表已经存在的情况下执行更新操作。如果目标表不存在,Oracle将不会执行导入操作。

1
2
3
4
5
6
7
进入到oracle用户执行:
    su - oracle
后台导入:
    nohup imp 数据库用户名/密码@本机主机IP:端口/服务名 file=/xxx/xxx.dmp  full=y ignore=y STATISTICS=NONE > /日志文件.log 2>&1 &  
    nohup imp username/userpasswd@192.168.179.xxx:1521/orcl file=/xxx.dmp full=y ignore=y STATISTICS=NONE > /日志文件.log 2>&1 &     
导入指定的表(Oracle模式规定,如果导入指定表的话,就不能指定/使用 full=y):
    nohup imp username/userpasswd@192.168.179.xxx:1521/orcl file=/xxx.dmp TABLES=\(表名[多个表用逗号隔开]\) ignore=y STATISTICS=NONE > /日志文件.log 2>&1 &

数据库文件的导入(Linux-->Windows):

今天想将正式库(Linux)的一个表的数据导入到我本机的Windows下,刚开始是使用Navicat的数据传输工具使用,无奈原表有将近40w的数据,这样传输真的太慢了,

还有可能是我的VPN会断掉,然后导入就失败了。然后下面演示的是,我从Linux将数据导入到我本地Oracle数据的过程:

1、新建文件并赋予权限

1
2
3
touch /data/databackup/bjcczssy20221025.dmp
touch /data/databackup/bjcczssy20221025.log
chmod 777 /data/databackup/bjcczssy20221025.*

2、从Linux数据库将这个表导出到服务器(多个表之间用逗号分割)

1
nohup exp userid=bjcczssy/xxx@192.168.251.xx:1521/bjccora file=/data/databackup/bjcczssy20221025.dmp  TABLES=\(T_MK_CMS_ARTICLE\)  > /data/databackup/bjcczssy20221025.log 2>&1 &

3、将dmp文件从服务器下载到本地Windows

4、本地Windows执行导入命令

1
nohup imp  bjccsy/xxx@127.0.0.1:1521/orcl file=E:\bjcczssy20221025.dmp  FULL=Y ignore=y STATISTICS=NONE > E:\bjcczssy20220408.log 2>&1 &

数据库文件的导入(Windows-->Linux):

1
2
3
4
5
# Windows下备份Oracle数据库
exp userid=bjccsy/密码@127.0.0.1:1521/orcl file=I:\\2023-08-03.dmp > I:\\2023-08-03.log
 
# 将备份数据导入到Linux-Oracle下
nohup imp bjccsy/密码@127.0.0.1:1521/orcl file=/2023-08-03.dmp fromuser=bjccsy touser=bjccsy ignore=y > /2023-08-03.log 2>&1 &

使用expdp排除导出指定表

1
2
3
4
5
6
7
8
9
10
1、创建Oracle备份文件存放目录
    mkdir /oracle安装目录/expdp
2、登录数据库,创建逻辑目录
    sqlplus / as sysdba
    create directory odir as '/u01/app/oracle/expdp'
3、为用户赋访问权限
    grant all on directory odir to public;
4、执行备份
    expdp \'/ as sysdba\' directory=[逻辑目录名称] schemas=[用户名] dumpfile=[备份文件名] logfile=[日志文件名] EXCLUDE=TABLE:\"IN \(\'表1\',\'表2\'\)\"
expdp \'/ as sysdba\' directory=odir  schemas=bjcczg dumpfile=bjcczg20220921.dmp logfile=bjcczg20220921.log EXCLUDE=TABLE:\"IN \(\'T_LOG_SESSION\',\'T_LOG_VIDEOVISIT\'\)\"

4、数据查询以及表空间扩容

1、查看并发连接数

1
select machine,count(*) from gv$session group by machine;

2、查看日志表空间的大小以及使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT a.tablespace_name "表空间名",
a.bytes / 1024 / 1024 "表空间大小(M)",
(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)",
b.bytes / 1024 / 1024 "空闲空间(M)",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比"
FROM (SELECT tablespace_name, sum(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC

3、查看日志表空间目录:

1
2
3
4
5
6
select tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from sys.dba_data_files
order by tablespace_name

 4、查看日志表空间是否为自动扩展

1
2
3
4
5
SELECT file_id, file_name, tablespace_name, autoextensible, increment_by
FROM dba_data_files
WHERE tablespace_name = 'USERS'
or tablespace_name = 'SYSAUX' or tablespace_name = 'UNDOTBS1';
ORDER BY file_id desc;

5、扩容表空间大小(不需要手动创建文件)  

1
alter tablespace 用户名 add datafile '表空间全路径' size 30720m;

例: alter tablespace USERS add datafile '/u01/app/app/oracle/oradata/orcl/users10.dbf' size 30720m; 

 6、设置表空间自动扩展

1
alter database datafile '表空间全路径' autoextend on;

5、修改Oracle最大连接数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--- 查看当前Oracle连接数
select count(*) from v$process;
  
--- 连接到数据库的每台机器的会话数
select machine,count(*) from gv$session group by machine;
  
--- 查询参数里限制的最大进程数
select value from v$parameter where name = 'processes';
 
--- 设置最大连接数
alter system set processes = 3000 scope = spfile;
alter system set sessions = 3000 scope = spfile;
commit ;
 
 
重启Oracle数据库的操作步骤
    1.查看监听器状态:lsnrctl status
    2.停止监听器:lsnrctl stop
    3.连接数据库:sqlplus sys/密码 as sysdba
    4.停止数据库:shutdown immediate
    5.启动数据库:startup
    6.退出数据库:exit
    7.启动监听:lsnrctl start
    重新加载监听:lsnrctl reload(如果修改了listener.ora文件,可用此命令重新加载)

 

posted @   Java小白的搬砖路  阅读(525)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示