dba_registry 和 v$option 与 Oracle 特新及组件

 

.  先看官网对这2个视图的说明

 

1.1 V$OPTION

       This view lists database options and features. Typically, although not always, options must be separately purchased and installed, whereas features come with the product and are enabled based on the product that is running (Standard Edition, Enterprise Edition, or Personal Oracle). If you want to see a list of all installed options for the database, use the DBA_REGISTRY view. See "DBA_REGISTRY".

Column

Datatype

Description

PARAMETER

VARCHAR2(64)

Name of the option (or feature)

VALUE

VARCHAR2(64)

TRUE if the option (or feature) is installed

 

1.2 DBA_REGISTRY

       DBA_REGISTRY displays information about the components loaded into the database.

Related View

       USER_REGISTRY displays information about the components loaded into the database that are owned by the current user.

Column

Datatype

NULL

Description

COMP_ID

VARCHAR2(30)

NOT NULL

Component identifier

COMP_NAME

VARCHAR2(255)

 

Component name

VERSION

VARCHAR2(30)

 

Component version loaded

STATUS

VARCHAR2(11)

 

Component status:

·         INVALID

·         VALID

·         LOADING

·         LOADED

·         UPGRADING

·         UPGRADED

·         DOWNGRADING

·         DOWNGRADED

·         REMOVING

·         REMOVED

MODIFIED

VARCHAR2(20)

 

Time when the component was last modified

NAMESPACE

VARCHAR2(30)

NOT NULL

Component namespace

CONTROL

VARCHAR2(30)

NOT NULL

User that created the component entry

SCHEMA

VARCHAR2(30)

NOT NULL

User that contains the objects for the component

PROCEDURE

VARCHAR2(61)

 

Validation procedure

STARTUP

VARCHAR2(8)

 

Indicates whether the component requires a startup after the upgrade (REQUIRED) or not

PARENT_ID

VARCHAR2(30)

 

Parent component identifier

 

 

.  说明

 

通过上面的2个说明,可以看出:

       1v$option 视图显示的DB 所有的选项或者特性 这些特性需要单独的购买和安装。

       2dba_registry 视图显示的是已经安装的组件。并且该视图的信息也比v$option 详细。

 

 

SQL> select * from v$option;

 

PARAMETER                                VALUE

---------------------------------------- ---------------------------------------

Partitioning                             TRUE

Objects                                  TRUE

Real Application Clusters                FALSE

Advanced replication                     TRUE

Bit-mapped indexes                       TRUE

Connection multiplexing                  TRUE

Connection pooling                       TRUE

Database queuing                         TRUE

Incremental backup and recovery          TRUE

Instead-of triggers                      TRUE

Parallel backup and recovery             TRUE

 

PARAMETER                                VALUE

---------------------------------------- ---------------------------------------

Parallel execution                       TRUE

Parallel load                            TRUE

Point-in-time tablespace recovery        TRUE

Fine-grained access control              TRUE

Proxy authentication/authorization       TRUE

Change Data Capture                      TRUE

Plan Stability                           TRUE

Online Index Build                       TRUE

Coalesce Index                           TRUE

Managed Standby                          TRUE

Materialized view rewrite                TRUE

 

PARAMETER                                VALUE

---------------------------------------- ---------------------------------------

Materialized view warehouse refresh      TRUE

Database resource manager                TRUE

Spatial                                  TRUE

Visual Information Retrieval             TRUE

Export transportable tablespaces         TRUE

Transparent Application Failover         TRUE

Fast-Start Fault Recovery                TRUE

Sample Scan                              TRUE

Duplexed backups                         TRUE

Java                                     TRUE

OLAP Window Functions                    TRUE

 

PARAMETER                                VALUE

---------------------------------------- ---------------------------------------

Block Media Recovery                     TRUE

Fine-grained Auditing                    TRUE

Application Role                         TRUE

Enterprise User Security                 TRUE

Oracle Data Guard                        TRUE

Oracle Label Security                    FALSE

OLAP                                     TRUE

Table compression                        TRUE

Join index                               TRUE

Trial Recovery                           TRUE

Data Mining                              TRUE

 

PARAMETER                                VALUE

---------------------------------------- ---------------------------------------

Online Redefinition                      TRUE

Streams Capture                          TRUE

File Mapping                             TRUE

Block Change Tracking                    TRUE

Flashback Table                          TRUE

Flashback Database                       TRUE

Data Mining Scoring Engine               FALSE

Transparent Data Encryption              TRUE

Backup Encryption                        TRUE

Unused Block Compression                 TRUE

 

54 rows selected.

 

 

 

SQL> select comp_id,comp_name,version,status from dba_registry;

 

COMP_ID    COMP_NAME           VERSION         STATUS

---------- ---------------------------------------- --------------- ------------

CATALOG    Oracle Database Catalog Views      10.2.0.1.0      VALID

CATPROC    Oracle Database Packages and Types  10.2.0.1.0      VALID

OWM        Oracle Workspace Manager         10.2.0.1.0      VALID

JAVAVM     JServer JAVA Virtual Machine       10.2.0.1.0      VALID

XML        Oracle XDK                      10.2.0.1.0      VALID

CATJAVA    Oracle Database Java Packages        10.2.0.1.0      VALID

EXF        Oracle Expression Filter            10.2.0.1.0      VALID

ODM        Oracle Data Mining               10.2.0.1.0      VALID

CONTEXT    Oracle Text                    10.2.0.1.0      VALID

XDB        Oracle XML Database              10.2.0.1.0      VALID

RUL        Oracle Rules Manager        10.2.0.1.0      VALID

ORDIM      Oracle interMedia            10.2.0.1.0      VALID

APS        OLAP Analytic Workspace      10.2.0.1.0      VALID

XOQ        Oracle OLAP API            10.2.0.1.0      VALID

AMD        OLAP Catalog              10.2.0.1.0      VALID

SDO        Spatial                     10.2.0.1.0      VALID

EM         Oracle Enterprise Manager     10.2.0.1.0      VALID

 

17 rows selected.

 

 

 

 

 

-------------------------------------------------------------------------------------------------------

QQ:492913789

Email:ahdba@qq.com

Blog: http://www.cndba.cn/dave


DBA1 群:62697716();   DBA2 群:62697977()   DBA3 群:62697850()  

DBA 超级群:63306533();  DBA4 群: 83829929  DBA5群: 142216823   

DBA6 群:158654907  聊天 群:40132017   聊天2群:69087192

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

pipeline { agent any environment { // 基础配置(无依赖) GIT_CREDENTIALS_ID = '8a4ae488-3594-46b1-b203-46b7b99f2430' GIT_REPO_URL = 'git@192.168.17.17:root/ruoyi-cloud.git' GIT_BRANCH = 'master' MAVEN_CMD = 'mvn clean package -Dmaven.test.skip=true' DOCKER_REGISTRY = 'harbor.test.com' DOCKER_CREDENTIALS_ID = 'docker-registry-credentials' IMAGE_NAME = 'ruoyi' DOCKER_PWD = 'Harbor12345' DOCKER_USER = 'admin' // 初始化默认值,避免空值报错 IMAGE_TAG = 'unknown' // 增:存储手动获取的 Git 提交哈希 GIT_COMMIT_MANUAL = '' // 明确 Dockerfile 路径文件名(使用相对路径) DOCKERFILE_DIR = "${WORKSPACE}/docker/ruoyi/modules/system" DOCKERFILE_NAME = 'dockerfile' // 小写文件名,实际一致 } stages { stage('拉取代码') { steps { echo "开始拉取 Git 分支:${GIT_BRANCH}" git( credentialsId: GIT_CREDENTIALS_ID, url: GIT_REPO_URL, branch: GIT_BRANCH, changelog: false, poll: false ) echo "代码拉取完成,工作目录:${pwd()}" // 手动获取 Git 提交哈希 script { echo "手动获取 Git 提交哈希..." GIT_COMMIT_MANUAL = sh( script: 'git rev-parse HEAD', returnStdout: true ).trim() if (GIT_COMMIT_MANUAL && GIT_COMMIT_MANUAL.length() == 40) { echo "✅ 手动获取 Git 提交哈希成功:${GIT_COMMIT_MANUAL}" IMAGE_TAG = "${BUILD_NUMBER}-${GIT_COMMIT_MANUAL.substring(0,8)}" echo "✅ 生成镜像标签:${IMAGE_TAG}" } else { error("❌ 手动获取 Git 提交哈希失败,获取到的值:${GIT_COMMIT_MANUAL}") } } } post { failure { echo "ERROR:拉代码阶段失败!排查步骤:" echo "1. 验证 SSH 免密:ssh -T git@192.168.17.17(Jenkins 节点执行)" echo "2. 测试仓库克隆:git clone ${GIT_REPO_URL}(节点手动测试)" } success { echo "✅ 拉代码阶段完全成功" echo "Git 提交短哈希:${GIT_COMMIT_MANUAL.substring(0,8)} | 镜像标签:${IMAGE_TAG}" } } } stage('编译打包') { when { expression { currentBuild.currentResult == 'SUCCESS' && IMAGE_TAG != 'unknown' } } steps { echo "开始 Maven 打包(命令:${MAVEN_CMD})" sh "${MAVEN_CMD} -e -U" // 验证 jar 包存在性(使用相对路径) sh """ JAR_PATH="${WORKSPACE}/docker/ruoyi/modules/system/jar/ruoyi-modules-system.jar" if [ -f "\${JAR_PATH}" ]; then echo "✅ jar 包存在:\${JAR_PATH}(大小:\$(du -sh \${JAR_PATH} | awk '{print \$1}'))" else echo "❌ 未找到 jar 包:\${JAR_PATH}" exit 1 fi """ } post { success { echo "✅ 编译打包成功,归档 jar 包" archiveArtifacts( artifacts: '**/jar/*.jar', fingerprint: true, onlyIfSuccessful: true ) } failure { echo "ERROR:打包失败!排查方向:" echo "1. JDK 版本:java -version(需 JDK 8/11)" echo "2. Maven 镜像:检查 ~/.m2/settings.xml 是否配置阿里云" } } } stage('构建Docker镜像') { when { expression { currentBuild.currentResult == 'SUCCESS' && IMAGE_TAG != 'unknown' } } steps { echo "开始构建镜像:${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" // 1. 先验证 Dockerfile 存在性 sh """ DOCKERFILE_FULL_PATH="${DOCKERFILE_DIR}/${DOCKERFILE_NAME}" if [ -f "\${DOCKERFILE_FULL_PATH}" ]; then echo "✅ 找到 Dockerfile:\${DOCKERFILE_FULL_PATH}" else echo "❌ 未找到 Dockerfile:\${DOCKERFILE_FULL_PATH}" exit 1 fi """ // 2. 构建镜像 sh """ # 进入 Dockerfile 所在目录 cd ${DOCKERFILE_DIR} # 用 -f 指定小写的 dockerfile 文件 docker build -t ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} -f ${DOCKERFILE_NAME} . docker tag ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest """ // 3. 验证镜像是否构建成功 sh """ if docker images | grep ${IMAGE_NAME} | grep ${IMAGE_TAG}; then echo "✅ 镜像构建成功" else echo "❌ 镜像构建失败" exit 1 fi """ } post { failure { echo "ERROR:镜像构建失败!排查方向:" echo "1. Docker 权限:sudo usermod -aG docker jenkins(授权后重启 Jenkins)" echo "2. Dockerfile 语法:cd ${DOCKERFILE_DIR} && docker build -t test -f ${DOCKERFILE_NAME} .(手动测试)" echo "3. 构建上下文:确保 Dockerfile 中 COPY 的文件在 ${DOCKERFILE_DIR} 目录下" } } } stage('推送Docker镜像到Harbor') { when { expression { currentBuild.currentResult == 'SUCCESS' && IMAGE_TAG != 'unknown' } } steps { echo "推送镜像到Harbor仓库:${DOCKER_REGISTRY}/${IMAGE_NAME}" // 登录Harbor仓库 withCredentials([usernamePassword( credentialsId: DOCKER_CREDENTIALS_ID, passwordVariable: 'DOCKER_PWD', usernameVariable: 'DOCKER_USER' )]) { sh """ # 检查仓库连通性 if ! curl -sSf "${DOCKER_REGISTRY}/v2/" > /dev/null; then echo "❌ 无法连接到Harbor仓库:${DOCKER_REGISTRY}" exit 1 fi # 登录操作 echo "登录Harbor仓库..." docker login -u ${DOCKER_USER} -p ${DOCKER_PWD} ${DOCKER_REGISTRY} || { echo "❌ 登录失败,请检查凭证" exit 1 } """ } // 推送镜像 sh """ echo "开始推送版本镜像: ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" docker push ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || { echo '❌ 版本镜像推送失败' exit 1 } echo "开始推送latest镜像: ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest" docker push ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest || { echo '❌ latest镜像推送失败' exit 1 } """ // 登出仓库 sh "docker logout ${DOCKER_REGISTRY}" } post { success { echo "✅ 镜像推送成功!" echo "版本镜像地址:${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" echo "Latest镜像地址:${DOCKER_REGISTRY}/${IMAGE_NAME}:latest" } failure { echo "ERROR:镜像推送失败!排查方向:" echo "1. 检查Harbor项目是否存在:${DOCKER_REGISTRY}" echo "2. 确认镜像名格式正确:应该包含项目名,如 project/image-name" echo "3. 检查用户是否有该项目的推送权限" echo "4. 非HTTPS配置:在Docker守护进程添加insecure-registries" } } } stage('清理本地资源') { when { expression { currentBuild.currentResult == 'SUCCESS' } } steps { echo "清理本地镜像" sh """ # 强制删除镜像,确保清理成功 docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || true docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest || true """ echo "✅ 清理完成" } } } post { always { echo "======================================" echo "构建总结:" echo "构建编号:${BUILD_NUMBER}" echo "构建结果:${currentBuild.currentResult}" echo "构建耗时:${currentBuild.durationString}" echo "镜像标签:${IMAGE_TAG}" echo "======================================" } aborted { echo "⚠️ 构建被中止,执行必要的清理工作" sh """ docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || true docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest || true """ } } } 优化
最新发布
10-01
以下是对给定Jenkins Pipeline脚本的优化: ```groovy pipeline { agent any environment { GIT_CREDENTIALS_ID = '8a4ae488-3594-46b1-b203-46b7b99f2430' GIT_REPO_URL = 'git@192.168.17.17:root/ruoyi-cloud.git' GIT_BRANCH = 'master' MAVEN_CMD = 'mvn clean package -Dmaven.test.skip=true' DOCKER_REGISTRY = 'harbor.test.com' DOCKER_CREDENTIALS_ID = 'docker-registry-credentials' IMAGE_NAME = 'ruoyi' DOCKER_PWD = 'Harbor12345' DOCKER_USER = 'admin' IMAGE_TAG = 'unknown' GIT_COMMIT_MANUAL = '' DOCKERFILE_DIR = "${WORKSPACE}/docker/ruoyi/modules/system" DOCKERFILE_NAME = 'dockerfile' JAR_PATH = "${WORKSPACE}/docker/ruoyi/modules/system/jar/ruoyi-modules-system.jar" } stages { stage('拉取代码') { steps { echo "开始拉取 Git 分支:${GIT_BRANCH}" git( credentialsId: GIT_CREDENTIALS_ID, url: GIT_REPO_URL, branch: GIT_BRANCH, changelog: false, poll: false ) script { GIT_COMMIT_MANUAL = sh( script: 'git rev-parse HEAD', returnStdout: true ).trim() if (GIT_COMMIT_MANUAL && GIT_COMMIT_MANUAL.length() == 40) { IMAGE_TAG = "${BUILD_NUMBER}-${GIT_COMMIT_MANUAL.substring(0,8)}" echo "✅ 手动获取 Git 提交哈希成功:${GIT_COMMIT_MANUAL},生成镜像标签:${IMAGE_TAG}" } else { error("❌ 手动获取 Git 提交哈希失败,获取到的值:${GIT_COMMIT_MANUAL}") } } } post { failure { echo "ERROR:拉代码阶段失败!排查步骤:" echo "1. 验证 SSH 免密:ssh -T git@192.168.17.17(Jenkins 节点执行)" echo "2. 测试仓库克隆:git clone ${GIT_REPO_URL}(节点手动测试)" } success { echo "✅ 拉代码阶段完全成功" echo "Git 提交短哈希:${GIT_COMMIT_MANUAL.substring(0,8)} | 镜像标签:${IMAGE_TAG}" } } } stage('编译打包') { when { expression { currentBuild.currentResult == 'SUCCESS' && IMAGE_TAG != 'unknown' } } steps { echo "开始 Maven 打包(命令:${MAVEN_CMD})" sh "${MAVEN_CMD} -e -U -DoutputDirectory=${WORKSPACE}/docker/ruoyi/modules/system/jar" sh """ if [ -f "${JAR_PATH}" ]; then echo "✅ jar 包存在:${JAR_PATH}(大小:\$(du -sh ${JAR_PATH} | awk '{print \$1}'))" else echo "❌ 未找到 jar 包:${JAR_PATH}" exit 1 fi """ } post { success { echo "✅ 编译打包成功,归档 jar 包" archiveArtifacts( artifacts: '**/jar/*.jar', fingerprint: true, onlyIfSuccessful: true ) } failure { echo "ERROR:打包失败!排查方向:" echo "1. JDK 版本:java -version(需 JDK 8/11)" echo "2. Maven 镜像:检查 ~/.m2/settings.xml 是否配置阿里云" } } } stage('构建Docker镜像') { when { expression { currentBuild.currentResult == 'SUCCESS' && IMAGE_TAG != 'unknown' } } steps { echo "开始构建镜像:${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" sh """ DOCKERFILE_FULL_PATH="${DOCKERFILE_DIR}/${DOCKERFILE_NAME}" if [ -f "\${DOCKERFILE_FULL_PATH}" ]; then echo "✅ 找到 Dockerfile:\${DOCKERFILE_FULL_PATH}" else echo "❌ 未找到 Dockerfile:\${DOCKERFILE_FULL_PATH}" exit 1 fi """ sh """ cd ${DOCKERFILE_DIR} docker build -t ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} -f ${DOCKERFILE_NAME} . docker tag ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest """ sh """ if docker images | grep ${IMAGE_NAME} | grep ${IMAGE_TAG}; then echo "✅ 镜像构建成功" else echo "❌ 镜像构建失败" exit 1 fi """ } post { failure { echo "ERROR:镜像构建失败!排查方向:" echo "1. Docker 权限:sudo usermod -aG docker jenkins(授权后重启 Jenkins)" echo "2. Dockerfile 语法:cd ${DOCKERFILE_DIR} && docker build -t test -f ${DOCKERFILE_NAME} .(手动测试)" echo "3. 构建上下文:确保 Dockerfile 中 COPY 的文件在 ${DOCKERFILE_DIR} 目录下" } } } stage('推送Docker镜像到Harbor') { when { expression { currentBuild.currentResult == 'SUCCESS' && IMAGE_TAG != 'unknown' } } steps { echo "推送镜像到Harbor仓库:${DOCKER_REGISTRY}/${IMAGE_NAME}" withCredentials([usernamePassword( credentialsId: DOCKER_CREDENTIALS_ID, passwordVariable: 'DOCKER_PWD', usernameVariable: 'DOCKER_USER' )]) { sh """ if ! curl -sSf "${DOCKER_REGISTRY}/v2/" > /dev/null; then echo "❌ 无法连接到Harbor仓库:${DOCKER_REGISTRY}" exit 1 fi echo "登录Harbor仓库..." docker login -u ${DOCKER_USER} -p ${DOCKER_PWD} ${DOCKER_REGISTRY} || { echo "❌ 登录失败,请检查凭证" exit 1 } """ } sh """ echo "开始推送版本镜像: ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" docker push ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || { echo '❌ 版本镜像推送失败' exit 1 } echo "开始推送latest镜像: ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest" docker push ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest || { echo '❌ latest镜像推送失败' exit 1 } """ sh "docker logout ${DOCKER_REGISTRY}" } post { success { echo "✅ 镜像推送成功!" echo "版本镜像地址:${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" echo "Latest镜像地址:${DOCKER_REGISTRY}/${IMAGE_NAME}:latest" } failure { echo "ERROR:镜像推送失败!排查方向:" echo "1. 检查Harbor项目是否存在:${DOCKER_REGISTRY}" echo "2. 确认镜像名格式正确:应该包含项目名,如 project/image-name" echo "3. 检查用户是否有该项目的推送权限" echo "4. 非HTTPS配置:在Docker守护进程添加insecure-registries" } } } stage('清理本地资源') { when { expression { currentBuild.currentResult == 'SUCCESS' } } steps { echo "清理本地镜像" sh """ docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || true docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest || true """ echo "✅ 清理完成" } } } post { always { echo "======================================" echo "构建总结:" echo "构建编号:${BUILD_NUMBER}" echo "构建结果:${currentBuild.currentResult}" echo "构建耗时:${currentBuild.durationString}" echo "镜像标签:${IMAGE_TAG}" echo "======================================" } aborted { echo "⚠️ 构建被中止,执行必要的清理工作" sh """ docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} || true docker rmi -f ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest || true """ } } } ``` ### 优化点说明 1. **变量提取**:将`JAR_PATH`提取为环境变量,方便后续使用修改。 2. **Maven打包输出路径**:在`mvn`命令中添加`-DoutputDirectory`参数,指定打包输出路径。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值