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数据库默认创建的内部管理员账户,都拥有高级权限,但它们之间还是存在一些区别:
-
SYS用户:
-
SYS用户是Oracle数据库的超级用户,它具有最高权限。
-
SYS用户主要用于数据库内部的维护任务,例如数据库的启动和关闭。
-
SYS用户拥有所有的系统特权和角色,且无法修改或撤销。
-
默认情况下,SYS模式下的所有数据库对象在SYS模式下创建。
-
在执行一些特定的DBA任务时需要以SYSDBA或SYSOPER的权限登录,如备份、恢复和PATCH更新等。
-
-
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参数设置为 Y
或 y
,可以让 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文件,可用此命令重新加载)