Oracle总结
1.概念,用户,表空间,表,用户拥有表空间,表空间可以有多个用户,表存在与表空间中
2.给用户指定表空间
--修改用户的表空间
alter user username default tablespace userspace;
--创建用户时给用户创建表空间
create user username identified by userpassword default tablespace userspace;
3.查看用户拥有的表空间
select default_tablespace from dba_users where username='用户名'
4.表空间拥有大小 可以用以下命令查看表还有多少空间
SELECT a.tablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
(total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
5.表空间可以扩容(对已有的表进行扩容)
sqlplus / as sysdba
--执行
alter tablespace 表名 add datafile '/data/oradbs/表名.dbf' size 4000m;
6.Oracle导入导出数据如果数据量大,要使用数据泵,不然导入导出数据很花时间,按照以下命令进行数据的数据泵导出(服务端操作)
数据泵文件导出
创建数据泵导出数据路径
进入数据库
sqlplus /nolog
以sysdba连接数据库
connect /as sysdba
创建数据泵文件的导出目录
data_dir 可以自己命令,只要和下面的命令中directory保持一直即可
create directory data_dir as 'E:\ora\data' ;
执行该命令时需要退出数据库
directory=【data_dir】要和上面创建目录时directory后面的名称一致
expdp 用户名/密码@服务名 schemas=用户名 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
expdp [为用户名]/[密码]@[服务名] schemas=[为用户名] dumpfile=[导出数据库文件(可自命名)] directory=[目录名] logfile=[日志文件文件名(可自命名)]
命令结束不需要加“;”
数据泵文件导入
数据导入准备工作: 在本地创建一个存放数据泵文件的路径
linux系统为例:/usr/oracle
同时将该文件的所属组和用户修改
chown oracle:oinstall /usr/oracle
如果进入容器后的默认用户没有修改文件的权限,切换到root用户修改
su root
管理员密码根据自己情况而定,我的容器的密码是helowin
进入Docker的Oracle容器
docker exec -it 容器名 /bin/bash
进入容器后连接oracle
sqlplus /nolog
connect /as sysdba
然后在oracle服务端中创建读取数据泵文件的路径,这些路径都要保持一致
data_dirs(这个是创建的列明),【data_dirs】 这个可以随意命名,比如【data_dirssss】,只要和接下来的sql语句中的相关字段保持一致即可,即括号前面标注的地方
create directory data_dir as '/usr/oracle' ;
data_dirs(跟上面名字保持一致),例子【data_dirssss】
//给用户读写目录的权限
Grant read,write on directory data_dir to 数据库用户名;
data_dirs同理上面,例子【data_dirssss】
创建数据泵文件所在文件,之后需要将数据泵文件放在该目录下
create directory data_dirs as '\usr\oracle' ;
数据泵文件导入
directory 后面的【data_dirs】跟上面命名的要一致,例子【data_dirssss】
impdp OASS1/OASS1@HELOWIN REMAP_SCHEMA = oass1:OASS1 table_exists_action = replace directory=data_dir dumpfile=EXPDP.DMP logfile=expdp.log
impdp [用户名]/[密码]@[服务名] REMAP_SCHEMA=[源用户名1]:[目标用户名2] table_exists_action=replace /存在的表动作(覆盖)/ directory=[目录名] dumpfile=[.dmp文件名] logfile=[.log文件名]
7.导入过程中可能存在字符集不同的异常,下面的命令可以将字符集统一 oracle_11g编码修改
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK ;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;
|