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 /nologconnect /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;
联系客服