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

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

关闭:
	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

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、使用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、设置用户的密码
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


 

进入到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将不会执行导入操作。

进入到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、新建文件并赋予权限

touch /data/databackup/bjcczssy20221025.dmp
touch /data/databackup/bjcczssy20221025.log
chmod 777 /data/databackup/bjcczssy20221025.*

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

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执行导入命令

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):

# 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、创建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、查看并发连接数

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

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

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、查看日志表空间目录:

select tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
from sys.dba_data_files
order by tablespace_name

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

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、扩容表空间大小(不需要手动创建文件)  

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

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

 6、设置表空间自动扩展

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

5、修改Oracle最大连接数

--- 查看当前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 @ 2021-09-06 16:24  Java小白的搬砖路  阅读(471)  评论(0编辑  收藏  举报